проблема с PayPal IPN, неправильный URL (песочница работает, PayPal нет) - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть файл IPN, который отлично работает в песочнице.Возвращает действительный или нет и выполняет код правильно.Однако, если я пробую реальные платежи в реальном времени, он говорит мне, что URL искажен

Это ошибка с живыми платежами:

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);

Ответы [ 2 ]

0 голосов
/ 02 октября 2011

Проблема была не в 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($testmode === true)
    {
        $paypalaction = "https://www.sandbox.paypal.com/cgi-bin/webscr";
    }
    else
    {
        $paypalaction = "https://www.paypal.com/cgi-bin/webscr";
    }
0 голосов
/ 29 сентября 2011

Похоже, что вы, возможно, публикуете транзакции в песочнице на действующий URL или наоборот.Удостоверьтесь, что когда вы пытаетесь совершить живую транзакцию, вы делаете это с реальной, действующей учетной записью PayPal.Дважды проверьте свой код, чтобы убедиться, что ваш тест, для которого URL PayPal работает правильно.

...