电商平台发货时收款的PayPal支付流程是否正确?
PayPal 授权后捕获支付流程验证
你这套**发货时收款(先授权后捕获)**的流程整体逻辑是正确的,完全适配PayPal的AUTHORIZE模式规则:
- 步骤1正确:创建订单时设置
intent: "AUTHORIZE"是实现"先锁额度、后实际扣款"的核心,该请求生成的是待授权订单,不会立即从用户账户扣款。 - 步骤2正确:前端通过
onApprove拿到订单ID后,PayPal的官方组件(CardFields/PaypalButtons)已经完成了用户端的授权确认流程,payment_source会由前端自动附加,你无需额外调用"确认订单"接口——这就是你之前尝试确认时提示参数缺失的原因,因为前端已经完成了授权环节。 - 步骤3正确:发货时调用
${process.env.PAYPAL_ENDPOINT}/v2/checkout/orders/${req.body.paypalOrderId}/capture发起捕获请求,这一步才会真正完成扣款操作。
关于28天后捕获的有效性:PayPal授权订单的默认最长有效期为29天,所以在28天后发起捕获是完全有效的,只要在授权到期前调用捕获接口即可。
额外补充两个关键注意点:
- 单次授权默认支持一次全额捕获,若需要分批次部分捕获,创建订单时需在
application_context中设置user_action: "CONTINUE",最多可发起10次部分捕获,总金额不得超过授权金额。 - 若授权后长时间未捕获,PayPal可能因风控因素主动取消授权,建议在合理周期内完成捕获操作。
内容的提问来源于stack exchange,提问作者Programmatic Dev
相关产品推荐
相关产品推荐

