나는 아주 이상한 행동을하고 있는데 무슨 일이 일어나고 있는지에 대해 더 많은 정보를 얻는 방법을 모릅니다 ...컬은 빈 문자열로 응답합니다. 더 많은 정보를 얻는 방법?
NVP API와 함께 Paypal Express Checkout
을 사용하고 있습니다. 기본적으로 요청을 보내면 페이팔에서 응답합니다. key1=value1&key2=value2...
나는 처음으로 요청을 보내면 모든 것이 잘됩니다.
그런 다음 curl을 사용하여 다음 요청을 보내지 만 $result
은 비어 있습니다. 하지만 이상한 점은 $paypal_url
을 인쇄하여 브라우저에 복사/붙여 넣으면 올바른 응답을 얻습니다.
그래서 컬이 요청을 보내지 않는 것 같지만 그 이유는 알 수 없습니다. 컬 (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.
을 받았다 PAYMENTREQUEST_0_ITEMAMT =에있는 동등 자의 앞에. 나는 그것이 컬이 추락했지만 브라우저가 아닌 것으로 생각한다. 어쨌든 제 질문은 "자세한 내용을 얻는 방법"이었습니다. 감사 ! – Sharcoux
맞습니다. CURL은 URL의 공백을 좋아하지 않습니다. 공백 다음의 텍스트는 다른 명령 줄 매개 변수로 파싱됩니다. –