【问题标题】:PayPal NVP API - TransactionSearch Error 10001 Timeout processing requestPayPal NVP API - TransactionSearch 错误 10001 超时处理请求
【发布时间】:2017-02-10 20:26:41
【问题描述】:

我正在尝试使用 PayPal NVP API 构建自定义会计报告,该报告将获取特定日期范围内的所有交易。

我的代码:

$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

对于这个问题的任何帮助将不胜感激!

【问题讨论】:

    标签: php curl paypal paypal-nvp


    【解决方案1】:

    您正在使用发布请求,但尚未发布数据。

    我不知道 PayPal 想看到什么,但我猜这不是您发送的内容。

    一些可以尝试的事情:

    如果您需要在请求标头中传递 USER、PWD 和 SIGNATURE,请执行以下操作:

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

    如果$nvp参数需要post数据,试试这个:

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

    【讨论】:

    • 感谢您的彻底回复@Misunderstood !问题是我没有传递任何帖子数据。我将 USR、PWD 和 SIG 添加回 post 字符串,一切都开始工作了。
    猜你喜欢
    • 2013-02-23
    • 2013-08-20
    • 2012-12-21
    • 2012-12-14
    • 1970-01-01
    • 2016-08-05
    • 2011-05-30
    • 2012-03-23
    • 2016-09-23
    相关资源
    最近更新 更多