2016-07-06 2 views
0

나는 아주 이상한 행동을하고 있는데 무슨 일이 일어나고 있는지에 대해 더 많은 정보를 얻는 방법을 모릅니다 ...컬은 빈 문자열로 응답합니다. 더 많은 정보를 얻는 방법?

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. 

답변

1

CURL에서 자세한 정보 표시 모드를 사용 ...

curl_setopt($curl, CURLOPT_VERBOSE, true); 

... 데이터를 살펴가 전송되는 한이/난 그냥 운이 좋게 내 문제를 해결

+0

을 받았다 PAYMENTREQUEST_0_ITEMAMT =에있는 동등 자의 앞에. 나는 그것이 컬이 추락했지만 브라우저가 아닌 것으로 생각한다. 어쨌든 제 질문은 "자세한 내용을 얻는 방법"이었습니다. 감사 ! – Sharcoux

+0

맞습니다. CURL은 URL의 공백을 좋아하지 않습니다. 공백 다음의 텍스트는 다른 명령 줄 매개 변수로 파싱됩니다. –

관련 문제