安全标头无效 - 使用curl php

时间:2010-06-16 08:18:00

标签: php paypal checkout

我正在使用PHP实现Express Checkout,Paypal API。

第一步我没问题:SetExpressCheckout。我有一个awk =成功。

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

我做了什么,我复制了整个网址:

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&安培; BUILD = 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 个答案:

答案 0 :(得分:0)

这很可能是范围问题

在函数中,您应该在执行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]