I'm trying to figure out the API documentation for paypal adaptive payments. So I'm trying to translate this curl command(the example):
curl https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
-d "grant_type=client_credentials"
into php(the only thing not shown is my clientID and secret):
$data =
'client_id=' . $clientID . '&' .
'client_secret=' . $clientSecret . '&' .
"grant_type=client_credentials";
$url = "https://api.sandbox.paypal.com/v1/oauth2/token";
$headers = array(
'Accept' => 'application/json',
'Accept-Language' => 'en_US',
"grant_type=client_credentials"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERPWD, $clientID . ':' . $clientSecret);
$x = json_decode(curl_exec($ch));
var_dump($x);
this prints:
object(stdClass)#1 (2) { ["error"]=> string(22) "unsupported_grant_type" ["error_description"]=> string(22) "Unsupported grant_type" }
What am I messing up? Any pointers, directives or tips? I've been studying the documentation for three days now, but it's very dry, and no good tutorials seem to exist. Thanks.
I'm not sure why, and I'd still accept any answer that can explain why, but replacing json_encode($data)
with "grant_type=client_credentials"
fixed my problem. I guess I'm still confused about JSON, because it appears to work without that.
It's now giving the answer it is supposed to give. I'll be back in a couple days when I'm incredibly confused again ;) the paypal API sucks.