6

Looking at the RequestPermissions API, it says that the scope is supposed to be a string. However, I have been unsuccessful in finding out how to specify more than one scope (specifically EXPRESS_CHECKOUT and REFUND). Comma-separated, semi-colon, and even using their NVP list syntax didn't work. A CURL sample would be greatly appreciated.

Comma-separated example...

curl -s --insecure -H 
"X-PAYPAL-SECURITY-USERID: API_USERNAME" 
-H "X-PAYPAL-SECURITY-PASSWORD: API_PASSWORD" 
-H "X-PAYPAL-SECURITY-SIGNATURE: API_SIGNATURE" 
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV" 
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV" 
-H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" 
https://svcs.sandbox.paypal.com/Permissions/RequestPermissions -d 
"requestEnvelope.errorLanguage=en_US&scope=EXPRESS_CHECKOUT,REFUND&callback=http://my/callback"

When I make that request, I get back "Invalid request parameter scope with value EXPRESS_CHECKOUT,REFUND"

mikesir87
  • 1,785
  • 1
  • 20
  • 25

2 Answers2

11

Ok. Found the answer randomly. The scope variables must be set using "scope(0)=SCOPE_1&scope(1)=SCOPE_2..."

So, the cURL request would look like this...

curl -s --insecure -H 
"X-PAYPAL-SECURITY-USERID: API_USERNAME" 
-H "X-PAYPAL-SECURITY-PASSWORD: API_PASSWORD" 
-H "X-PAYPAL-SECURITY-SIGNATURE: API_SIGNATURE" 
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV" 
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV" 
-H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" 
https://svcs.sandbox.paypal.com/Permissions/RequestPermissions -d 
"requestEnvelope.errorLanguage=en_US&scope(0)=EXPRESS_CHECKOUT&scope(1)=REFUND&callback=http://my/callback"
mikesir87
  • 1,785
  • 1
  • 20
  • 25
  • 3
    Dude, what the heck. PayPal's apis, and documentation are such garbage. Thank you for posting this. If you are in Seattle, I owe you a beer. – Alan Jan 22 '14 at 00:24
  • Sigh! PayPal api gives such a headache!! Thanks for this! +1 – Sisir Oct 06 '15 at 12:00
  • @mikesir87 : I am owner of my ecommerce website. I have many sellers added there. I am asking that if i put my app credentials (username, password, signature, app id) there and run this script, will this grant the permission from sellers too ? To make an api call like refund api we need permission from sellers too. So will this script grant the permissions from all the sellers including me ? – Upendra Sharma Jun 24 '16 at 03:48
  • In this script to whom we are requesting to grant permission for ? – Upendra Sharma Jun 24 '16 at 19:41
  • In addition if that can help someone with php to supply multiple scopes it must be an array. Example : $data = array("scope" => array("EXPRESS_CHECKOUT","EXPRESS_CHECKOUT"),"callback" => "http://url/success.html","requestEnvelope" => array ("errorLanguage" => "en_US" ) ); $payload = json_encode($data); – St3ph Aug 21 '17 at 14:52
3

If you're using their JSON API, scope can be an array.