如何让PayPal和cURL一起工作?

时间:2010-08-17 20:59:25

标签: php post curl http-headers paypal

背景细节:

我有一个使用PayPal进行付款处理的自定义购物车。我在购物车和PayPal之间有一个中间页面,它将订单添加到数据库并发送确认电子邮件。

到目前为止,我设置了中间页面,将所有必要的数据包含在隐藏的表单字段中,并将表单提交给PayPal onload

现在我正在尝试在PHP中使用cURL将POST数据发送到PayPal。

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr');
//curl_setopt($ch, CURLOPT_URL, 'http://localhost/postecho.php');

   // ^ this one is a simple page that echoes all POST data using print_r

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $poststring);

// Some options that didn't seem to help
//curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);

// User agent spoofing which also didn't seem to help
//$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
//curl_setopt($ch, CURLOPT_USERAGENT, $agent);

$result=curl_exec($ch);
curl_close($ch);

$poststring包含我之前以param1=value&param2=value格式传递的所有POST数据。通过测试页postecho.php运行此操作可以发现POST数据似乎没问题。

问题:

  

“抱歉 - 您的上一个操作无法完成”

当我尝试用cURL方式做事时,这就是PayPal告诉我的。它并没有真正给我任何有关解决这个问题的有用信息。我认为标题中有些东西或者它不喜欢的东西。如何让PayPal和cURL一起工作?

2 个答案:

答案 0 :(得分:1)

很可能你缺少cookie /会话数据。如果我是你,我会捕获从您的浏览器到paypal.com的原始http消息。请求工作不需要其中的一些信息,但至少它将包含您需要的所有信息。然后尝试用curl模拟它。

长答案简短:首先捕获原始http消息,然后用curl模拟它。

答案 1 :(得分:0)