2017-02-23 101 views
13

当用户批准后执行()授权付款时失败。Paypal付款REST API - REQUIRED_SCOPE_MISSING

范围 : “OpenID的个人资料的电子邮件地址,电话https://uri.paypal.com/services/expresscheckout

consent_uri : “https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize?client_id=my_client_id&response_type=code&scope=openid%20profile%20email%20address%20phone%20https://uri.paypal.com/services/expresscheckout&redirect_uri=https://www.my_site.com/src/paypal.php

[http_code] => 403 
[url] => https://api.sandbox.paypal.com/v1/payments/payment/PAY-55313193UK1537019LCXIDBA/execute 
[header] => Array 
    (
     [0] => Content-Type:application/json 
     [1] => Authorization:Bearer user_access_token_from_identity_api 
     [2] => PayPal-Partner-Attribution-Id:pp_attr_id 
    ) 

[post_data] => {"payer_id":"3BTU9WTCHAU2Q"} 
[response] => {"name":"REQUIRED_SCOPE_MISSING","message":"Access token is missing required scope.","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#REQUIRED_SCOPE_MISSING","debug_id":"e40c3f6b601a"} 

我只使用一个沙箱的client_id和我有接受付款并启用无缝签出权限。

https://developer.paypal.com/docs/integration/direct/identity/seamless-checkout/

任何了解是极大的赞赏。

回答

0

TLDR;我允许用户登录与结帐分开,并使用该Identity API令牌签署结帐请求。实际上,身份令牌仅用于将用户登录到我的网站,此时应请求并使用Restful API的新承载令牌。


答:从PP-兰迪在Github上:

您需要为您休息的支付应的access_token使用此API调用。

我从您身上看到的唯一令牌来自Identify endpoint/v1/identity/openidconnect/tokenservice,这对于REST付款是不正确的。


Randy是对的 - 我使用在使用身份API登录用户时返回的令牌来签署API请求。

实际上,Identity API返回的用户访问令牌只有一个目的,用于将请求签名为获取用于登录的unique_id的“/ v1/identity/openidconnect/userinfo /”。

我签名请求与由身份API返回同样的支付API时,我应该利用这个端点提供的令牌已经:

“/ V1 /身份证/ openidconnect/tokenservice”

贝宝的反应时间: 我在Github上贝宝SDK车票的回答是4 - 5天 我在商家服务队列票约4天

得到的回答

整个故障可以在这里找到: https://github.com/paypal/PayPal-PHP-SDK/issues/785#issuecomment-282749095

来自Paypal SDK的Randy超出了我的问题回答,即使我不使用SDK。谢谢兰迪!

2

您是否在您的应用程序配置中的“应用程序功能”下选中了“Subcription”标记 - > developer.paypal.com上的“高级选项”?

+0

我这样做,我会在我的答案中显示出什么错误。感谢您的评论。 –