我想我在这里只是遗漏了一些明显的东西,但我似乎无法完成链接付款(使用沙箱中的PHP SDK)。我能够获得成功的响应,当我将用户重定向到PayPal时,交易详细信息显示正常,但当用户尝试完成付款时,他们会收到可怕的错误:
您的付款无法完成。请返回参与计划的网站,然后重试。
令人沮丧的是,我已经转储了正在发送的请求数据,并将其与the example given in the documentation中的数据进行了比较并调整了我的请求,直到它们实际上完全相同,并且仍然没有骰子。我也没有在任何账户上看到任何表明付款被尝试,未决或失败的情况。
这就是发送内容:
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代码之间的仅差异如下:
如果我删除了应用程序ID引用,SDK API调用仍然无效,该引用是为了解决此问题而添加的。
我不明白为什么SDK生成的付款(由PayPal提供)无法完成,但是当资源管理器调用它时,确切的调用工作正常。任何帮助或建议将不胜感激。
答案 0 :(得分:1)
因此,经过近一个月的PayPal商业技术支持(大部分时间没有得到任何回复)来解决这个问题并等待近两周的时间来回复升级,结果发现问题源于SDK配置。
虽然在整个API文档和SDK代码中,应用程序ID被引用为 applicationId ,但显然SDK要求将其作为 acct1.AppId 输入到配置文件中。我在遇到this wiki page on configuring the SDK之后才发现了这一点,这在24小时前根本就不存在。
更新配置后,我就可以无误地授权付款。
答案 1 :(得分:1)
我遇到了另一个可能导致链式付款严重问题的原因。
以下是我的链式付款方式。
主要帐户收到100%。
这在沙盒中很有效(价格也很正常),非常完美,但我在Live中遇到了这个错误。
正在发生的事情是Live的最终预发布测试,我们使用了1.00美元的交易金额并发送了$.50
,$.10
,$.10
,{{1} },$.10
并留下$.10
支付$.10
费用。 (在撰写本文时,贝宝收费$.33
)。在我们的案例中,互联网上的所有答案都没有解决问题,但确实如此。将交易金额更改为5美元(用于测试)工作正常,因为它留下了0.50美元来支付0.45美元的费用(5美元的费用为5美元)。