我正在尝试实现PayPal REST API。
当我使用服务器上的请求创建PayPal付款时,付款创建成功,付款ID传递给PayPal。
下一步,用户必须批准付款。
在用户浏览器中打开“ PayPal”窗口,并提示用户登录或使用信用卡付款。
问题是: 当我使用沙箱客户帐户登录时,PayPal不会显示任何可用的附加信用卡或贝宝钱包余额,它只会提示将新的信用卡添加到沙箱帐户。
如果我在一个单独的浏览器窗口中使用此沙盒帐户登录,则可以看到它具有钱包余额和附带的信用卡。
如果我使用客户端JS请求而不是服务器来创建“付款”,则不会复制该问题,并且PayPal会同时显示钱包余额和信用卡。
因此,我认为问题在于付款的格式。服务器付款的格式为:
{
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "10.00",
"currency": "USD"
},
"description": "silver membership",
"custom": "account_id:1"
}
],
"redirect_urls": {
"return_url": "https://example.com/return",
"cancel_url": "https://example.com/cancel"
}
}
使用客户端JS创建的付款格式更加简单,我从开发人员手册中的一个示例中获取了付款格式。如果我在服务器请求中使用相同的简单格式,将不允许我创建付款(我认为客户端checkout.js只是默默地添加缺少的必填字段)。
payment: function (data, actions) {
return actions.payment.create({
transactions: [{
amount: {
total: '10.00',
currency: 'USD'
}
}]
});
},
非常感谢您对此主题的任何提示。