【问题标题】:Curl responds with empty string. How to get more information?带有空字符串的卷曲响应。如何获取更多信息?
【发布时间】:2016-07-06 09:03:32
【问题描述】:

我的行为很奇怪,我不知道如何获得有关正在发生的事情的更多信息...

我正在使用带有 NVP API 的 Paypal Express Checkout。基本上,我发送一个请求,Paypal 回复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.

【问题讨论】:

    标签: php curl paypal


    【解决方案1】:

    在 CURL 中启用详细模式...

    curl_setopt($curl, CURLOPT_VERBOSE, true);
    

    ...看看正在传输/接收的数据

    【讨论】:

    • 我只是幸运地解决了我的问题:PAYMENTREQUEST_0_ITEMAMT = 中的等号前有一个空格。我认为它使 curl 崩溃但不是浏览器。无论如何,我的问题是“如何获得更多细节”,你完美地回答了这个问题。谢谢!
    • 对,CURL 不喜欢 url 中的空格,空格后面的文本会被解析为另一个命令行参数)
    猜你喜欢
    • 2013-03-21
    • 2018-11-30
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多