我正在使用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);
答案 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"
)
);