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

时间:2018-04-04 02:48:47

标签: paypal paypal-sandbox paypal-rest-sdk

我试图使用相对较新的PayPal Sync API来下载我的PayPal交易。我跟随the Sync API guide。我首先登录PayPal开发人员仪表板My Apps & Credentials page,滚动到 REST API应用部分,创建应用,点击它,然后启用交易搜索 Sandbox和Live帐户。

然后,我使用Sandbox帐户的客户端ID和密钥生成访问令牌。我确认客户端ID和密钥是正确且有效的。我的cURL命令如下(注意我在Windows 10上使用cURL):

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
}

然后我使用访问令牌并将其复制到Sync API指南页面上的the sample command。这是我跑的命令:

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. 添加&#34;接受:application / json&#34;和&#34;接受语言:en_US&#34;该命令的标题。
  2. 创建新密钥并生成新的访问令牌。
  3. 使用新的客户ID创建新的应用程序&amp;秘密并生成新的访问令牌。
  4. 停用交易搜索,重新启用它,然后重新发送命令。
  5. 尝试使用真人帐户。
  6. 这些尝试中的每一个都产生了相同的结果。我注意到在访问令牌响应的范围部分中,它没有包含类似于Sync API的指定路径的路径(/ v1 / reporting / transactions)。但是,这只是一个观察,我不确定这是否相关。

    我阅读了整个Sync API指南和文档大约五次,并且我非常彻底地搜索了Google和StackOverflow。我看到evidence有些人已经超越了与Sync API的初始连接,所以我非常肯定这个API有效。

    有人可以帮我理解我错过的内容吗?难道只是因为我需要等待一两天让他们的系统赶上来吗? PayPal的开发人员文档不是非常用户友好,他们的开发人员仪表板非常糟糕。

2 个答案:

答案 0 :(得分:1)

我有同样的问题。在网址周围加上双引号可以解决此问题。其他API端点起作用(身份验证,授权/ xyz),因为它们中没有任何特殊的URL字符。在事务搜索中,Bash正在解析查询字符串定界符。

您上面的卷曲线变为:

GameScene.sks
 - Reference Node to RocketFire.sks (emitter)  <-- works
 - Reference Node to Rocket.sks

Rocket.sks
 - Reference Node to RocketFire.sks (emitter)  <-- doesn't work in GameScene
 - Reference Node to Engine.sks (non-emitter nodes)  <-- works in GameScene

RocketFire.sks (SpriteKit particle file)

Engine.sks (SpriteKit scene file with non-emitter nodes)

希望可以帮助某人。

答案 1 :(得分:0)

看来这个错误可能是由cURL或我使用它的方式引起的。在预感中,我使用Hurl.it来执行此示例请求,并且请求成功(HTTP 200)。然后我尝试了另一个请求,在那里我搜索了给定日期范围内的所有交易,这也是成功的。我要回答问题。