2017-02-23 69 views
13

Błąd przy wykonywaniu() autoryzowanej płatności po zatwierdzeniu przez użytkownika.PayPay Payments REST API - REQUIRED_SCOPE_MISSING

zakresy : "OpenID email profil Adres Telefon 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"} 

)

Używam tylko jeden sandbox CLIENT_ID i mam Akceptuj płatności i włączaj uprawnienia Bezproblemowa realizacja transakcji.

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

Każdy wgląd jest mile widziana.

Odpowiedz

0

TLDR; Zezwalałem na logowanie użytkownika oddzielnie od realizacji transakcji i podpisywałem prośby o kasę przy użyciu tokena Tożsamość API. W rzeczywistości token Tożsamości przydaje się tylko do zalogowania użytkownika do mojej witryny, w którym to momencie należy poprosić o nowy token na okaziciela dla Restful API.


Odpowiedź: Z PP-randy na Github:

access_token potrzeba do płatności Reszta powinna być za pomocą tego wywołania API.

Jedyny widoczny ode mnie token pochodzi z Identify endpoint/v1/identity/openidconnect/tokenservice, który nie jest poprawny dla płatności REST.


Randy miał rację - podpisywałem żądania interfejsu API przy użyciu tokenu zwróconego po zalogowaniu użytkownika przy użyciu interfejsu Identity API.

W rzeczywistości token dostępu użytkownika, który jest zwracany przez Identity API, ma tylko jeden cel, aby podpisać żądanie do "/ v1/identity/openidconnect/userinfo /", które pobiera identyfikator unikalny używany do logowania.

byłem podpisania prośby do API Płatności z tym samym zwracanej przez API Identity kiedy byłbym za pomocą tokena dostarczonego z tego punktu końcowego:

„/ v1/tożsamość/openidconnect/tokenservice”

Paypal Reponse Times: Mój bilet na gitHub Paypal SDK odpowiedział w 4 - 5 dni Mój bilet w Merchant Services kolejki odpowiedział w ciągu około 4 dni

Cały rozwiązywania problemów można znaleźć tutaj: https://github.com/paypal/PayPal-PHP-SDK/issues/785#issuecomment-282749095

Randy z Paypal SDK podszedł do odpowiedzi, mimo że nie używam SDK. Dziękuję, Randy!

2

Czy masz zaznaczoną etykietę "Subskrypcja" w swojej konfiguracji aplikacji w "MOŻLIWOŚCI APLIKACJI" - >> "Opcje zaawansowane" na stronie developer.paypal.com?

+0

Pozdrawiam, pokażę, co złego w mojej odpowiedzi. Dziękuje za komentarz. –