【问题标题】:PayPal Sandbox Execute Call returning Error 400 Bad Request贝宝沙盒执行调用返回错误 400 错误请求
【发布时间】:2019-04-01 20:20:27
【问题描述】:

在实现服务器 Paypal 集成时,POST Create 调用对https://api.sandbox.paypal.com/v1/payments/payment 正常工作,响应对象与 API 中找到的匹配。服务端成功返回结果给客户端,paypal.request.post的.then(res)函数的res.id为:PAY-76T970067E989851JLPLCMKA

用户授权付款后,客户端向我的服务器的执行端点发送一个请求,负载为:

{
    "paymentID" : "PAY-76T970067E989851JLPLCMKA",
    "payerID" : "3LSD3Q8J7T3ZL"
}

然后,服务器将查询的负载重新建模到 paypal 的 POST Execute 端点,如下所示:

标题:

Content-Type = "application/json"
Authorization = "Bearer " + accessToken // checked not expired

和一个body payload:

{"payer_id" : "3LSD3Q8J7T3ZL"}

然后发布到:

https://api.sandbox.paypal.com/v1/payments/payment/PAY-76T970067E989851JLPLCMKA/execute

此时,paypal 服务器响应:远程服务器返回错误:(400) Bad Request。

按照我所见,这符合此处列出的 API 要求:https://developer.paypal.com/docs/api/payments/v1/#payment_execute

附带说明,我在自己的服务器上设置了一个端点,以检查提交给 Paypal 执行端点的标头和 JSON 有效负载是否正确。

任何建议将不胜感激。

【问题讨论】:

    标签: c# paypal paypal-sandbox


    【解决方案1】:

    已解决:虽然在调用 Paypal 的 Execute 端点时会返回错误,但问题实际上存在于 Create payload。 提交到 Create 端点的 soft_descriptor 属性必须是唯一的,就像 invoice_number 属性一样。这两个值都可以在 Transaction 对象中找到,如下所示:

    https://developer.paypal.com/docs/api/payments/v1/#definition-transaction.

    确实,应该在创建付款时而不是在执行付款时捕获错误,但是,希望这对其他人有所帮助。

    Paypal 提示:API 中的更多信息会省去很多麻烦。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2015-07-17
      • 2016-04-17
      • 2013-08-30
      • 2016-05-12
      • 1970-01-01
      • 2015-10-29
      • 2017-02-15
      • 2011-08-25
      相关资源
      最近更新 更多