使用@paypal/react-paypal-js创建订阅报错,请求协助解决
PayPal订阅支付沙箱报错解决指南
关键排查与修复步骤
- 验证订阅计划状态与ID正确性
确认代码中plan_id填写的是沙箱环境的有效订阅计划ID,登录PayPal沙箱开发者后台检查该计划状态是否为ACTIVE(草稿状态DRAFT无法发起订阅),同时注意沙箱与生产环境的Plan ID不通用。 - 调整PayPalScriptProvider配置
移除不必要的vault: true配置,该参数用于存储支付方式供后续重复扣款,订阅场景下无需额外开启,可能引发逻辑冲突。修正后的配置代码:<PayPalScriptProvider options={{ "client-id": `${process.env.REACT_APP_PAYPAL_CLIENT_ID}`, intent: "subscription" }} > <PayPalButtons style={{ shape: "rect", color: "gold", layout: "vertical", label: "subscribe" }} createSubscription={(data, actions) => { return actions.subscription.create({ plan_id: "PLAN-ID" // 替换为实际沙箱Plan ID }); }} onApprove={(data, actions) => { console.log(data); console.log(actions); }} onError={(data) => { console.log("Error details:", data); // 打印完整错误信息 }} /> </PayPalScriptProvider> - 检查沙箱账号兼容性
- 确认使用的沙箱买家账号所在地区支持订阅计划设置的币种和支付方式;
- 确保沙箱卖家账号已完成沙箱环境的身份认证流程,未认证账号无法发起订阅交易。
- 解析错误日志定位问题
在浏览器控制台查看onError回调输出的完整错误数据,PayPal会返回明确错误码:PLAN_NOT_FOUND:Plan ID无效或未激活PERMISSION_DENIED:卖家账号无该计划操作权限CURRENCY_NOT_SUPPORTED:买家地区不支持计划币种
根据错误码直接对应修复。
- 确认Client ID环境匹配
验证REACT_APP_PAYPAL_CLIENT_ID是沙箱环境的客户端ID,而非生产环境ID,可在PayPal开发者后台“我的应用和凭据”中查看区分。
内容的提问来源于stack exchange,提问作者Akash Chavda
相关产品推荐
相关产品推荐

