【问题标题】:paypal ipn problem, url malformed (sandbox works, paypal doesn't)贝宝 ipn 问题,网址格式错误(沙盒有效,贝宝无效)
【发布时间】:2011-11-24 03:59:27
【问题描述】:

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

这是实时付款的错误:

bool(false) string(15) " malformed" 

这是我的 curl 代码:

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 格式错误”不会响起任何铃声作为错误消息。
  • 如果您仔细阅读,它就在代码上方!
  • 道歉;我之前错过了。我运行了您的示例,它按预期返回了“无效”。虽然我有点困惑为什么你会得到“格式错误”,而不是“$paymentaction 格式错误”。看看bugs.php.net/bug.php?id=47717 以及
  • 这可能与服务器有关吗?我在客户端服务器和我自己的服务器上都有这个问题,但在我身边公司的服务器上它可以正常工作
  • 在阅读了错误之后,我认为是这样。在任一位置是否有(透明)代理?三台服务器上的 PHP 版本是什么?

标签: php paypal sandbox paypal-ipn


【解决方案1】:

听起来您可能正在将沙盒交易发布到实时 URL 或其他方式。确保当您尝试实时交易时,您使用的是真实的实时 PayPal 帐户。仔细检查您的代码,以确保您的 PayPal URL 测试正常工作。

【讨论】:

  • 感谢您的帮助,错误是......我只想说我现在真的很愚蠢
【解决方案2】:

问题不在于贝宝或沙盒,而只是我很愚蠢。我有以下 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 else:

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

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2012-04-10
    • 2012-10-13
    • 2012-02-22
    • 2012-11-23
    • 2015-07-17
    • 2016-04-17
    • 2012-07-22
    • 2013-03-31
    相关资源
    最近更新 更多