权限"/>
PayPal退款无权限
Paypal的文档写的真是不友好,社区维护的也很烂,遇到问题都是靠自己摸索,各种尝试。
我遇到的问题是调用退款接口返回403,PERMISSION_DENIED
1.关于创建订单(交易)
创建订单的操作是前端调用PayPal的js去实现的,然后再由PayPal去调用自己的接口,从控制台可以看到PayPal创建订单(交易)使用的是如下URL。
2.退款路径
因为这个路径,我一直认为要走capture退款,再加上PayPal支付成功的返回信息中有多个id信息,搞得人就很混乱,有的是orderId,有的是saleId,有的是transactionId或captureId,强烈建议PayPal可以把不同类型的Id加个前缀做标识。如图,PayPal的返回信息(之前测试一直用的绿色id)
疯狂测试:
{"name": "NOT_AUTHORIZED","message": "Authorization failed due to insufficient permissions.","debug_id": "8ce6650ecf680","details": [{"issue": "PERMISSION_DENIED","field": "capture_id","value": "2FL71623CA539041M","description": "You do not have permission to access or perform operations on this resource.","location": "path"}],"links": [{"href": "","rel": "information_link"}]
}
3.灵感来源
灵感来源一:开发者API一个不显眼的地方读到一句话,大概意思是authorize和capture退款只有会员可操作。
灵感来源二:PayPal API returns RESOURCE_NOT_FOUND / INVALID_RESOURCE_ID but the transaction is listed in the Sandbox Business account - Stack Overflow
灵感来源三:PayPal社区里有不少帖子是使用错了ID,有人提到使用purchase_unit中的id可操作成功。
4.退款成功
使用purchase_unit中的id,使用sale进行退款,退款成功。登录PayPal开发者后台,确实可以看到有退款记录。至此,完成该功能。PayPal虽然挺坑,但它的优点是个人和商户都可以退款。又爱又恨~
更多推荐
PayPal退款无权限
发布评论