草庐IT

paypal - 去 Paypal REST API请求

coder 2024-07-11 原文

所以我目前正在使用 Go 并且我正在尝试为 Paypal 创建付款我一直在尝试这段代码

    payer := &Payer{"paypal"}
    amount := &Amount{"EUR", "12"}
    trans := &Transactions{amount, "A super test"}
    uris := &Redirect_urls{"http://localhost", "http://localhost"}
    p := &Payment{"sale", payer, trans, uris}
    response, err := json.Marshal(p)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller")
        log.Fatal(err)
    }
    log.Println(string(response))

    client := &http.Client{}
    buf := bytes.NewBuffer(response)
    req, err := http.NewRequest("POST", "https://api.sandbox.paypal.com/v1/payments/payment", buf)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller - 2")
        log.Fatal(err)
    }
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Bearer " + token.Access_token)
    resp, err := client.Do(req)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller - 3")
        log.Fatal(err)
    }
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println("Error at PaypalPayment - buy controller - 4")
        log.Fatal(err)
    }
    log.Println(string(body))

我已经获得了访问 token ,问题是我在响应正文(最后一行)中收到此错误

MALFORMED_REQUEST

我使用的请求是这个(从 println 开始)

{
   "Intent":"sale",
   "Payer":{
      "Payment_method":"paypal"
   },
   "Transactions":{
      "Amount":{
         "Currency":"EUR",
         "Total":"12"
      },
      "Description":"Super test"
   },
   "Redirect_urls":{
      "Return_url":"http://localhost",
      "Cancel_url":"http://localhost"
   }
}

在我看来这是一个很好的请求...不知道我错过了什么

最佳答案

正如@jcbwlkr 所指出的,您的大小写与文档中的不符。如果您的类型上没有 json 标签,则必须添加它们。您必须在 Go 中将属性名称保持大写,因为它将字段标记为已导出。如果您对此不熟悉,请搜索“unexported vs exported fields golang”

例如,您的Payment 结构定义需要如下所示;

type Payment struct {
     Amount *Amount `json:"amount"`
     Transactions *Transactions `json:"transactions"`
     RdUrls *Redirect_urls `json:"redirect_urls"`
}

另外,仅供引用,您可以在声明付款的地方使用嵌套声明,这样您就不必分配给 AmountTransactionsRedirect_urls 以做声明。

就像;

p := &Payment{"sale", payer, &Transactions{amount, "A super test"}, uris}

关于paypal - 去 Paypal REST API请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225037/

有关paypal - 去 Paypal REST API请求的更多相关文章

  1. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  2. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  3. ruby - HTTP 请求中的用户代理,Ruby - 2

    我是Ruby的新手。我试过查看在线文档,但没有找到任何有效的方法。我想在以下HTTP请求botget_response()和get()中包含一个用户代理。有人可以指出我正确的方向吗?#PreliminarycheckthatProggitisupcheck=Net::HTTP.get_response(URI.parse(proggit_url))ifcheck.code!="200"puts"ErrorcontactingProggit"returnend#Attempttogetthejsonresponse=Net::HTTP.get(URI.parse(proggit_url)

  4. ruby-on-rails - 获取并发布相同匹配项的请求 - 2

    在我的路线文件中我有:match'graphs/(:id(/:action))'=>'graphs#(:action)'如果是GET请求(工作)或POST请求(不工作),我想匹配它我知道我可以使用以下方法在资源中声明POST请求:post'/'=>:show,:on=>:member但是我怎样才能为比赛做到这一点呢?谢谢。 最佳答案 如果你同时想要POST和GETmatch'graphs/(:id(/:action))'=>'graphs#(:action)',:via=>[:get,:post]编辑默认值可以设置如下match'g

  5. ruby-on-rails - 验证电子邮件地址是 Paypal 用户 - 2

    我想验证一个电子邮件地址是否是PayPal用户。是否有API调用来执行此操作?是否有执行此操作的ruby​​库?谢谢 最佳答案 GetVerifiedStatus来自PayPal'sAdaptiveAccounts平台会为您做这件事。PayPal没有任何codesamples或SDKs用于Ruby中的自适应帐户,但我确实找到了编写codeforGetVerifiedStatusinRuby的人.您需要更改该代码以检查他们拥有的帐户类型的唯一更改是更改if@xml['accountStatus']!=nilaccount_status

  6. ruby-on-rails - 如何在 ActionController::TestCase 请求中设置内容类型 - 2

    我试图像这样在我的测试用例中执行获取:request.env['CONTENT_TYPE']='application/json'get:index,:application_name=>"Heka"虽然,它失败了:ActionView::MissingTemplate:Missingtemplatealarm_events/indexwith{:handlers=>[:builder,:haml,:erb,:rjs,:rhtml,:rxml],:locale=>[:en,:en],:formats=>[:html]尽管在我的Controller中我有:respond_to:html,

  7. ruby - 如何测试 (rspec) 花费太长时间的 http 请求? - 2

    如果使用rspec请求花费的时间太长,我该如何测试行为?我正在考虑使用线程来模拟这个:describe"Test"doit"shouldtimeoutiftherequesttakestoolong"dolambda{thread1=Thread.new{#net::httprequesttogoogle.com}thread2=Thread.new{sleep(xxseconds)}thread1.jointhread2.join}.shouldraise_errorendend我想确保在第一次发出请求后,另一个线程“启动”,在这种情况下只是休眠xx秒。然后我应该期望请求超时,因为执

  8. ruby - Sinatra 路由中定义的全局变量是否在请求之间共享? - 2

    假设我有:get'/'do$random=Random.rand()response.body=$randomend如果我每秒有数千个请求到达/,$random是否会被共享并“泄漏”到上下文之外,或者它会像getblock的“本地”变量一样?我想如果它是在get'/'do的上下文之外定义的,它确实会被共享,但我想知道在ruby​​中是否有我不知道的$机制。 最佳答案 ThispartoftheSinatraREADMEaboutscopeisalwayshelpfultoread但是,如果您只需要为请求保留变量,那么我认为我建议使用

  9. ruby - 无法安装 ruby​​ 1.9.3 获取请求的 URL 不存在 - 2

    运行以下命令时:rvminstall1.9.3我得到以下输出:Error:therequestedURLdoesnotexist:ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-.tar.bz2我已将rvm更新到最新版本并输入rvmreload有什么想法吗? 最佳答案 URL应该是这样的:ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2尝试更新您的rvmrvmgethead然后安装1.9.3rvminstall1.9.3

  10. ruby-on-rails - 如何通过 HTTParty 通过 PUT 请求发送空数组? - 2

    我有一个具有“名称”属性和“标签”属性的照片类。我的目标是在Rails中实现一个更新功能,用输入的内容替换照片的标签。例如,如果我尝试PUT一个将“标签”设置为[]的JSON对象,我希望从照片中清除任何标签。但是,当我通过HTTParty提交一个空数组作为主体参数之一时,我相信HTTParty正在将[]翻译成nil。因此,我的Rails后端的photos#update端点没有接收到任何参数“tags”。我正在寻找一种方法让HTTParty不将[]转换为nil,因为我失去了从照片中删除标签的能力。 最佳答案 这是Rails4中的一个错

随机推荐