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

由于授权失败,无法调用PayPal同步API,paypal,paypal-sandbox,paypal-rest-sdk,Paypal,Paypal Sandbox,Paypal Rest Sdk,我正在尝试使用相对较新的下载我的贝宝交易。我跟在后面。我首先登录PayPal开发者仪表板,滚动到REST API应用程序部分,创建一个应用程序,单击它,并为沙盒和Live帐户启用交易搜索 然后,我使用沙盒帐户的客户端ID和密码生成一个访问令牌。我确认客户ID和密码正确且有效。我的cURL命令如下(请注意,我在Windows 10上使用cURL): curl-vhttps://api.sandbox.paypal.com/v1/oauth2/token ^ -H“接受:应用程序/json”^ -H

我正在尝试使用相对较新的下载我的贝宝交易。我跟在后面。我首先登录PayPal开发者仪表板,滚动到REST API应用程序部分,创建一个应用程序,单击它,并为沙盒和Live帐户启用交易搜索

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

curl-vhttps://api.sandbox.paypal.com/v1/oauth2/token ^
-H“接受:应用程序/json”^
-H“接受语言:en_US”^
-u“:”^
-d“授权类型=客户端凭据”
我收到了如下类似的回复(我添加了格式):

{
“范围”:https://uri.paypal.com/services/reporting/search/read 
https://api.paypal.com/v1/payments/.* 
https://uri.paypal.com/services/applications/webhooks 
openid“,
“暂时”:“2018-04-04T02:20:02Z…”,
“访问令牌”:“,
“令牌类型”:“承载者”,
“应用程序id”:“,
“到期日”: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>"
curl-v-xgethttps://api.sandbox.paypal.com/v1/reporting/transactions?transaction_id=5TY05013RG002845M&fields=all&page_size=100&page=1 ^
-H“内容类型:应用程序/json”^
-H“授权:持票人”
我收到了以下错误响应:

< 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"
  }]
}
我尝试了很多方法来纠正这个错误,包括:

  • 向命令添加“Accept:application/json”和“Accept Language:en_US”头
  • 创建新密码并生成新的访问令牌
  • 使用新的客户端ID&Secret创建新的应用程序,并生成新的访问令牌
  • 禁用事务搜索,重新启用它,然后再次发送命令
  • 正在尝试使用Live帐户
  • 每一次尝试都产生了相同的结果。我注意到,在访问令牌响应的范围部分中,它没有包含一个类似于syncapi(/v1/reporting/transactions)所述路径的路径。然而,这只是一个观察,我不确定这是否相关

    我通读了整个syncapi指南和文档大约五次,搜索了Google和StackOverflow。我看到一些人已经通过了同步API的初始连接,所以我相当肯定这个API可以工作


    有人能帮我理解我遗漏了什么吗?难道我需要等一两天才能赶上他们的系统吗?PayPal的开发者文档对用户不是很友好,他们的开发者仪表盘也非常容易出错。

    看来这个错误可能是由cURL或我使用它的方式造成的。凭直觉,我曾经执行过这个示例请求,请求成功了(HTTP200)。然后我尝试了另一个请求,搜索给定日期范围内的所有事务,结果也成功了。我将标记所回答的问题。

    我也有同样的问题。在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>"
    
    curl-v-X“获取https://api.sandbox.paypal.com/v1/reporting/transactions?transaction_id=5TY05013RG002845M&fields=all&page_size=100&page=1" \
    -H“内容类型:应用程序/json”\
    -H“授权:持票人”
    

    希望这能帮助别人

    我在node方面也面临同样的问题。你是如何解决这个问题的?
    < 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"
      }]
    }
    
    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>"