c# - PayPal 沙盒执行调用返回错误 400 错误请求

标签 c# paypal paypal-sandbox

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

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

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

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

标题:

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

主体有效负载为:

{"payer_id" : "3LSD3Q8J7T3ZL"}

该帖子随后发送至:

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

此时,PayPal 服务器响应:远程服务器返回错误:(400) 错误请求。

据我所知,这符合此处概述的 API 要求:https://developer.paypal.com/docs/api/payments/v1/#payment_execute

顺便说一句,我在自己的服务器上设置了一个端点,以检查提交到 Paypal 执行端点的 header 和 JSON 负载是否正确。

如有任何建议,我们将不胜感激。

最佳答案

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

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

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

Paypal 注意:API 中提供更多信息可以避免很多麻烦。

关于c# - PayPal 沙盒执行调用返回错误 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036396/

相关文章:

php - 结帐时进行 Paypal 货币兑换

android - PAYMENT_CREATION_ERROR_NEED_VALID_FUNDING_INSTRUMENT

Paypal 电子支票需要一些解释

c# - MVC 文本框验证问题

c# - 在 C# 中从 PDF 中提取文本

paypal - 将电子邮件添加到 PayPal 的 DoDirectPayment 请求

paypal - 通过 Paypal 向我的客户收取随机金额

c# - 在 Windows 应用商店应用程序中播放 .flv 视频

C# 来自循环的匿名对象的匿名数组

paypal - 如何从我的网站取消 Paypal 定期付款?