2013-03-31 10 views
21

Próbuję "pierwszego połączenia" zgodnie z dokumentacją API Paypal. Jest to przykład pod warunkiem, że mam następujący:Paypal API z PHP i cURL

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" 

Mam skonstruował curl instancji w PHP z wszystkich powyższych nagłówków oprócz ostatniego. Co oznacza flaga -d przekształcona jako opcja zwijania w PHP? Tam jest mało wyjaśnień, o ile mogę powiedzieć. Udało mi się wydedukować -u jako CURLOPT_USERPWD.

Odpowiedz

65

Mając dobry trałowanie, połączyłem części od deweloperów z innymi problemami. I z powodzeniem zyskał mój token dostępu za pomocą następującego kodu:

<?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); 

?> 
+1

Niestety, wygląda na to, że Paypal usunął próbki zwijania interfejsu REST API z Github. –

+1

To jest idealne uratowało mi życie. –

+1

Tnkx kolego uratowałeś mój czas i życie również –

2

punkt @Lee właściwy sposób, ale jeśli u używasz starej wersji php i to przyzwyczajenie praca. Ale wersja Lee nie wyświetli błędu. Użyj ich zamiast tego, dodam tylko część błędu, aby zobaczyć, co się dzieje.

$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; 
} 

Jeśli u mają i stara wersja PHP jest posible to przyzwyczajenie praca i pokaże ten błąd:

cURL Error #:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure 

Wystarczy przepełnienie stosu je! Here they discuss the problem

+0

Prawdopodobnie powinieneś zaproponować zmianę. Zaktualizuję moją odpowiedź, aby wziąć pod uwagę obsługę błędów. – Lee

+0

Masz rację, edytuj – Catluc