1

我想我只是在这里遗漏了一些明显的东西,但我似乎无法完成链式付款(使用沙箱中的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
&currencyCode=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 提供)无法完成,但是当资源管理器调用它时,确切的调用工作正常。任何帮助或建议将不胜感激。

4

2 回答 2

1

因此,在与 PayPal 的商家技术支持(大部分时间根本没有收到任何回复)解决这个问题并等待近两周的升级响应之后,事实证明问题源于 SDK 配置。

尽管在整个 API 文档和 SDK 代码中,应用程序 ID 被引用为applicationId,但显然 SDK 要求将其作为acct1.AppId输入到配置文件中。我是在看到这个关于配置 SDK 的 wiki 页面后才发现这一点的,该页面在24 小时前甚至都不存在。

一旦我更新了我的配置,我就可以毫无错误地授权付款。

于 2013-08-20T23:26:22.803 回答
1

我遇到了另一个可能导致链式支付出现这个确切问题的原因。

这是我的连锁付款的设置方式。

主账户收到100%。

  • 推荐帐户从中获得 50%。
  • 合作伙伴 1 帐户获得 10%。
  • 合作伙伴 2 帐户获得 10%。
  • 合作伙伴 3 帐户获得 10%。
  • 合作伙伴 4 帐户获得 10%。
  • 10% 留在主账户并支付交易费用。

这在沙盒中完美运行(价格正常),绝对完美,但我在 Live 中遇到了这个错误。

正在发生的事情是 Live 的最终、预先公告、测试,我们使用 1.00 美元的交易金额并发送$.50, $.10, $.10, $.10,$.10并离开$.10以支付$.33费用。(在撰写本文时,贝宝收费2.9% + $.30)。互联网上的所有答案都没有解决我们案例中的问题,但确实如此。将交易金额更改为 5 美元(用于测试)效果很好,因为它留下了 0.50 美元来支付 0.45 美元的费用(5 美元的 0.45 美元费用)。

于 2014-11-17T23:45:45.587 回答