PayPal IPN 到 mysql 数据库不起作用


PayPal IPN to mysql database not working

我正在尝试让我的PayPal自动在MySQL中插入付款。

这是我的表结构:

CREATE TABLE IF NOT EXISTS idevicev2 (
  id int(11) NOT NULL AUTO_INCREMENT,
  transactie_id varchar(60) NOT NULL,
  programma varchar(60) NOT NULL,
  naam varchar(60) NOT NULL,
  email varchar(60) NOT NULL,
  transactie_datum datetime NOT NULL,
  status varchar(60) NOT NULL,
  totaal_bedrag varchar(8) NOT NULL,
  ieverything_else text NOT NULL,
  username varchar(60) NOT NULL,
  password varchar(2) NOT NULL DEFAULT '10',
  active varchar(2) NOT NULL DEFAULT '10',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

这是我用于 IPN 的脚本:

<?php
   //Change these with your information
$paypalmode = ''; //Sandbox for testing or empty ''
$dbusername     = 'myusername'; //db username
$dbpassword     = 'mypassword'; //db password
$dbhost     = 'localhost'; //db host
$dbname     = 'mydbname'; //db name
if($_POST)
{
        if($paypalmode=='sandbox')
        {
            $paypalmode     =   '.sandbox';
        }
    $req = 'cmd=' . urlencode('_notify-validate');
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://www'.$paypalmode.'.paypal.com/cgi-bin/webscr');
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www'.$paypalmode.'.sandbox.paypal.com'));
    $res = curl_exec($ch);
    curl_close($ch);
    if (strcmp ($res, "VERIFIED") == 0)
    {
        $transaction_id = $_POST['txn_id'];
        $username = $_POST['txn_id'];
        $itemname = $_POST['item_name'];
        $firstname = $_POST['first_name'];
        $lastname = $_POST['last_name'];
        $payeremail = $_POST['email'];
        $paymentdate = $_POST['payment_date'];
        $paymentstatus = $_POST['payment_status'];
        $mdate= date('Y-m-d h:i:s',strtotime($paymentdate));
        $mcgross = $_POST['mc_gross'];
        $otherstuff = json_encode($_POST); 
        $conn = mysql_connect($dbhost,$dbusername,$dbpassword);
        if (!$conn)
        {
         die('Could not connect: ' . mysql_error());
        }
        mysql_select_db($dbname, $conn);
        // insert in our IPN record table
        $query = "INSERT INTO idevicev2
        (transactie_id,programma,naam,email,transactie_datum,status,totaal_bedrag,username,ieverything_else)
        VALUES
        ('$transaction_id','$itemname','$firstname $lastname','$payeremail','$mdate','$paymentstatus','$mcgross','$username','$otherstuff')";
        if(!mysql_query($query))
        {
            //mysql error..!
        }
        mysql_close($conn);
    }

} ?>

现在,当我转到:https://developer.paypal.com/webapps/developer/applications/ipn_simulator 并输入我的IPN URL时,PayPal显示IPN已发送,但我没有在我的MYSQL数据库中获取数据。

我做错了什么?

使其与沙盒帐户一起使用。现在只需将沙盒更改为"

<?php
           //Change these with your information
        $paypalmode = 'sandbox'; //Sandbox for testing or empty ''
        $dbusername     = ''; //db username
        $dbpassword     = ''; //db password
        $dbhost     = ''; //db host
        $dbname     = ''; //db name
    if($_POST)
    {
            if($paypalmode=='sandbox')
            {
                $paypalmode     =   '.sandbox';
            }
            $req = 'cmd=' . urlencode('_notify-validate');
            foreach ($_POST as $key => $value) {
                $value = urlencode(stripslashes($value));
                $req .= "&$key=$value";
            }
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, 'https://www'.$paypalmode.'.paypal.com/cgi-bin/webscr');
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www'.$paypalmode.'.sandbox.paypal.com'));
            $res = curl_exec($ch);
            curl_close($ch);
            if (strcmp ($res, "VERIFIED") == 0)
            {
                $transaction_id = $_POST['txn_id'];
                $payerid = $_POST['payer_id'];
                $firstname = $_POST['first_name'];
                $lastname = $_POST['last_name'];
                $payeremail = $_POST['payer_email'];
                $paymentdate = $_POST['payment_date'];
                $paymentstatus = $_POST['payment_status'];
                $mdate= date('Y-m-d h:i:s',strtotime($paymentdate));
                $otherstuff = json_encode($_POST);
                $conn = mysql_connect($dbhost,$dbusername,$dbpassword);
                if (!$conn)
                {
                 die('Could not connect: ' . mysql_error());
                }
                mysql_select_db($dbname, $conn);
                // insert in our IPN record table
                $query = "INSERT INTO ibn_table
                (transactie_id,koper_id,naam,email,transactie_datum,betalings_status,ieverything_else)
                VALUES
                ('$transaction_id','$payerid','$firstname $lastname','$payeremail','$mdate', '$paymentstatus','$otherstuff')";
                if(!mysql_query($query))
                {
                    //mysql error..!
                }
                mysql_close($conn);
            }
    }
    ?>