paypal rest api执行错误

Posted

技术标签:

【中文标题】paypal rest api执行错误【英文标题】:paypal rest api execute error 【发布时间】:2013-09-10 09:42:12 【问题描述】:

我正在尝试在 Wordpress 主题中实现 PayPal 付款。 我获得令牌,创建付款,将用户重定向到批准链接,从用户那里获得批准,但由于某种原因我无法执行付款” curl 响应为空。

这是代码(我仔细检查了执行 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;
     

【问题讨论】:

请检查这个答案,***.com/questions/15651716/… 它类似于你提出的问题。 curl 详细开关给你什么信息?任何响应标头?可以发一下执行地址吗? @lib 4 - 这种情况导致缺少标题 - 我已经设置了。谢谢回答 @adyv curl 没有响应,这是执行 url api.sandbox.paypal.com/v1/payments/payment/… 【参考方案1】:

当你从approval url返回时,之前存储的token和execute url的信息就丢失了。它变成空的。您需要将其存储在 cookie 或数据库表中,并在您返回站点执行时检索它

【讨论】:

以上是关于paypal rest api执行错误的主要内容,如果未能解决你的问题,请参考以下文章

PayPal REST API - RATE LIMIT REACHED 错误

使用 REST api 执行 PayPal 付款

PayPal Rest API - 使用更新的交易信息执行付款

如何在使用 PayPal rest API 执行付款之前更改运费

Google Apps 脚本中的 PayPal REST API 错误 400

paypal Java Rest API 在付款执行前获取运输信息