2017-02-23 6 views
13

Fehler beim Ausführen() einer autorisierten Zahlung nach Benutzergenehmigung.Paypal Payments REST API - REQUIRED_SCOPE_MISSING

Bereiche : "openid Profil E-Mail-Adresse 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"} 

)

ich nur eine Sandbox client_id bin mit und ich habe die Zahlungen akzeptieren und Seamless Checkout-Berechtigungen verwenden

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

Einsicht wird sehr geschätzt.

Antwort

0

TLDR; Ich habe die Benutzeranmeldung getrennt von der Kasse zugelassen und signierte die Checkout-Anfragen mit diesem Identity-API-Token. In Wirklichkeit ist das Identitäts-Token nur nützlich, um einen Benutzer auf meiner Website zu loggen. Zu diesem Zeitpunkt sollte ein neues Bearer-Token für die Restful-APIs angefordert und verwendet werden.


Antwort: Von pp-randy auf Github:

Die access_token Sie für Ihre Erholung Zahlungen benötigen, sollten diese API-Aufruf werden.

Das einzige Token, das ich von Ihnen sehe, stammt vom Identify-Endpunkt/v1/identity/openidconnect/tokenservice, der für die REST-Zahlungen nicht korrekt ist.

Randy hatte recht - Ich signierte die API-Anfragen mit dem Token, das zurückgegeben wurde, als ich den Benutzer mit der Identity API anmeldete.

In Wirklichkeit hat das Zugriffstoken des Benutzers, das von der Identity-API zurückgegeben wird, nur einen Zweck, die Anforderung an "/ v1/identity/openidconnect/userinfo /" zu signieren, die die unique_id für die Anmeldung erhält.

ich Unterzeichnung Anfragen an den Zahlungs-API mit demselben Token von dem Identity-API zurückgegeben, wenn ich das Token von diesem Endpunkt vorgesehen verwendet haben sollte:

„/ v1/Identität/openidconnect/tokenservice“

Paypal Reponse Zeiten: Mein Ticket auf Github Paypal SDK wurde in 4 beantwortet - 5 Tage Mein Ticket in der Merchant Services Queue in etwa 4 Tage beantwortet wurde

Entire zur Fehlerbehebung finden Sie hier: https://github.com/paypal/PayPal-PHP-SDK/issues/785#issuecomment-282749095

Randy vom Paypal SDK ging weit über meine Frage hinaus, obwohl ich das SDK nicht benutze. Danke Randy!

2

Haben Sie die Markierung "Subscription" in Ihrer App-Konfiguration unter den "APP CAPABILITIES" - >> "Advanced options" auf developer.paypal.com markiert?

+0

Ich mache, ich werde zeigen, was falsch in meiner Antwort. Danke für den Kommentar. –

Verwandte Themen