react-paypal-button-v2沙箱模式三大问题:密钥、资金及回调异常
问题解答
1. PAYPAL_CLIENT_SECRET 的配置位置
PAYPAL_CLIENT_SECRET是后端专用凭证,绝对不能放在前端代码或组件配置里。- 你需要在自己的服务器端代码中使用它:调用 PayPal REST API(比如创建订单、捕获支付的接口)时,通过 Basic 认证方式传入——用户名填你的
CLIENT_ID,密码填CLIENT_SECRET。 - 前端的
react-paypal-button-v2只需要配置公开的clientId就够了,不需要碰密钥。
2. 付款已扣除但未进入收款人余额
- 沙箱环境下这种情况大概率是收款人沙箱账户没验证:登录 PayPal 沙箱后台,检查你的商家类型沙箱账户是否完成了邮箱验证、基础信息填写。
- 去沙箱的交易记录里看状态:如果是「Pending」,可能是用了电子支票付款(沙箱可模拟),这类交易需要等模拟清算;如果状态是「Completed」但余额没变化,检查账户有没有被限制或冻结。
- 还要确认付款是打到了正确的商家沙箱账户,不是测试买家自己的账户。
3. onApprove() 回调未执行
- 你代码里同时用了
onSuccess和onApprove,但在react-paypal-button-v2组件中,onSuccess是封装好的高阶回调,它会在支付审批通过且交易完成后触发——组件内部已经帮你处理了原生onApprove的逻辑(比如捕获支付),所以你自己写的onApprove不会被调用。 - 要处理审批后的逻辑,直接把代码移到
onSuccess里就行,这个回调会返回完整的交易详情和数据,足够满足后续业务需求。 - 要是你非要用原生的
onApprove,那就别用组件的onSuccess,改用自定义渲染按钮的方式,手动传入onApprove逻辑,但这种情况下你得自己写代码去完成支付捕获的步骤。
内容的提问来源于stack exchange,提问作者osomaher
相关产品推荐
相关产品推荐

