我已经建立了一个沙箱测试用例,通过该用例,我可以允许商家链接并授予我的促进者帐户快速结帐权限,并提供一个第二页,最终用户可以在该页面上从商家帐户购买商品。我遇到的问题是,在完成快速结帐时,服务商将收取所有款项,而不是商人。商家收到了信用卡付款,但立即向协调员全额付款。
使用本指南:https://devtools-paypal.com/guide/expresscheckout/php?interactive=OFF&env=sandbox
然后,我代表商家帐户创建了快速结帐。
验证详细信息:
'mode' => 'sandbox',
'acct1.UserName' => 'dev-facilitator...',
'acct1.Password' => 'dev-facilitator_pw...',
'acct1.Signature' => 'dev-facilitator...',
'acct1.AppId' => 'APP-80W284485P519543T',
'acct1.accessToken' => $merchant_token,
'acct1.tokenSecret' => $merchant_secret
我的代码与示例非常相似,并假定传递给DoExpressCheckoutPayment的PaymentDetailsType与从GetExpressCheckoutDetails接收的相同。
除了用户完成付款后,商家的贝宝最终看起来像:
Purchase From, dev-facilitator, Completed, Details, -$250 NZD
Transfer From, Credit Card , Completed, Details, $250 NZD
最终结果是:
Dev-facilitator balance: $250 NZD
Dev-merchant balance: $0 NZD
我不确定在快速结帐设置中我应在哪里指定商户应针对快速结帐向协调人提交的发票类型。
如果需要,我可以提供其他代码段。
最佳答案
看来,我的问题的核心是以下事实:如果未同时提供acct1.Subject,则将忽略accessToken和tokenSecret(与accessToken关联的电子邮件)。
引起混乱的第二件事是,我没有注意我的买家行动针对的是哪个帐户...登录到我的商人帐户后,更改了我在另一个选项卡中用于进行快速结帐的cookie。因此,商家帐户最终成为买方,而交易者则是商家的促进者...“购买来源”,“转移来源”只是显示信用卡交易的方式:IE首先将信用卡转换为贝宝钱,然后使用在贝宝购买交易中。
从而,
'mode' => 'sandbox',
'acct1.UserName' => 'dev-facilitator...',
'acct1.Password' => 'dev-facilitator_pw...',
'acct1.Signature' => 'dev-facilitator...',
'acct1.AppId' => 'APP-80W284485P519543T',
'acct1.Subject' => $merchant_email,
'acct1.accessToken' => $merchant_token,
'acct1.tokenSecret' => $merchant_secret
这是我应该提供的。