【问题标题】:IPN invalid live but not in sandboxIPN 无效,但不在沙盒中
【发布时间】:2015-09-12 23:47:44
【问题描述】:

我知道这个问题被问了很多,我可能已经看到了与这个问题相关的所有问题,但似乎没有一个可以解决我的问题。基本上,当我在沙箱中运行我的代码时,它可以工作,但不能实时运行。这里是:

<?php

class Paypal_IPN
{

    /** @var string $_url The paypal url to go through cURL
    $private $_url;
    /**
    * @param string $mode 'live' or 'sandbox'
    */

    public function __construct($mode = 'live') 
    {
        if ($mode == 'live')
        $this->_url = 'https://www.paypal.com/cgi-bin/webscr';

        else 
        $this->_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    }

    public function run()
    {
        $postFields = 'cmd=_notify-validate';

        foreach ($_POST as $key => $value) {

            if(function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()){  
                $varvalue = urlencode(stripslashes($varvalue)); 
            }
            else { 
                $value = urlencode($value); 
            } 
            $postFields .= "&$key=$varvalue"; 
        }

        $ch = curl_init();

        curl_setopt_array($ch, array(
            CURLOPT_URL => 'https://www.paypal.com/cgi-bin/webscr',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $postFields
            ));

        $result = curl_exec($ch);
        curl_close($ch); 

        $price = $_POST['mc_gross'];


         if ($result == 'VERIFIED') {

            try 
                            {
                                $bdd = new PDO('mysql:host=HOST;dbname=DBNAME', 'LOGIN', 'PASS');

                            } catch(PDOexception $e)
                            {
                                echo "erreur";
                            }   



                            $bdd->exec("UPDATE users SET price='$price' WHERE pseudo='CUSTOMER'");

         } else {
    // IPN invalid, log for manual investigation
    echo "The response from IPN was: <b>" .$result ."</b>";

         }

    }
}

 ?>

是的,每次我进入运行此代码的确认页面时:

<?php
    require 'ipn.php';
    $paypal = new Paypal_IPN();
    $paypal->run();
?>

我收到此错误:IPN 的响应是:无效

我在我的 paypal 帐户中输入了正确的 IPN 文件 URL。我真的看不出我做错了什么。你们能帮帮我吗?

谢谢!

【问题讨论】:

  • 您可以尝试登录 $_POST 和 $postFields 来比较这两个数据。 PayPal 要求两者相同。此外,请确保您正在回发到正确的端点。
  • 嗯,我可能听起来像个初学者(我就是),但我该怎么做呢? :x

标签: paypal paypal-ipn paypal-sandbox


【解决方案1】:

在公共函数中,运行else 语句:

$value = urlencode($value);

应该阅读:

$varvalue = urlencode($value);

【讨论】:

    猜你喜欢
    • 2013-01-11
    • 2010-12-01
    • 2012-08-25
    • 2011-09-07
    • 2013-07-17
    • 2015-11-25
    • 1970-01-01
    • 2011-01-19
    • 2014-06-07
    相关资源
    最近更新 更多