2017-02-10 73 views
0

我正嘗試使用PayPal NVP API構建自定義會計報告,該報告將獲取特定日期範圍內的所有交易。PayPal NVP API - TransactionSearch錯誤10001超時處理請求

我的代碼:

$headers   = array(
    'USER'    => $production_user, 
    'PWD'    => $production_pass, 
    'SIGNATURE'   => $production_sig 
); 

$nvp    = array(
    'METHOD'   => 'TransactionSearch', 
    'TRANSACTIONCLASS' => 'RECEIVED', 
    'STARTDATE'   => '2016-12-01T00:00:00Z', 
    'ENDDATE'   => '2016-12-31T00:00:00Z' 
); 

$request_url  = "https://api-3t.paypal.com/nvp?".http_build_query($nvp); 

$curl = curl_init($request_url); 
curl_setopt($curl, CURLOPT_FAILONERROR, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_HEADER, $headers); 
curl_setopt($curl, CURLOPT_POST, 1); 
$result = curl_exec($curl); 

$result = explode("&", $result); 

foreach($result as $f=>$v){ 
    $t = explode("=", $v); 
    echo $t[0]." => ".urldecode($t[1]); 
    echo "<br>"; 
} 

這裏是獲取打印:

HTTP/1.1 200 OK Date: Fri, 10 Feb 2017 19:51:20 GMT Server: Apache X-PAYPAL-OPERATION-NAME: X-PAYPAL-API-RC: 10001 Connection: close Cache-Control: max-age => 0, no-cache, no-store, must-revalidate Pragma: no-cache HTTP_X_PP_AZ_LOCATOR: slcb.slc Paypal-Debug-Id: 484a759b46e4a Set-Cookie: X-PP-SILOVER 

CORRELATIONID => some_random_characters 
ACK => Failure 
L_ERRORCODE0 => 10001 
L_SHORTMESSAGE0 => Internal Error 
L_LONGMESSAGE0 => Timeout processing request 

這個問題的任何援助將不勝感激!

回答

0

您正在使用博文請求,並沒有發佈數據。

我不知道貝寶想看什麼,但我猜這不是你要發送的內容。

有些事情嘗試:

如果您需要通過USER,PWD和簽名請求報頭中做這樣的:

$request = array(); 
$request[] = "USER: $production_user"; 
$request[] = "PWD: $production_pass"; 
$request[] = "SIGNATURE: $production_sig"; 

curl_setopt($ch, CURLOPT_HTTPHEADER, $request); 

如果$ NVP參數需要要發佈數據,請嘗試以下操作:

curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvp); 

$ nvp也可以作爲查詢字符串傳遞到發佈數據中。

$query = http_build_query($nvp); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 

不同之處在於Content-Type。

第一種方法:

Content-Type: application/x-www-form-urlencoded 

第二種方法:

Content-Type: multipart/form-data 

爲了幫助在故障排除這將是很好看的請求和響應頭。

使用這些選項來獲得標題:

curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 

「)curl_getinfo(」請求頭將在

curl_setopt($ch, CURLOPT_HEADER, true); 


$result = curl_exec($ch); 
$info = curl_getinfo($ch); 
var_export($info); 

上面給出了很多的請求的其他信息。如果你只想看到頭:

$request = curl_getinfo($ch, CURLINFO_HEADER_OUT); 

獲得響應頭:

$result = curl_exec($ch); 

$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
$response = substr($result ,0,$skip); 
$result = substr($result ,$skip); 
+0

感謝您徹底響應@Misunderstood!問題是我沒有傳遞任何後期數據。我將USR,PWD和SIG添加到了後字符串中,並且一切都開始工作。 – LukeSkywalker

相關問題