2013-09-06 11 views
0

Я пытаюсь осуществить оплату PayPal в теме Wordpress. Я получаю токен, создаю оплату, перенаправляю пользователя на ссылку утверждения, получаю aproval от пользователя, но по какой-то причине я не могу выполнить платеж «Ответ на завиток пуст».paypal rest api выполнить ошибку

Вот код (i double checked выполнить URL и маркер, и они правильны)

if (isset($_GET['token']) && isset($_GET['PayerID'])){ 
    $received_token  = sanitize_text_field ($_GET['token']); 
    $received_payerId = sanitize_text_field ($_GET['PayerID']); 
    $execute_urls  = get_option('paypal_processing'); 
    $payment_execute_url= $execute_urls[$current_user->ID]; 
    $execute_urls[$current_user->ID] = ''; 
    update_option('paypal_processing',$execute_urls); 

    $payment_execute = array(
    'payer_id' => $received_payerId 
     ); 
    $json = json_encode($payment_execute); 

    $json_resp = make_post_call($payment_execute_url, $json,$received_token); 
    print_r($json_resp); 
    echo "Payment Execute processed " . $json_resp['id'] ." with state '". $json_resp['state']."'"; 
    } 





function make_post_call($url, $postdata,$token) { 
    $curl = curl_init($url); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
      'Authorization: Bearer '.$token, 
      'Accept: application/json', 
      'Content-Type: application/json' 
      )); 

    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); 
    #curl_setopt($curl, CURLOPT_VERBOSE, TRUE); 
    $response = curl_exec($curl); 
    if (empty($response)) { 
     // some kind of an error happened 
      print 'curl error'; 
     curl_close($curl); // close cURL handler 
    } else { 
    $info = curl_getinfo($curl); 
     // echo "Time took: " . $info['total_time']*1000 . "ms\n"; 
    curl_close($curl); // close cURL handler 
    if($info['http_code'] != 200 && $info['http_code'] != 201) { 
     //echo "Received error: " . $info['http_code']. "\n"; 
     //echo "Raw response:".$response."\n"; 
     exit('paypal error'); 
    } 
    } 

    // Convert the result from JSON format to a PHP array 
    $jsonResponse = json_decode($response, TRUE); 
    return $jsonResponse; 
    } 
+0

Пожалуйста, проверьте этот ответ, http: // st ackoverflow.com/questions/15651716/paypal-rest-api-for-payments-returns-null-in-the-sandbox Его похоже на вопрос, который вы задали. – lib4

+0

Какая информация дает вам вербальный переключатель curl? Любые заголовки ответов? Можете ли вы опубликовать URL-адрес выполнения? – aydiv

+0

@lib 4 - в этой ситуации не хватает заголовков, которые я установил. Thx для ответа – Crerem

ответ

2

, когда вы вернетесь из утверждения URL, ранее сохраненной информации маркеров и выполнения URL теряется. он становится пустым. Вам нужно либо сохранить ее в таблицу cookie или базу данных и получить ее, когда вы вернетесь на свой сайт для выполнения