Php 如何让PayPal和cURL一起工作? 背景资料:

Php 如何让PayPal和cURL一起工作? 背景资料:,php,post,curl,http-headers,paypal,Php,Post,Curl,Http Headers,Paypal,我有一个自定义购物车,使用贝宝进行支付处理。我在购物车和PayPal之间有一个中间页面,用于将订单添加到数据库并发送确认电子邮件 到目前为止,我已经设置了中间页面,将所有必要的数据作为隐藏表单字段,并将表单提交给PayPalonload 现在我正在尝试在PHP中使用cURL将POST数据发送到PayPal $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr'); //curl_

我有一个自定义购物车,使用贝宝进行支付处理。我在购物车和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¶m2=value
格式传递的所有POST数据。在测试页面
postecho.php
中运行此测试,可以发现POST数据似乎没有问题

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


这就是PayPal告诉我的,当我尝试用这种方式做事时。关于这个问题的解决,它并没有给我任何有用的信息。我想标题里肯定有什么东西,或者它不喜欢的东西。如何使PayPal和cURL协同工作?

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


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

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


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

您检查过PHP的API文档了吗


您检查过PHP的API文档了吗


是我正在使用的。当作为正常表单提交时,它可以很好地处理相同的POST数据。这就是我用的。当作为一个普通表单提交时,它可以很好地处理同样精确的POST数据。我真的不应该在我准备离开工作的时候发布它。我会给你回电话的+我真的不应该在我准备离开工作的时候发布这篇文章。我会给你回电话的+不过我还是想提出一个很好的建议。