沙箱中的贝宝身份验证失败

Jij*_*iji 6 authentication paypal paypal-sandbox

当我尝试使用 Paypal 沙盒 API 时遇到问题。我已经创建了我的 2 个沙箱帐户(服务商和买家),并且我已经创建了我的应用程序来获取凭据。

然后,我使用 Paypal 提供的 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"
Run Code Online (Sandbox Code Playgroud)

我收到 200 响应,带有“access_token”。

然后,我使用这个访问令牌来获取另一个资源,例如:

curl -v -X GET https://api.sandbox.paypal.com/v1/invoicing/invoices?page=3&page_size=4&total_count_required=true \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer the-token-received-above"
Run Code Online (Sandbox Code Playgroud)

然后,我收到 401 错误:{ "name":"AUTHENTICATION_FAILURE", "message":"由于身份验证凭据无效或授权标头丢失,身份验证失败。", "links":[{ "href":" https: //developer.paypal.com/docs/api/overview/#error ", "rel":"information_link" }] }

我不明白我做错了什么,因为我遵循了 Paypal 文档中描述的每一步(至少,我认为我......可能没有)

谢谢你的帮助

Khy*_*ala 2

获取access_token后。请尝试这个

try {
    $params = array('access_token' => $jsonResponse->access_token);
    $userInfo = OpenIdUserinfo::getUserinfo($params, $this->_api_context);
} catch (Exception $ex) {
    ResultPrinter::printError("User Information", "User Info", null, $params, $ex);
    exit(1);
}

 ResultPrinter::printResult("User Information", "User Info", $userInfo->getUserId(), $params, $userInfo);
Run Code Online (Sandbox Code Playgroud)

不要忘记添加

use PayPal\Api\OpenIdTokeninfo;
use PayPal\Api\OpenIdUserinfo;
Run Code Online (Sandbox Code Playgroud)

这对我有用。