繁体   English   中英

贝宝沙盒执行呼叫,返回错误400错误请求

[英]PayPal Sandbox Execute Call returning Error 400 Bad Request

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

用户授权付款后,客户端将请求发送到我的服务器的执行端点,其有效载荷为:

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

然后,服务器将查询的有效负载重塑到贝宝的POST Execute端点,如下所示:

标头:

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

身体有效载荷为:

{"payer_id" : "3LSD3Q8J7T3ZL"}

该帖子然后发送至:

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

此时,贝宝服务器将做出响应:远程服务器返回错误:(400)错误的请求。

从我所看到的形式来看,这符合此处概述的API要求: https : //developer.paypal.com/docs/api/payments/v1/#payment_execute

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

任何建议将不胜感激。

已解决:尽管在调用Paypal的Execute端点时返回了错误,但问题实际上出在Create有效负载上。 提交给“创建”端点的soft_descriptor属性必须是唯一的 ,就像invoice_number属性一样。 这两个值都可以在Transaction对象中找到,如下所示:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM