发票状态变为已支付后创建并激活PayPal订阅
解决方案:将PayPal订阅从"approval-pending"转为"Active"
核心问题原因
直接创建订阅时,PayPal默认要求用户完成授权流程,哪怕用户已经通过发票完成付款,也会导致订阅停留在approval-pending状态。你需要通过关联已完成的发票交易来跳过授权,触发状态变更。
方法1:更新已创建的订阅状态
如果已经创建了处于approval-pending的订阅,可通过以下API调用将其转为Active:
- 先通过
GET /v1/invoicing/invoices/{invoice_id}/payments获取发票对应的交易ID - 调用
POST /v1/billing/subscriptions/{subscription_id}/capture接口,传入交易ID作为支付来源:
调用成功后,订阅状态会自动切换为{ "amount": { "currency_code": "USD", "value": "10.00" // 需与发票金额一致 }, "payment_source": { "token": { "id": "{INVOICE_PAYMENT_TRANSACTION_ID}", "type": "TRANSACTION" } } }Active,同时生成首次付款记录。
方法2:创建订阅时直接设置为Active(推荐)
在创建订阅的阶段就关联已完成的发票交易,避免进入approval-pending状态:
调用POST /v1/billing/subscriptions时,在请求体中添加payment_source字段:
{ "plan_id": "P-XXXXXXXXX", // 你的订阅计划ID "start_time": "2024-05-20T07:00:00Z", "payment_source": { "token": { "id": "{INVOICE_PAYMENT_TRANSACTION_ID}", "type": "TRANSACTION" } } }
这样创建的订阅会直接进入Active状态,无需用户额外操作。
关键注意事项
- 你的PayPal账户必须开启**参考交易(Reference Transaction)**权限,否则无法关联历史交易ID
- 订阅的金额、货币必须与发票支付的完全一致,否则会触发验证失败
- 确保获取的交易ID是发票支付成功后生成的有效交易记录
内容的提问来源于stack exchange,提问作者Prachi Surati
相关产品推荐
相关产品推荐

