Paypal API 订阅 curl 沙箱目录产品 权限不足授权失败

Posted

技术标签:

【中文标题】Paypal API 订阅 curl 沙箱目录产品 权限不足授权失败【英文标题】:Paypal API subscription curl sandbox catalog products Authorization failed due to insufficient permissions 【发布时间】:2021-03-28 19:12:31 【问题描述】:

这个问题是关于尝试创建产品和订阅时的 paypal API 目录。

我正在关注这个教程https://developer.paypal.com/docs/subscriptions/integrate/

我能够获得我的令牌,但在尝试创建产品时我收到“由于权限不足导致授权失败”

这是我的代码

// GET TOKEN
$paypalcurl = 'curl -v https://api-m.sandbox.paypal.com/v1/oauth2/token -H "Accept: application/json" -H "Accept-Language: en_US" -u "'.($paypal_client_id.':'.$paypal_client_secret).'" -d "grant_type=client_credentials"';
$ptoken_result = json_decode(exec($paypalcurl.' 2>&1'),true);
$ptoken = $ptoken_result['access_token'];

// CREATE PRODUCTI AND GET PRODUCT ID
$paypalcurl_create_prodct = 'curl -v -X POST https://api-m.sandbox.paypal.com/v1/catalogs/products \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer '.$ptoken.'" \
-d \'
  "name": "Video Streaming Service test",
  "description": "Video streaming service",
  "type": "SERVICE",
  "category": "SOFTWARE",
  "home_url": "https://www.example.com/"
\'';
$pcreate_result = json_decode(exec($paypalcurl_create_prodct.' 2>&1'),true);

if ( ADMIN_PASS == 1 )  echo str_replace(',',',<br>',var_export($pcreate_result,true)); 

这里是结果

array ( 'name' => 'NOT_AUTHORIZED',
'message' => 'Authorization failed due to insufficient permissions.',
'debug_id' => 'f7d1051f9daf3',
'details' => array ( 0 => array ( 'issue' => 'PERMISSION_DENIED',
'description' => 'You do not have permission to access or perform operations on this resource.',
),
),
'links' => array ( 0 => array ( 'href' => 'https://developer.paypal.com/docs/api/v1/billing/subscriptions#NOT_AUTHORIZED',
'rel' => 'information_link',
'method' => 'GET',
),
),
)

我错过了什么?

【问题讨论】:

$ptoken_result = json_decode(exec($paypalcurl.' 2&gt;&amp;1'),true); 这个结果包含哪些范围?在paypal.com/… 中为 ClientID 的沙盒应用启用订阅后,您是否等待了至少 9 小时? @PrestonPHX 好的,谢谢,我没有看到任何地方写着我必须等待 9 小时,但是现在可以了 ;) 您通常不会,但是如果您在具有这些范围的响应之前生成了访问令牌,则会被缓存 【参考方案1】:

发表评论后,我意识到这只是延迟。

1- 转到https://developer.paypal.com/developer/applications/

2- 点击您创建的应用

3- 勾选接受付款启用一次性和订阅付款。高级选项并点击“高级选项”

4- 勾选“结算协议”和“未来付款”并保存

5- 等待几个小时

6-瞧!

【讨论】:

以上是关于Paypal API 订阅 curl 沙箱目录产品 权限不足授权失败的主要内容,如果未能解决你的问题,请参考以下文章

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

PHP Curl Paypal 沙箱

Paypal 沙箱 CURL 执行 - “SSL 连接错误”

PHP cURL取消订阅PayPal问题

无法登录到 Paypal 沙箱 [重复]

Paypal Express 结帐 + php cURL 执行付款不在沙箱上显示付款通知