2016-07-06 54 views
0

我得到一個很奇怪的行爲,我不知道如何獲得有關正在發生的更多信息...Curl以空字符串響應。如何獲得更多信息?

我使用Paypal Express Checkout與NVP API。基本上,我發送一個請求和貝寶迴應key1=value1&key2=value2...

我發送第一個請求curl,一切都很好。

然後我用curl發送下一個請求,但是$result是空的。但奇怪的是,如果我打印$paypal_url並將其複製/粘貼到瀏覽器中,我會得到正確的回覆。

所以似乎curl沒有發送請求,但我不明白爲什麼。我怎樣才能窺探curl和Paypal之間的交流?或者我怎樣才能獲得更多關於發生了什麼的信息?

謝謝!

//First request (fine) : Get Paypal Checkout Details 
$paypal_url = $url."?VERSION=204.0&USER=".$user."&PWD=".$pwd."&SIGNATURE=".$signature."&METHOD=GetExpressCheckoutDetails&TOKEN=".$token; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $paypal_url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_COOKIESESSION, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
$result = curl_exec($curl); 
curl_close($curl); 

//parse the result 
parse_str($result); 

//Check data integrity (nothing relevant) 
if($ACK!="Success" || $token!=$TOKEN || $amount!=$PAYMENTREQUEST_0_AMT || $currency!=$PAYMENTREQUEST_0_CURRENCYCODE) { 
    header("HTTP/1.0 402 Payment Required"); 
    die("Couldn't realize the payment checkout : ".$ACK." ".$TOKEN." required: ".$PAYMENTREQUEST_0_AMT." ".$PAYMENTREQUEST_0_CURRENCYCODE."<br/>".$token." payed : ".$amount." ".$currency); 
} 

//Second request : Do Paypal checkout 
$paypal_url = $url; 
$paypal_url .= "?VERSION=204.0"; 
$paypal_url .= "&USER=".$user; 
$paypal_url .= "&PWD=".$pwd; 
$paypal_url .= "&SIGNATURE=".$signature; 
$paypal_url .= "&METHOD=DoExpressCheckoutPayment"; 
$paypal_url .= "&TOKEN=".$token; 
$paypal_url .= "&PAYERID=".$payerid; 
$paypal_url .= "&PAYMENTREQUEST_0_PAYMENTACTION=Sale"; 
$paypal_url .= "&PAYMENTREQUEST_0_AMT=".$amount; 
$paypal_url .= "&PAYMENTREQUEST_0_CURRENCYCODE=".$currency; 
$paypal_url .= "&PAYMENTREQUEST_0_ITEMAMT =".$amount; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $paypal_url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_COOKIESESSION, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
$result = curl_exec($curl); 
curl_close($curl); 

//Display the URL and the result... But the result is missing ! 
die($paypal_url."\n".$result); 

//If I now copy/paste the content of $paypal_url into a browser, I get the expected result. 

回答

1

啓用捲曲詳細模式...

curl_setopt($curl, CURLOPT_VERBOSE, true); 

...並看看數據被髮送/接收

+0

我只是幸運地解決了我的問題:有一個空格等於PAYMENTREQUEST_0_ITEMAMT =之前。我認爲它使捲曲崩潰,但不是瀏覽器。無論如何,我的問題是「如何獲得更多細節」,你完全可以回答這個問題。謝謝 ! – Sharcoux

+0

對,CURL不喜歡url中的空格,接下來的空格被解析爲另一個命令行參數) –