2013-05-09 28 views
12

Próbuję ustawić interfejs API z procesorem płatności. Poniżej znajduje się kod, który mi dostarczyli. W zmiennej $ result są pewne informacje, których potrzebuję, czego nie rozumiem, jaki typ zmiennej to "$ result" i jak mogę pobrać z niej określone dane. wydrukowanie wyniku $ pokazuje "Identyfikator transakcji to: status xxxx jest ZAAKCEPTOWANY". To, czego chcę, to wziąć tylko identyfikator transakcji i zapisać go w zmiennej.PHP, CURL. Co zwróci curl_exec?

foreach($_POST as $k=>$v) $$k=urldecode($v); 
$urladdress = "https://example.com/accapi/process.php"; 
$api_id = "dddd"; 
$api_pwd = "yyyyy"; 
$api_pwd = md5($api_pwd.'s+E_a*'); 
$data = "user=".$user. "&testmode=".$testmode."&api_id=".$api_id. "&api_pwd=".$api_pwd."&amount=".$amount."&paycurrency=".$currency."&comments=".$comments."&fee=".$fee."&udf1=".$udf1; 
// Call STP API 

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"$urladdress"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); //use this to suppress output 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);// tell cURL to graciously accept an SSL certificate 
$result = curl_exec ($ch) or die(curl_error($ch)); 
echo $result; 
echo curl_error($ch); 
curl_close ($ch); 

Dziękuję za pomoc

+12

* WAŻNE * Powinieneś zmienić hasła teraz, gdy je opublikowałeś. –

Odpowiedz

40

od manual:

Zwraca TRUE w przypadku powodzenia, FALSE w przypadku porażki. Jeśli jednak ustawiona jest opcja CURLOPT_RETURNTRANSFER, zwróci wynik po pomyślnym zakończeniu, FALSE w przypadku niepowodzenia.

W kodzie faktycznie zawiera linię:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

co oznacza, że ​​isset CURLOPT_RETURNTRANSFER opcja, zwróci albo łańcuch lub FALSE w przypadku błędu. Twój kod sprawdzania błędów powinien więc wyglądać następująco:

$result = curl_exec ($ch); 
if($result === FALSE) { 
    die(curl_error($ch)); 
} 
+1

Och, widzę, że zwraca ciąg znaków na sukces. Dziękuję bardzo !, więc wszystko, co muszę zrobić, to użyć funkcji ciągów do oddzielenia identyfikatora transakcji? – shadyhossin

+1

"Z PHP 5.1.3 ta opcja nie ma zastosowania: surowe dane wyjściowe będą zawsze zwracane, gdy użyty zostanie CURLOPT_RETURNTRANSFER". – Mawg