IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

IPN INSTALLATION sur script


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut IPN INSTALLATION sur script
    Bonjour,

    j'ai installé ce script qui après modifications fonctionne très bien dans mon site mais j'aimerai avoir une page IPN que je n'ai pas l'impression qui apparait dans ce script que j'ai récupéré.

    https://github.com/sanwebe/PHP-Shopp...press-Checkout

    quelq'un pourrait il me conseiller pour l'installation d'une page ipn avec ce script.

    voici une page ipn que j'avais est-ce qu'elle pourrait s'adpater et elle assez sécurisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <?php
     
    // prépare la requête de vérification
    $req = "cmd=_notify-validate";
     
    // ajoute le message IPN au format NVP à la requête de vérification
    foreach ($_POST as $key => $value) {
      $value = urlencode(stripslashes($value));
      $req .= '&$key=$value';
    }
     
     
    // définition des headers pour la requête de vérification
    $header  = "POST /cgi-bin/webscr HTTP/1.0rn";
     
    // test 
    //$header .= "Host: www.sandbox.paypal.com:443rn";
     
    // production
    $header .= "Host: ipnpb.paypal.com:443rn";      
     
    $header .= "Content-Type: application/x-www-form-urlencodedrn";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
     
     
    // Ouverture du socket
     
    // test
    //$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
     
    // production
    $fp = fsockopen ('ssl://ipnpb.paypal.com', 443, $errno, $errstr, 30);
     
    // s'il y a une erreur lors de l'ouverture du socket
    if (!$fp) {
      // on s'envoie un mail pour être informé de l'erreur
      $msg = 'Erreur de socket, l\'url n\'a pas pu être ouverte';
      mail('payments@monmail.fr', 'erreur socket', $msg);
    }
     
    else {
      // on post la requête de vérification
      fputs ($fp, $header . $req);
     
      // créé une boucle tant qu'on est pas arrivé à la fin du fichier
      while (!feof($fp)) {
        // lit la réponse de paypal
        $res = fgets ($fp, 1024);
     
        // si paypal répond VERIFIED, 
        // tout s'est bien déroulé et on peut procéder à nos traitements
        if (strcmp ($res, 'VERIFIED') == 0) {
          // type de transaction
          // $_POST['txn_type'] 
     
          // mail du compte paypal à qui est destiné le paiement
          // $_POST['receiver_email']
     
          // montant
          // $_POST['mc_gross']
     
          // id de la transaction
          // $_POST['txn_id']
     
          // champ personnalisé
          // $_POST['custom']
        }
     
        // si la transaction est invalide
        else if (strcmp ($res, 'INVALID') == 0) {
          // on s'envoie un mail pour être informé de l'erreur
          $msg = 'Message de l\'IPN : '.$res;
          mail('payments@monmail.fr', 'erreur IPN', $msg);
        }
      }  
     
      fclose ($fp);
    }
    Merci.

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut script IPN paypal ne rempli base mysql
    Bonjour,

    j'ai installé ce script sur mon site une panier php qui fonctionne très bien avec paypal checkout.

    https://github.com/sanwebe/PHP-Shopp...press-Checkout

    J'ai voulu sécuriser le tout avec un fichier IPN et une nouvelle table IPN mais avec le test sendbox la base de donnée ipn ne se rempli pas.

    VOICI mon script ipn:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <?php
    session_start();
    include_once("../config.php");
    include_once("paypal.class.php");
     
           //Change these with your information
        $paypalmode = 'sandbox'; //Sandbox for testing or empty ''
        $dbusername     = 'dbo696868997'; //db username
        $dbpassword     = 'perpignan'; //db password
        $dbhost     = 'db696868997.db.1and1.com'; //db host
        $dbname     = 'db696868997'; //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
                (itransaction_id,ipayerid,iname,iemail,itransaction_date, ipaymentstatus,ieverything_else)
                VALUES
                ('$transaction_id','$payerid','$firstname $lastname','$payeremail','$mdate', '$paymentstatus','$otherstuff')";
     
                if(!mysql_query($query))
                {
                    //mysql error..!
                }
                mysql_close($conn);
     
            }
    }
     
     
     
    // PHPmailer ------------------------------------------------------------------------------------
     
    require 'PHPMailer/PHPMailerAutoload.php';
    //$iemail = $_POST['payer_email'];
    $iemail = 'gaborit.elodie@gmail.com';
    //Create a new PHPMailer instance
    $mail = new PHPMailer;
    //Set who the message is to be sent from
    $mail->setFrom('gaborit.elodie@gmail.com', 'First Last');
    //Set an alternative reply-to address
    $mail->addReplyTo('gaborit.elodie@gmail.com', 'First Last');
    //Set who the message is to be sent to
    $mail->addAddress($iemail);
    //Set the subject line
    $mail->Subject = 'PHPMailer mail() test';
    //Read an HTML message body from an external file, convert referenced images to embedded,
    //convert HTML into a basic plain-text alternative body
    //$mail->msgHTML(file_get_contents('cont.html'), dirname(__FILE__));
    //Replace the plain text body with one created manually
    $mail->Body = 'Hello this is a test message';
    $mail->AltBody = 'This is a plain-text message body';
    //Attach an image file
    //$mail->addAttachment('images/portfolio/service.jpg');
     
    //send the message, check for errors
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
     
    ?>
    voici ma base sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE IF NOT EXISTS ‘ibn_table’ (
    ‘id’ int(11) NOT NULL AUTO_INCREMENT,
    ‘itransaction_id’ varchar(60) NOT NULL,
    ‘ipayerid’ varchar(60) NOT NULL,
    ‘iname’ varchar(60) NOT NULL,
    ‘iemail’ varchar(60) NOT NULL,
    ‘itransaction_date’ datetime NOT NULL,
    ‘ipaymentstatus’ varchar(60) NOT NULL,
    ‘ieverything_else’ text NOT NULL,
    PRIMARY KEY (‘id’)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    et la page que j'ai trouvé pour m'aider la suite du tutoriel transmis en lien :
    https://www.sanwebe.com/2012/07/payp...tification-ipn

    Quelqu'un pourrait-il m'aider c'est important et c'est la 1er fois que j'utilise IPN sandbox ?

    Merci.

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut quand faire l'insertion mysql paiement paypal
    Bonjour,

    je voudrai savoir comment faire mon insertion MYSQL pour enregistrer commande de produits client avec ce script que j'ai installé :

    https://github.com/sanwebe/PHP-Shopp...press-Checkout

    Je vois l'insertion en commentaire sur la page index.php dans le dossier paypal-express-checkout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $insert_row = $mysqli->query("INSERT INTO BuyerTable 
    					(BuyerName,BuyerEmail,TransactionID,ItemName,ItemNumber, ItemAmount,ItemQTY)
    					VALUES ('$buyerName','$buyerEmail','$transactionID','$ItemName',$ItemNumber, $ItemTotalPrice,$ItemQTY)");
     
    					if($insert_row){
    						print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />'; 
    					}else{
    						die('Error : ('. $mysqli->errno .') '. $mysqli->error);
    					}
    J'ai créer un page ipn ou on me dit aussi de faire un update mais je ne comprend pas sur quoi le faire.

    Faut-il faire deux tables différentes ?

    voici la page panier avec le bouton d'achat paypal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <?php
    session_start();
    include_once("config.php");
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Votre commande</title>
    <link href="style/style.css" rel="stylesheet" type="text/css"></head>
    <body>
    <br />
    <div class="bg-view-cart"><br />
    <img src="../images/logo-mini.png">
    <br /><br />
    <h1 align="center">Récapitulatif de votre commmande</h1>
    <br />
    <div class="cart-view-table-back">
    <form method="post" action="cart_update.php">
    <table width="100%"  cellpadding="6" cellspacing="0" border="1px black">
        <thead>
        	<tr><th>Quantité</th><th>Nom</th><th>Prix</th><th>Total</th><th>Supprimer</th></tr>
        </thead>
      <tbody>
     	<?php
    	if(isset($_SESSION["cart_products"])) //check session var
        {
    		$total = 0; //set initial total value
    		$b = 0; //var for zebra stripe table 
    		foreach ($_SESSION["cart_products"] as $cart_itm)
            {
    			//set variables to use in content below
    			$product_name = $cart_itm["product_name"];
    			$product_qty = $cart_itm["product_qty"];
    			$product_price = $cart_itm["product_price"];
    			$product_code = $cart_itm["product_code"];
    			$product_finition = $cart_itm["product_finition"];
    			$product_color = $cart_itm["product_color"];
    			$subtotal = ($product_price * $product_qty); //calculate Price x Qty
     
    		   	$bg_color = ($b++%2==1) ? 'odd' : 'even'; //class for zebra stripe 
    		    echo '<tr class="'.$bg_color.'">';
    			echo '<td><input type="text" size="2" maxlength="2" name="product_qty['.$product_code.']" value="'.$product_qty.'" /></td>';
    			echo '<td>'.$product_name.'</td>';
    			echo '<td>'.$product_price.$currency.'</td>';
    			echo '<td>'.$subtotal.$currency.'</td>';
    			echo '<td><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></td>';
                echo '</tr>';
    			$total = ($total + $subtotal); //add subtotal to total var
     
     
     
     
    		/**calcul frais de port shipping_cost**/
    		$quantite += $product_qty; // nombre de trucs à envoyer
    		$frais_lot = 20; // frais par lot, ici 20
    		$taille_lot = 4; // taille d'un lot, ici 4
    		$nb_lots = ceil($quantite / $taille_lot); // on arrondit à l'entier supérieur, pour avoir le nombre de lots, y compris le dernier
    		$shipping_cost = $frais_lot*$nb_lots;
    		/*$shipping_cost += $frais_lot*$nb_lots;*/
    		$_SESSION['$shipping_cost']=$shipping_cost;
    		}
    		$grand_total = $total + $shipping_cost; //grand total including shipping cost
    		foreach($taxes as $key => $value){ //list and calculate all taxes in array
    				$tax_amount     = round($total * ($value / 100));
    				$tax_item[$key] = $tax_amount;
    				$grand_total    = $grand_total + $tax_amount;  //add tax val to grand total
    		}
     
    		$list_tax       = '';
    		foreach($tax_item as $key => $value){ //List all taxes
    			$list_tax .= $key. ' : ' .sprintf("%01.2f", $value) . $currency.'<br />';
    		}
    		$shipping_cost = ($shipping_cost)?'Frais de livraison : '. sprintf("%01.2f", $shipping_cost).$currency.'<br />':'';
    	}
        ?>
        <tr>
            <td colspan="5">
                <span style="float:right;text-align: right;">
                <?php echo $shipping_cost. $list_tax; ?>Montant commande : <?php echo sprintf("%01.2f", $grand_total) .$currency?>
                </span>
            </td>
        </tr>
        <tr>
            <td colspan="5">
                <a href="index.php" class="button">Ajouter plus d'articles</a>
                <button type="submit" style="padding:9px;">Mettre à jour le panier</button>
                <a href="paypal-express-checkout" ><img src="../images/btn_pay_with_paypal.png" width="179" height="36"></a>
            </td>
        </tr>
      </tbody>
    </table>
     
     
    <input type="hidden" name="return_url" value="<?php 
    $current_url = urlencode($url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    echo $current_url; ?>" />
    </form>
    </div>
    </div>
     
     
    </body>
    </html>
    Et comme c'est un panier multiple comment l'insérer dans la base MYSQL ?



    Merci pour votre aide et vos idées.

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut Conseil, déroulement paiement avec insertion mysql
    Bonjour,

    merci je vais modificer cela est ce que quelqu'un s'y connait en paypal et puisse m'eclarai j'utilise :

    https://github.com/sanwebe/PHP-Shopp...press-Checkout

    mais dans ce système que j'ai installé j'ai créer une page IPN que je vous joins mais ma 1er question

    1/ dans leur systeme actuel ou tout retombe sur la page index.php qui se trouver dans le dossier paypal-express-checkout est-ce necessaire ?

    2/
    Je souhaite envoyer un email et enregistrer dans la base sachant que le panier peut avoir de multiple produits je ne sais pas comment rentrer en multiple dans une base mysql

    J'ai créer 3 tables client, panier, produits est je pense faire l'insertion et envoie email sur la page index du dossier checkout donc la page succes qu'en pensez-vous ?

    Qulequ'un peut-il me conseilleur avec le lien joins le meilleur moyen d'effectuer la gestion ?

    Merci.

  5. #5
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut Script ipn Paypal 2017 aide
    Bonjour quelqu’un aurait Il un script ipn Paypal Checkout express qui fonctionne avec on l’insertion mysql et l’envoi email car après deux semaines aucune ne fonctionne correctement.Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment installer un script Perl sur mon site web ?
    Par Phi31 dans le forum Langage
    Réponses: 4
    Dernier message: 29/08/2014, 10h57
  2. Script unique pour installer sur deux Hosts
    Par PAB/31/SAB dans le forum VBScript
    Réponses: 2
    Dernier message: 13/02/2012, 17h00
  3. Réponses: 4
    Dernier message: 29/01/2007, 13h41
  4. installation sur serveur + script
    Par liliprog dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/08/2004, 15h18
  5. probleme d'installation sur d'autres postes
    Par VBkiller dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/09/2002, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo