PayPal Checkout PHP SDK服务端捕单返回PERMISSION_DENIED但客户端正常
问题排查解决步骤
- 检查PayPal开发者后台Rest应用权限
登录PayPal开发者控制台,找到你当前使用的沙箱应用,进入应用详情的权限配置页,确认已经勾选了Orders v2 捕获权限,很多用户创建应用时默认仅开通订单创建权限,未开通捕获权限会直接触发该报错。 - 验证环境与凭证一致性
确认你创建订单、捕获订单两个环节使用的clientId、secretKey是同一套凭证,且沙箱环境严格使用沙箱凭证,不要混用生产环境的密钥。同时检查你初始化PayPal环境的时候,是不是统一用的SandboxEnvironment,没有误写成生产环境类。 - 确认订单未被重复捕获
如果你在JS的onApprove回调里已经调用了actions.order.capture()完成了订单捕获,此时同一个订单再调用服务端的捕获接口,就会返回权限不足报错,因为订单状态已经变为COMPLETED,不允许重复操作。如果要全流程走服务端捕获,需要删掉JS里的actions.order.capture()逻辑,只拿orderId传给后端执行捕获即可。 - 检查订单状态合法性
调用服务端捕获之前,先调用OrdersGetRequest查询当前订单的状态,确认状态为APPROVED之后再执行捕获操作,避免在用户未完成授权、订单状态还处于CREATED阶段就发起捕获请求。 - 排查沙箱账号限制
进入PayPal开发者后台的沙箱账号管理页,检查你使用的商家沙箱账号状态是否正常,有无被冻结、限制交易的情况,如果账号异常可以重新创建一个新的沙箱商家账号,绑定到你的Rest应用上测试。
内容的提问来源于stack exchange,提问作者ytdm
相关产品推荐
相关产品推荐

