2014-01-21 4 views

ответ

0

Я много боролся с этой проблемой и, наконец, нашел решение, поэтому хочу поделиться им, если кому-то еще это нужно.

Вопрос: Как получить информацию о заказе с помощью TOKEN?

Добавьте эту функцию:

function PPHttpPost($methodName_, $nvpStr_) { 
     $environment = 'sandbox'; // or 'beta-sandbox' or 'live' 

     // Set up your API credentials, PayPal end point, and API version. 
     $API_UserName = urlencode('xxxxxxxxxx'); 
     $API_Password = urlencode('xxxxxxxxxx'); 
     $API_Signature = urlencode('xxxxxxxxxx'); 
     $API_Endpoint = "https://api-3t.paypal.com/nvp"; 
     if("sandbox" === $environment || "beta-sandbox" === $environment) { 
     $API_Endpoint = "https://api-3t.$environment.paypal.com/nvp"; 
     } 
     $version = urlencode('85.0'); 

     // Set the curl parameters. 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $API_Endpoint); 
     curl_setopt($ch, CURLOPT_VERBOSE, 1); 

     // Turn off the server and peer verification (TrustManager Concept). 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_POST, 1); 

     // Set the API operation, version, and API signature in the request. 
     $nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_"; 

     // Set the request as a POST FIELD for curl. 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq); 

     // Get response from the server. 
     $httpResponse = curl_exec($ch); 

     if(!$httpResponse) { 
     exit('$methodName_ failed: '.curl_error($ch).'('.curl_errno($ch).')'); 
     } 

     // Extract the response details. 
     $httpResponseAr = explode("&", $httpResponse); 

     $httpParsedResponseAr = array(); 
     foreach ($httpResponseAr as $i => $value) { 
     $tmpAr = explode("=", $value); 
     if(sizeof($tmpAr) > 1) { 
      $httpParsedResponseAr[$tmpAr[0]] = $tmpAr[1]; 
     } 
     } 

     if((0 == sizeof($httpParsedResponseAr)) || !array_key_exists('ACK', $httpParsedResponseAr)) { 
     exit("Invalid HTTP Response for POST request($nvpreq) to $API_Endpoint."); 
     } 

     return $httpParsedResponseAr; 
    } 

и просто сделать вызов этой функции:

// Set request-specific fields. 
$token = urlencode(htmlspecialchars($data['TOKEN'])); //$data['TOKEN'] is token 
// Add request-specific fields to the request string. 
$nvpStr = "&TOKEN=$token"; 
$httpParsedResponseAr = $this->PPHttpPost('GetExpressCheckoutDetails', $nvpStr); 
print_r($httpParsedResponseAr); // will hold all details such as shipping address, country... 

дополнительно вы можете добавить чек, если платеж был успешным:

if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])) { .. } 

reference

 Смежные вопросы

  • Нет связанных вопросов^_^