我正在尝试在Sandbox中进行AdaptivePayments付款。
我一直得到这样的响应(JSON解码为Python dict):
{u'error': [{u'category': u'Application',
u'domain': u'PLATFORM',
u'errorId': u'520002',
u'message': u'Internal Error',
u'severity': u'Error',
u'subdomain': u'Application'}],
u'responseEnvelope': {u'ack': u'Failure',
u'build': u'32250686',
u'correlationId': u'864242c1ece9f',
u'timestamp': u'2017-06-02T04:29:08.091-07:00'}}
我已经检查并重新检查了我的请求正文参数和请求标题,针对文档以及我们已经从我们的服务器发出的此类型的其他成功请求。
Sandbox可能会出现问题,但其他请求仍在继续,错误已持续24小时,所以我认为这是我的请求有问题。
我正在使用X-PAYPAL-REQUEST-DATA-FORMAT: NV
,请求正文如下:
actionType=PAY¤cyCode=GBP&cancelUrl=<mysite/cancel>&returnUrl=<mysite/return>&requestEnvelope.errorLanguage=en_US&preapprovalKey=<preapp key>&receiverList.receiver(0).email=<an email address>&receiverList.receiver(0).amount=0.62
(用真实的网址和预先批准的密钥代替)
答案 0 :(得分:0)
好吧,我终于找到了问题。
我发送的特定预批准密钥似乎存在问题。从成功的请求更改为预先批准密钥足以使其正常工作。
我不得不说,PayPal API在这种情况下返回500状态(表示未处理的异常)非常令人失望,而不是正确的错误。
进一步的实验表明,如果我使用不同的货币(美元而非英镑)和不良的预先批准,我可能会收到一个信息错误:
{u'error': [{u'category': u'Application',
u'domain': u'PLATFORM',
u'errorId': u'539012',
u'message': u"The preapproval key hasn't been authorized yet",
u'severity': u'Error',
u'subdomain': u'Application'}],
u'responseEnvelope': {u'ack': u'Failure',
u'build': u'32250686',
u'correlationId': u'4b6ec5f7a64b7',
u'timestamp': u'2017-06-02T05:16:08.800-07:00'}}
但我没有看到任何理由为什么不同的货币应该阻止显示此错误,这似乎是PayPal中的一个错误。