为什么我的 paypal api 调用失败,错误版本不受支持?

why my paypal api call fail with error Version is not supported?

我的贝宝 api 运行 还可以,但最近出现错误。我记录了详细信息,它显示版本不受支持。

但是,我确实看到了“查看您的信息”页面和“立即付款”按钮,只有在我单击“立即付款”按钮后才会出现此错误。

然后我尝试了 paypal 文档站点的 curl 示例:

curl -s --insecure https://api-3t.sandbox.paypal.com/nvp -d "USER=platfo_1255077030_biz_api1.gmail.com&PWD=1255077037&SIGNATURE=Abg0gYcQyxQvnf2HDJkKtA-p6pqhA1k-KTYE0Gcy1diujFio4io5Vqjf&METHOD=SetExpressCheckout&VERSION=121.0&PAYMENTREQUEST_0_PAYMENTACTION=SALE&PAYMENTREQUEST_0_AMT=19&PAYMENTREQUEST_0_CURRENCYCODE=USD&cancelUrl=http://www.example.com/cancel.html&returnUrl=http://www.example.com/success.html"

确实return成功了。

我做了一些进一步的分析,我发现当我调用api-3t.sandbox.paypal.com/nvp时,return成功并返回一个令牌 ID.

然后当我打电话给 https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=xxxxI 时,确实看到 "pay now" 按钮并允许我输入电子邮件和密码。但是当我最终点击 "pay now" 按钮时,我收到了错误消息 "version is not supported"

所以我真的很困惑为什么会出现错误?

有人可以帮忙吗?

非常感谢

经过与paypal客服的沟通,我现在解决了这个问题。

显然现在每次调用 paypal 都需要一个 versionid(不确定它什么时候开始表现得像这样,因为它对我们来说工作正常)。

在我们这边,有3个调用:

  1. 调用 SetExpressCheckout
  2. 调用 GetExpressCheckoutDetails(检索一些信息)
  3. 调用 DoExpressCheckoutPayment。

之前 VersionId 仅在 SetExpressCheckout 调用中需要。

现在我们必须将版本 ID 放入 GetExpressCheckoutDetails 和 DoExpressCheckoutPayment。

这解决了所有问题。