[英]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.