我有一个在沙盒中完美运行的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);
答案 0 :(得分:0)
听起来您可能正在将沙盒交易发布到实时网址,或者反过来。确保在您尝试实时交易时,您使用的是真实的PayPal真实账户。仔细检查您的代码,以确保您对哪个PayPal网址正常运行的测试。
答案 1 :(得分:0)
问题不在于paypal或沙盒,而在于我只是愚蠢。我有以下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";
}