访问 PayPal 沙箱 Rest API 时响应 401

Posted

技术标签:

【中文标题】访问 PayPal 沙箱 Rest API 时响应 401【英文标题】:Response 401 when accessing PayPal sandbox Rest API 【发布时间】:2015-05-09 12:43:25 【问题描述】:

我能够在https://api.sandbox.paypal.com/v1/oauth2/token 请求访问令牌并发送POST 以使用给定的访问令牌在https://api.sandbox.paypal.com/v1/payments/payment 创建新付款。这两个 API 运行没有任何问题。

但是当我使用上述访问令牌创建的 payment_id 执行 GET 时,它给了我 401 https://api.sandbox.paypal.com/v1/payments/payment/PAY-XXXX。这是我要在我的return_url 执行付款的步骤。

我正在使用从https://github.com/paypal/PayPal-php-SDK 下载的 PayPal PHP SDK。一切仍处于沙盒模式。 client_idsecret 是沙盒凭据。

另外,我尝试将 cURL 运行到上面的 payment_id 的 URL,但它也给出了 HTTP/1.1 401 Unauthorized

curl -v https://api.sandbox.paypal.com/v1/payments/payment/PAY-XXXX 
-H 'Content-Type: application/json' 
-H 'Authorization: Bearer ACCESS_TOKEN'

根据文档,401 表示无效或过期的访问令牌,但我认为它不适用于此处,因为之前的 POST 命令可以成功运行。

更新 #1:事实上,我已经尝试使用 cURL 运行整个流程(请求access_tokenpost 付款、get 付款和execute)并且没有问题。所以问题一定出在PHP代码上

【问题讨论】:

您可以尝试运行samples,并确保它们工作正常吗? 后发者:请务必使用与当前clientIDclientSecret对应的商家邮箱,否则会出现401错误。 【参考方案1】:

PHP 中有一处错字,导致我错了access_token。有趣的是,POST 创建新付款的方法仍然被允许,这让我很困惑。

【讨论】:

以上是关于访问 PayPal 沙箱 Rest API 时响应 401的主要内容,如果未能解决你的问题,请参考以下文章

PayPal Rest API for Payments 在沙箱中返回 NULL

关于无法从开发者沙箱触发 Paypal REST API webhook 事件

访问paypal支付时http响应码500

访问paypal支付时http响应码500

PayPal Rest SDK API - 获取令牌

使用 Paypal 用户名、密码和签名访问 REST API