PHP Curl Post与PayPal的新标题要求

时间:2013-09-23 12:18:08

标签: php curl paypal

我正在使用Paypal为Paypal Payments Pro或Direct Pay提供的PHP示例代码。在Paypal最近的一封电子邮件中,他们说明了

  

从2013年10月7日开始,我们将要求所有传入的请求都具有符合HTTP 1.1规范的“主机”标头。 HTTP 1.0下不需要此标头。使用HTTP 1.0的IPN和PDT脚本可能会在2013年10月7日之后因“HTTP / 1.0 400错误请求”错误而失败,这将导致IPN消息未成功验证,或者PDT脚本无法检索交易信息。

他们给我以下代码作为标题:

$header="POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .="Content-Type: application/x-www-form-urlencoded\r\n";
$header .="Host: www.paypal.com\r\n";
$header .="Connection: close\r\n\r\n";

但是使用CURL,我怎么能通过所有这些?

我知道我可以在一个数组中设置大部分数据并将其放在CURLOPT_HEADER下但是那条第一行呢?

这是我的代码。请帮助我了解如何正确添加新的标头请求。

$curl = curl_init();
        curl_setopt($curl, CURLOPT_VERBOSE, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        curl_setopt($curl, CURLOPT_URL, $api_endpoint);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $nvp_string);

$result = curl_exec($curl);

curl_close($curl);

1 个答案:

答案 0 :(得分:1)

目前标题存储在字符串中。要使用cURL发送自定义标头,您可以curl_setopt使用CURLOPT_HTTPHEADER,如下所示:

curl_setopt($curl, CURLOPT_HTTPHEADER, array(
  "POST /cgi-bin/webscr HTTP/1.1\r\n",
  "Content-Type: application/x-www-form-urlencoded\r\n", 
  "Host: www.paypal.com\r\n",
  "Connection: close\r\n\r\n"
  )
);