【问题标题】:Capture Paypal payment using curl php使用 curl php 捕获 Paypal 付款
【发布时间】:2016-12-12 11:18:46
【问题描述】:
curl 'https://api.paypal.com/v1/payments/authorization/4TD55050SV609544L/capture' \
-H "Content-Type: application/json" \
-H "Paypal-Application-Correlation-Id: c2edbd6e97b14ff2b19ddb8eec9d264c" \
-H "Authorization: Bearer WfXdnxmyJtdF4q59ofxuQuAAk6eEV-Njm6puht3Nk3w" \
-d '{
   "amount":{
      "currency":"USD",
      "total":"1.50"
   },
   "is_final_capture":true
}'

我需要使用curl 功能来实现它,但我在 PHP 上没有得到任何响应。

我就是这样做的。但我没有得到任何回应。我不想使用 sdk 必须使用 curl 来做到这一点。

     $data = array(
    "amount" => array(
        "currency" => "USD",
        "total" => $amount
    ),
    "is_final_capture" => "true"
);

$data_string = json_encode($data);
$ch = curl_init( "https://api.paypal.com/v1/payments/authorization/$auth_id/capture" );        

curl_setopt_array( $ch, array(
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($data_string),
            'Authorization: Bearer ' . $access_token 

//
), CURLOPT_POSTFIELDS => $data_string, CURLOPT_RETURNTRANSFER => 真 ) );

$result = curl_exec( $ch );  
var_dump($result); die;   

【问题讨论】:

  • 你做错了,对于 -d 数据,使用 CURLOPT_INFILE ,做一个 POST 请求,不要使用 CUSTOMREQEST,使用 CURLOPT_POST
  • 知道不赞成票的内容是什么

标签: php curl paypal cakephp-2.3


【解决方案1】:

首先,不要将 CURLOPT_CUSTOMREQEST ​​用于 POST,使用 CURLOPT_POST。 第二,在您的 curl 命令行中,您向 paypal 发送 JSON,但在 php 中,您向 CURLOPT_POSTFIELDS 发送无效字符串并且......可能会出现未定义的行为(使用 http_build_query 作为 POSTFIELDS,而不是 json_encode)。要在 PHP 的 curl 中发送 json 请求正文,请使用 CURLOPT_INFILE,如下所示:

<?php 
$postdata='{
   "amount":{
      "currency":"USD",
      "total":"1.50"
   },
   "is_final_capture":true
}';
$postdatafileh=tmpfile();
fwrite($postdatafileh,$postdata);
rewind($postdatafileh);
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>'https://api.paypal.com/v1/payments/authorization/$auth_id/capture',
CURLOPT_HTTPHEADER=>array(
'Content-Type: application/json',
'Paypal-Application-Correlation-Id: foo',
'Authorization: Bearer barbaz',
'Content-Length: '.strlen($postdata)
),
CURLOPT_INFILE=>$postdatafileh,
CURLOPT_INFILESIZE=>strlen($postdata),
CURLOPT_VERBOSE=>true,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_ENCODING=>'',
CURLOPT_POST=>true
));

$ret=curl_exec($ch);
fclose($postdatafileh);
var_dump($ret,curl_errno($ch),curl_error($ch));

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2015-11-11
    • 2021-08-31
    • 2012-10-12
    • 2017-08-17
    • 2012-10-22
    • 2016-03-07
    • 2011-04-21
    相关资源
    最近更新 更多