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

时间:2014-07-07 17:37:08

标签: php curl paypal

有人可以帮我转换为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请求之前验证了这些会话变量的值。

1 个答案:

答案 0 :(得分:0)

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