PayPal退款无权限

Paypal的文档写的真是不友好,社区维护的也很烂,遇到问题都是靠自己摸索,各种尝试。

我遇到的问题是调用退款接口返回403,PERMISSION_DENIED

1.关于创建订单(交易)

创建订单的操作是前端调用PayPal的js去实现的,然后再由PayPal去调用自己的接口,从控制台可以看到PayPal创建订单(交易)使用的是如下URL。

2.退款路径

因为这个路径,我一直认为要走capture退款,再加上PayPal支付成功的返回信息中有多个id信息,搞得人就很混乱,有的是orderId,有的是saleId,有的是transactionId或captureId,强烈建议PayPal可以把不同类型的Id加个前缀做标识。如图,PayPal的返回信息(之前测试一直用的绿色id)

疯狂测试https://api-m.sandbox.paypal.com/v2/payments/captures/2FL71623CA539041M/refund都返回如下错误: 

{
    "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": "https://developer.paypal.com/docs/api/payments/v2/#error-PERMISSION_DENIED",
            "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虽然挺坑,但它的优点是个人和商户都可以退款。又爱又恨~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值