我想我只是在这里遗漏了一些明显的东西,但我似乎无法完成链式付款(使用沙箱中的PHP SDK)。我能够获得成功的响应,当我将用户重定向到 PayPal 时,交易详细信息显示良好,但是当用户尝试完成付款时,他们会收到可怕的错误:
您的付款无法完成。请返回参与网站并重试。
令人沮丧的是,我已经转储了正在发送的请求数据,并将其与文档中给出的示例中的数据进行了比较,并调整了我的请求,直到它们实际上相同,并且仍然没有骰子。我也没有在任何帐户上看到任何表明付款已尝试、未决或失败的信息。
这是发送的内容:
requestEnvelope.errorLanguage=en_US
&clientDetails.ipAddress=127.0.0.1
&clientDetails.applicationId=APP-80W284485P519543T
&actionType=PAY
&cancelUrl=http%3A%2F%2Fdomain.com%2Fpaypal%2Fcancel
¤cyCode=USD
&feesPayer=EACHRECEIVER
&memo=Test+Payment
&receiverList.receiver(0).amount=3.25
&receiverList.receiver(0).email=merchant%40domain.com
&receiverList.receiver(0).primary=1
&receiverList.receiver(1).amount=1.5
&receiverList.receiver(1).email=seller%40domain.com
&senderEmail=buyer%40domain.com
&returnUrl=http%3A%2F%2Fdomain.com%2Fpaypal%2Freturn
对我来说,响应看起来不错:
PayPal\Types\AP\PayResponse Object
(
[responseEnvelope] => PayPal\Types\Common\ResponseEnvelope Object
(
[timestamp] => 2013-07-28T23:25:52.676-07:00
[ack] => Success
[correlationId] => bf1ba2c8a50d4
[build] => 6941298
)
[payKey] => AP-XXXXXXXXXXXXXXXXC
[paymentExecStatus] => CREATED
[payErrorList] =>
[paymentInfoList] =>
[sender] =>
[defaultFundingPlan] =>
[warningDataList] =>
[error] =>
)
我还尝试将操作类型设置为 PAY_PRIMARY,因为我指定了一个主要收件人,无论如何这就是我所追求的理想状态。
更新:看到我仍然没有收到关于我用 PayPal 开的票的回复,也没有人评论这个问题,我做了一些进一步的测试。如果我使用 API 资源管理器生成相同的请求,则事务正常完成。但是完全相同的请求通过 API 失败。我已经验证(通过复制和粘贴生成的标头和请求正文)API Explorer 生成的请求和 SDK 代码之间的唯一区别如下:
- 资源管理器创建的标题在名称和值之间有一个空格
- API Explorer 不包含应用程序 ID
- 我的 API 调用在标头和请求正文中都包含应用程序ID
如果我删除应用程序 ID 引用,SDK API 调用仍然不起作用,这是为了解决这个问题而添加的。
我不明白为什么 SDK 生成的付款(由 PayPal 提供)无法完成,但是当资源管理器调用它时,确切的调用工作正常。任何帮助或建议将不胜感激。