请将curl命令行代码转换为PHP curl


Please convert curl command line code to PHP curl

谁能帮我把这个转换成PHP代码:

curl -v https://api.sandbox.paypal.com/v1/payments/payment/PAY-98656197DP057202KKO5NMSY/execute/ '
-H 'Content-Type: application/json' '
-H 'Authorization: Bearer A015-m7XgI9uXtd0g4sckNFH3bEaxrAiFlbTecVe9SSgoX4' '
-d '{ "payer_id" : "XMS2L726YHQQY" }'

这是我目前为止写的:

$post = json_encode(array('payer_id' => Session::get('paypal_PayerID')));
$curl = curl_init('https://api.sandbox.paypal.com/v1/payments/payment/'.Session::get('paypal_id').'/execute/');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: '.Session::get('paypal_token_type').' '.Session::get('paypal_access_token')));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
$html = curl_exec($curl);
$status = curl_getinfo($curl);
curl_close($curl);

我已经在它几个小时,但paypal没有给我相同的反应,(例如,它工作了两次,但大多数时候它返回一个500错误)。

也许我只是在这里失去了它,因为现在是凌晨2点…

在发送curl请求之前,我已经验证了这些会话变量是否有值

我相信curl_setopt调用的顺序在幕后很重要。尝试将CURLOPT_HTTPHEADER调用放在最后。您还可以考虑使用Fiddler或类似的东西来嗅探您的HTTP请求,以便轻松确定是否存在任何有效的差异。