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>&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