J'essaie "le premier appel" comme indiqué dans la documentation de l'API Paypal. Voici l'exemple à condition que je suive:
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"
J'ai construit une instance curl en PHP avec tous les en-têtes ci-dessus à part le dernier. Que fait un -d
flag convertir en option curl en PHP? Autant que je sache, il y a peu d'explications. J'ai réussi à déduire -u
comme CURLOPT_USERPWD
.
Ayant un bon chalut, j'ai reconstitué des pièces de développeurs avec d'autres problèmes. J'ai réussi à obtenir mon jeton d'accès en utilisant le code suivant:
<?php
$ch = curl_init();
$clientId = "myId";
$secret = "mySecret";
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.Paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$result = curl_exec($ch);
if(empty($result))die("Error: No response.");
else
{
$json = json_decode($result);
print_r($json->access_token);
}
curl_close($ch);
?>
@Lee pointe dans le bon sens, mais si vous utilisez une ancienne version php, cela ne fonctionnera pas. Mais la version Lee ne montrera pas l'erreur. Utilisez-les à la place, j'ajoute seulement la partie erreur pour voir ce qui se passe.
$ch = curl_init();
$clientId = "";
$secret = "";
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.Paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$result = curl_exec($ch);
$err = curl_error($ch);
$access_token="";
if ($err) {
echo "cURL Error #:" . $err;
}
else
{
$json = json_decode($result);
// print_r($json->access_token);
$access_token = $json->access_token;
}
Si vous avez une ancienne version PHP c'est possible, cela ne fonctionnera pas et cela affichera cette erreur:
cURL Error #:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Il suffit de le déborder! Ici, ils discutent du problème