PayPal支付REST API - REQUIRED_SCOPE_MISSING

13

在用户批准后执行授权付款时,Execute()失败。

scopes: "openid profile email address phone 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"}

我只使用了一个沙盒客户端ID,并且已启用“接受付款”和“使用无缝结帐”权限。

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

非常感谢您提供任何见解。

2个回答

2

您的应用配置中是否在“开发者.paypal.com”上的“高级选项”下勾选了“订阅”标记?


我会展示我的答案中哪里出了问题。谢谢您的评论。 - Jordan Reddick

0

简而言之,我允许用户登录与结账分开,并使用身份 API 令牌签署结账请求。实际上,身份令牌仅用于将用户登录到我的网站,此时应请求并使用新的 Restful API 的 Bearer 令牌。


回答:来自Github上的pp-randy:

你需要用这个API调用获取你的REST支付所需的access_token。

我从你那里看到的唯一令牌是来自Identify端点/v1/identity/openidconnect/tokenservice,这对于REST Payments不正确。


Randy说得对 - 当我使用身份API登录用户后返回令牌时,我确实是在使用该令牌签署API请求。

事实上,由身份认证API返回的用户访问令牌只有一个目的,即签署到“/v1/identity/openidconnect/userinfo/”以获取用于登录的unique_id。

当我应该使用从此端点提供的令牌时,我正在使用身份API返回的相同令牌来签署Payments API请求:

“/v1/identity/openidconnect/tokenservice”

Paypal响应时间: 我的Github Paypal SDK票务在4-5天内得到回答 我的商家服务队列票务大约在4天内得到回答

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

Paypal SDK中的Randy超出了回答我的问题,尽管我不使用SDK。谢谢Randy!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接