繁体   English   中英

贝宝(Paypal)IPN问题,网址格式错误(沙盒有效,贝宝(Paypal)无效)

[英]paypal ipn problem, url malformed (sandbox works, paypal doesn't)

我有一个IPN文件,可以在沙箱中完美运行。 它返回有效与否并正确执行代码。 但是,如果我尝试真实的实时付款,则会告诉我网址格式错误

这是实时付款的错误:

bool(false) string(15) " malformed" 

这是我的卷曲代码:

if($testmode === true)
{
    $paypalaction = "https://www.sandbox.paypal.com/cgi-bin/webscr";
}
elseif($paypal == "paypal")
{
    $paypalaction = "https://www.paypal.com/cgi-bin/webscr";
}
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
{
   // If magic quotes is enabled strip slashes
   if (get_magic_quotes_gpc())
   {
       $_POST[$key] = stripslashes($value);
       $value = stripslashes($value);
   }
   $value = urlencode($value);
   // Add the value to the request parameter
   $req .= "&$key=$value";
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$paypalaction); 
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
$res = curl_exec($ch);
var_dump($res);
var_dump(curl_error($ch));
curl_close($ch);

听起来您可能正在将沙箱事务发布到实时URL或以其他方式发布。 确保当您尝试实时交易时,您是使用真实的实时PayPal帐户进行的。 仔细检查您的代码,以确保针对其贝宝URL的测试正常运行。

问题不在于贝宝或沙盒,而在于我很愚蠢。 我有以下if语句:

if($testmode === true)
{
    $paypalaction = "https://www.sandbox.paypal.com/cgi-bin/webscr";
}
elseif($paypal == "paypal")
{
    $paypalaction = "https://www.paypal.com/cgi-bin/webscr";
}

但是$paypal变量已不再使用,因此它从未输入elseif语句。 如果没有的话,我应该只是一个例子:

if($testmode === true)
    {
        $paypalaction = "https://www.sandbox.paypal.com/cgi-bin/webscr";
    }
    else
    {
        $paypalaction = "https://www.paypal.com/cgi-bin/webscr";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM