Подтвердить что ты не робот

Paypal Payments REST API - REQUIRED_SCOPE_MISSING

Сбой при выполнении функции "Выполнение" () авторизированного платежа после утверждения пользователем.

прицелы : "адрес электронной почты с открытым адресом телефона 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"}

)

Я использую только один sandbox client_id, и у меня есть разрешения Accept Payments и Use Seamless Checkout.

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

Любое понимание очень ценится.

4b9b3361

Ответ 1

TL;DR; Я разрешал пользователю входить в систему отдельно от проверки и подписывал запросы на проверку, используя этот токен Identity API. На самом деле токен Identity полезен только для входа пользователя на мой сайт, после чего необходимо запросить и использовать новый токен-носитель для Restful API.


Ответ: От pp-randy от Github:

Для доступа к ресурсам, доступным для ваших платежей за отдых, должен использоваться этот вызов API.

Единственный токен, который я вижу от вас, - это идентификатор конечной точки /v 1/identity/openidconnect/tokenservice, который не подходит для REST Payments.


Рэнди был прав - я подписывал запросы API, используя токен, возвращенный, когда я вошел в систему с помощью API-интерфейса Identity.

В действительности токен доступа пользователя, возвращаемый API-интерфейсом Identity, имеет только одну цель: подписать запрос на "/v1/identity/openidconnect/userinfo/", который получает уникальный_ид, используемый для входа.

Я подписывал запросы к API платежей с этим же токеном, возвращенным API-интерфейсом Identity, когда я должен был использовать токен, предоставленный с этой конечной точки:

"/v1/идентичность/openidconnect/tokenservice"

Время отклика Paypal: Мой билет на Github Paypal SDK был получен через 4-5 дней Мой билет в очереди Merchant Services был получен через 4 дня

Подробное устранение неполадок можно найти здесь: https://github.com/paypal/PayPal-PHP-SDK/issues/785#issuecomment-282749095

Рэнди из SDK Paypal пошел дальше и дальше, чтобы ответить на мой вопрос, хотя я не использую SDK. Спасибо Рэнди!

Ответ 2

У вас есть отметка "Подпись", установленная в "Конфигурация вашего приложения" в разделе "ВОЗМОЖНОСТИ APP" → > "Дополнительные параметры" на сайте developer.paypal.com?