我正在尝试将 PayPal 集成到我们的网站上,我们允许商家使用 PayPal Connect 连接他们的帐户。一旦我有了商家访问 token ,我就会获取他们的帐户 ID,并将其用作商家 ID 来直接处理向其帐户的付款。
在前端我用过link允许客户向商家付款。我使用以下正文在后端生成订单 ID,然后将此 orderId 返回到前端:
request.requestBody({
intent: 'CAPTURE',
purchase_units: [{
amount: {
currency_code: currency,
value: amount
},
payee: {
merchant_id: accountId
}
}]
});
客户付款后,我收到 CHECKOUT.ORDER.APPROVED
webhook 通知,我尝试使用订单 ID CAPTURE
订单并获取以下信息回应
Paypal 订单捕获已完成
,但 purchase_units[0]. payments.capture[0].status
为待处理
当我看到进行付款的客户沙箱帐户时,我看到一个 -3000 INR 的条目等待卖家领取。
在我的开发者帐户中的“通知”下,我确实看到商家收到了领取金额的通知。
但是当我登录我的商家沙盒帐户时,我没有看到任何事件。即使在捕获订单后,总金额仍然保持不变。
在前端,我已将以下参数传递给脚本
https://www.paypal.com/sdk/js?client-id=abcd¤cy=INR&intent=capture&merchant-id=ABCDEFGHIJKLI
我在后端使用 Node JS 和 @paypal/checkout-server-sdk
最佳答案
待处理的原因为“单边”。
您显然正在沙盒模式下处理向沙盒接收者电子邮件或商家 ID 的付款,该付款当前不对应于任何帐户,或者未在帐户上确认。您需要使用该电子邮件地址创建一个沙盒企业帐户,或者使用该沙盒企业帐户 https://www.sandbox.paypal.com 中的现有帐户添加并确认它。接口(interface),以便在Sandbox中接受付款。
如果它存在于 https://www.sandbox.paypal.com/businessprofile/settings/email 中的帐户中但尚未确认(可能是由于您创建此帐户期间的沙盒错误),请发送新的确认消息并通过 https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Fnotifications%2F 进行确认
顺便说一句,印度卢比付款只能由印度买家发送。印度境外的付款人无法完成印度卢比结账,该货币受到限制。
关于订单捕获后 PayPal 付款状态 'PENDING' 'COMPLETED'(原因 : unilateral),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63969025/