2013-05-09 149 views
12

我正在嘗試使用付款處理器設置API。以下是他們提供給我的代碼。我想要的$ result變量中有一些信息,我不明白什麼類型的變量是'$ result',我如何從中獲取某些數據。打印$結果顯示「事務ID是:xxxx狀態被接受」。我基本想要的是隻取得交易ID並將其存儲在一個變量中。PHP,CURL。 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); 

謝謝您的幫助

+12

*重要*您現在應該更改這些密碼,然後發佈它們。 – 2013-05-09 00:57:23

回答

40

manual

返回TRUE或FALSE的成功失敗。但是,如果設置了CURLOPT_RETURNTRANSFER選項,它將在成功時返回結果,在失敗時返回FALSE。

當你的代碼實際上包含行:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

什麼意思是CURLOPT_RETURNTRANSFER選項isset,它會返回一個字符串或錯誤假。因此,您的錯誤檢查代碼應該如下所示:

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

哦,我明白了,所以它會成功返回一個字符串。非常感謝!因此,我所要做的就是使用字符串函數來分隔事務ID。 – shadyhossin 2013-05-09 01:00:50

+1

「從PHP 5.1.3開始,此選項不起作用:使用CURLOPT_RETURNTRANSFER時始終返回原始輸出」。 – Mawg 2014-05-29 16:47:24