安全标头无效 - 使用 curl php

Posted

技术标签:

【中文标题】安全标头无效 - 使用 curl php【英文标题】:Security header is not valid - using curl php 【发布时间】:2011-03-04 08:35:06 【问题描述】:

我正在使用 php 实现 Express Checkout、Paypal API。

第一步我没有问题:SetExpressCheckout。我有 awk=success。

但在 GetExpressCheckout 方法中,我得到“安全标头无效”。我试图找出问题所在,我想发现可能是卷曲效果不好..

我做了什么,我复制了整个 URL:

https://api-3t.sandbox.paypal.com/nvp?USER=sanbox_1276609583_biz_api1.gmail.com&PWD=1276609589&SIGNATURE=AYVosblmD7khKkvvb.bNxvFT0OQ2A8GopwByEuC.CfMHt65VaUmvAEy-&VERSION=62.0&token=EC-3YG18670X88588437&METHOD=GetExpressCheckoutDetails

并将其粘贴到浏览器。这将导致:

TOKEN=EC%2d3YG18670X88588437&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2010%2d06%2d16T07%3a40%3a12Z&CORRELATIONID=e1a1e469bf066&ACK=成功&VERSION=62%2e0&p>

=1356926...

但是当在我创建的函数中执行该 url 时,它将不起作用。以下是我的功能:

函数 mycurl($url,$querystr)

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_VERBOSE, 1);

  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

  curl_setopt($ch, CURLOPT_POST, 1);

  curl_setopt($ch, CURLOPT_POSTFIELDS, $querystr);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

  $response = curl_exec($ch); 

  curl_close ($ch);

  return $response;

我希望有人能在这方面提供帮助。非常感谢。

注意: - 我为此使用了沙箱。我创建了一个沙盒帐户,我有一个代表商家的企业帐户和一个代表买家的个人帐户。

我用这个:

端点网址:api-3t.sandbox.paypal.com/nvp 沙盒网址:www.sandbox.paypal.com/cgi-bin/webscr

这应该不是问题。

【问题讨论】:

【参考方案1】:

这很可能是范围问题

在函数中,您应该在执行 curl 调用之前将 $querystr 变量写入文件,或者将其打印到屏幕上并确保所有内容都在那里。您很可能正在为您的 $querystr 变量使用函数外部的变量,结果它是空的或缺少部分。

这里有一个例子来说明问题

<?php
$variable = 'bar';
echo $variable;         // prints bar

function myfunc()
    echo $variable;         // prints nothing

function myfunc1()
    global $variable, $variable1, $variable2;
    echo $variable;        // prints bar

?>

更多信息请参见http://us3.php.net/manual/en/language.variables.scope.php

在设置 $response 变量后也添加这一行

echo '<pre>'; print_r($response); echo '</pre>';

您将收到错误代码和长错误消息,请在 paypals 网站上查看这些信息以获取更多信息:[https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_errorcodes]

【讨论】:

以上是关于安全标头无效 - 使用 curl php的主要内容,如果未能解决你的问题,请参考以下文章

安全标头无效

Paypal express checkout 使用 NVP 上线 - “安全标头无效”

错误 100002(安全错误 - 安全标头无效)

安全标头在 PayPal 批量付款中无效

使用 NVP 的 MassPay API 返回“安全标头无效”

Omnipay Paypal Express 结帐错误:安全标头无效