我正在 Live 中尝试 SetExpressCheckout 交易,但总是失败,并显示“我们目前无法完成您的请求”。在沙箱中它每次都完美运行,所以我相信我的 API 调用是正确的。
以下是完整的请求:
VERSION=97.0
&METHOD=SetExpressCheckout
&RETURNURL=http://www.example.com/
&CANCELURL=http://www.example.com/
&PAYMENTREQUEST_0_PAYMENTACTION=Sale
&PAYMENTREQUEST_0_AMT=1.00
&PAYMENTREQUEST_0_CURRENCYCODE=USD
&PAYMENTREQUEST_0_ITEMAMT=1.00
&L_PAYMENTREQUEST_0_NAME0=Test+Payment
&L_PAYMENTREQUEST_0_NUMBER0=TestPayment
&L_PAYMENTREQUEST_0_AMT0=1.00
&L_PAYMENTREQUEST_0_QTY0=1
&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital
&SOLUTIONTYPE=Sole
&REQCONFIRMSHIPPING=0
&NOSHIPPING=1
&USER=*************************
&PWD=*************************
&SIGNATURE=********************
我向 PayPal 商家支持开出了一张票,但他们不知道为什么失败。我给PayPal客服打了两次电话,他们肯定没有任何线索。
我做错了什么?
我想通了。这是我的错误。尽管我被指向 SetExpressCheckout 调用的实时环境,但后续重定向仍然进入沙箱。
我的错...但是...为什么 paypal 开发人员不能在其中放置一小行代码,以便当您进入错误的环境时(系统知道我刚刚调用了 Live,然后重定向到沙箱,或者至少 Live 环境没有与我所调用的内容匹配的令牌)会抛出一条简洁的消息,例如“在沙箱环境中找不到令牌”或“对 Live 进行了 API 调用,但已重定向”到沙箱”。这样的消息可以让我在几秒钟而不是几个小时内解决我自己的问题。