由于授权失败,无法调用PayPal Sync API



我正在尝试使用相对较新的PayPal Sync API下载我的PayPal Transactions。我正在遵循同步API指南。我首先登录PayPal开发人员Dashboard My Apps&凭据页面,滚动到 REST API APPS 部分,创建应用程序,单击它,并为Sandbox和Live帐户启用交易搜索

然后,我使用了Sandbox帐户的客户端ID和秘密来生成访问令牌。我确认客户端ID和秘密是正确且活跃的。我的curl命令如下(请注意,我在Windows 10上使用的卷曲(:
curl -v https://api.sandbox.paypal.com/v1/oauth2/token ^
   -H "Accept: application/json" ^
   -H "Accept-Language: en_US" ^
   -u "<my-client-id>:<my-secret>" ^
   -d "grant_type=client_credentials"

我收到了类似于以下的响应(我添加了格式(:

{
  "scope":"https://uri.paypal.com/services/reporting/search/read 
           https://api.paypal.com/v1/payments/.* 
           https://uri.paypal.com/services/applications/webhooks 
           openid",
  "nonce":"2018-04-04T02:20:02Z...",
  "access_token":"<my-access-token>",
  "token_type":"Bearer",
  "app_id":"<my-app-id>",
  "expires_in":32400
}
然后,我将访问令牌删除并将其复制到同步API指南页面上的示例命令中。这是我运行的命令:
curl -v -X GET https://api.sandbox.paypal.com/v1/reporting/transactions?transaction_id=5TY05013RG002845M&fields=all&page_size=100&page=1 ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer <my-access-token>"

我收到以下错误响应:

< HTTP/1.1 401 Unauthorized
...
< Content-Length: 244
< Connection: close
< Content-Type: application/json
<
{
  "name":"AUTHENTICATION_FAILURE",
  "message":"Authentication failed due to invalid authentication credentials or a missing Authorization header.",
  "links":[{
    "href":"https://developer.paypal.com/docs/api/overview/#error",
    "rel":"information_link"
  }]
}

我尝试了许多事情来纠正此错误,包括:

  1. 在命令中添加一个" ACCEPT:ACPLACT/JSON"one_answers" ACCEPT LANGUAGE:EN_US"标题。
  2. 创建一个新的秘密并生成新的访问令牌。
  3. 使用新客户ID创建一个新应用程序&amp;秘密并生成新的访问令牌。
  4. 禁用事务搜索,重新启动它,然后再次发送命令。
  5. 在实时帐户中尝试。

这些尝试中的每一个都产生了相同的结果。我指出,在访问令牌响应的范围部分中,它不包含类似于同步API(/V1/Reporting/Transactions(所述路径的路径。但是,这只是一个观察,我不确定这是否相关。

我阅读了大约五次的整个同步API指南和文档,然后我详细搜索了Google和Stackoverflow。我看到有些人已经超越了与同步API的最初连接的证据,所以我可以肯定这是API的作用。

有人可以帮助我理解我缺少的东西吗?我需要等一两天才能赶上他们的系统吗?PayPal的开发人员文档不是很友好,他们的开发人员仪表板非常笨拙。

我也遇到了同样的问题。在URL周围添加双引号为我解决了。其他API端点起作用(身份验证,授权/XYZ(,因为它们中没有任何特殊的URL字符。在交易搜索中,查询字符串定界符被BASH解析。

您上面的卷曲线变为:

curl -v -X GET "https://api.sandbox.paypal.com/v1/reporting/transactions?transaction_id=5TY05013RG002845M&fields=all&page_size=100&page=1" 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer <my-access-token>"

希望对某人有帮助。

看来,此错误可能是由卷发或我使用的方式引起的。直觉,我使用hurl.it执行此示例请求,并且该请求成功(HTTP 200(。然后,我尝试了另一个请求,在给定日期范围内搜索所有交易,这也是成功的。我要标记回答的问题。

最新更新