PayPal支付捕获API状态Pending问题及'sale'模式设置咨询
解决PayPal生产环境交易PENDING_REVIEW问题:将授权模式改为即时成交
按照PayPal团队的建议,你需要把交易从**授权(Authorisation)模式切换为即时成交(sale)**模式,对应PayPal v2 API的intent: 'CAPTURE'参数。修改方式如下:
修改后的完整代码
<script src="https://www.paypal.com/sdk/js?client-id=key¤cy=GBP"></script> <script> paypal.Buttons({ createOrder: (data, actions) => { console.log("create order"); return actions.order.create({ intent: 'CAPTURE', // 核心设置:指定即时成交模式 purchase_units: [{ amount: { value: 10.00 } }] }); }, onApprove: (data, actions) => { console.log("on approve"); // 即时成交模式下无需手动调用capture,直接获取已完成的捕获详情 return actions.order.get().then(function(orderData) { const transaction = orderData.purchase_units[0].payments.captures[0]; alert(`${transaction.status}: ${transaction.id}`); }); } }).render('#paypal-button-container'); </script>
关键修改点
- 在
actions.order.create的参数中添加intent: 'CAPTURE':这会将订单设置为即时成交,用户完成支付后PayPal自动完成资金捕获,替代原来的"先授权、后手动捕获"流程。 - 移除原代码中的
actions.order.capture()调用:因为intent: 'CAPTURE'已自动完成捕获,无需额外触发。
原理说明
原授权模式下,PayPal会对"先授权再捕获"的交易进行额外风险审查,导致资金冻结(状态PENDING_REVIEW)。切换为即时成交模式后,交易流程更符合常规电商场景的直接结算逻辑,能避免此类不必要的冻结。
内容的提问来源于stack exchange,提问作者Mild Milly
相关产品推荐
相关产品推荐

