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 :

Paypal IPN with custom variable


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre actif
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Par défaut Paypal IPN with custom variable
    Hello,


    J'ai fait des recherches sur le fonctionnement de l'IPN, et je suis parvenu à le faire fonctionner de manière fluide avec Paygol, donc je suis passé à Paypal qui s'avère être un véritable casse tête !

    Je dispose d'un bouton de paiement qui a plusieurs options de paiement, (selon le montant que la personne souhaite payer) jusqu'ici pas de problème.

    Le compte est dans une sandbox de Paypal, j'ai un compte acheteur et vendeur.


    => bouton du vendeur avec le custom ?:

    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
    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="**********">
    <input type="hidden" name="custom" value="Test">
    <table>
    <tr><td><input type="hidden" name="on0" value="Prix">Prix</td></tr><tr><td><select name="os0">
    	<option value="Option 1">Option 15,00 EUR</option>
    	<option value="Option 2">Option 210,00 EUR</option>
    	<option value="Option 3">Option 320,00 EUR</option>
    </select> </td></tr>
    </table>
    <input type="hidden" name="currency_code" value="EUR">
    <input type="image" src="https://www.sandbox.paypal.com/fr_FR/FR/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !">
    <img alt="" border="0" src="https://www.sandbox.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
    </form>




    => code IPN simplifié pour les tests avec prise en charge Custom:

    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
    <?php
    // read the post from PayPal system and add 'cmd'
    $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.sandbox.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: <a href="http://www.paypal.com&#39;));" target="_blank">www.paypal.com'));</a>
    $res = curl_exec($ch);
    curl_close($ch);
     
     
    // assign posted variables to local variables
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    $custom = $_GET['custom'];
     
     
    if (strcmp ($res, "VERIFIED") == 0) {
    	// check the payment_status is Completed
    	// check that txn_id has not been previously processed
    	// check that receiver_email is your Primary PayPal email
    	// check that payment_amount/payment_currency are correct
    	// process payment
     
     
    mysql_connect("localhost","******","*******");
     
    mysql_select_db(smforum);
     
    mysql_query("UPDATE smf_members SET money = money + 250 WHERE member_name = '".$custom."'");
     
    mysql_close();
     
     
    }
    else if (strcmp ($res, "INVALID") == 0) {
    	// log for manual investigation
     
     
    }
    ?>



    J'effectue donc le script de test via la sandbox (test du IPN avec la valeur du custom correctement attribuée) le script détecte que le IPN est bon, mais dans la database, il n'y a pas l'ajout +250 à la valeur initiale sur l'utilisateur Test.


    Je me demande donc si cela ne serait pas dû au fait que ce soit une sandbox et que cela désactive tout ?

    Mais en lisant bien le code, j'ai l'impression que c'était censé fonctionner de la même manière qu'un code sous paypal ... et que le Custom + la requete sql devait être prise en compte ...



    Des idées ?

    Merci.





    EDIT:

    Je viens de lire tout le topic ici: https://www.paypal-community.com/t5/...de/td-p/374492

    Et je crois comprendre que lors de l'appel à curl avec ssl, nécessite donc OpenSSL d'installé sur mon Nginx ?

    Même si j'en doute vu que le script IPN est considéré comme valide par le script de test, mais qu'il n'exécute pas la commande lorsque j'envoie un ordre IPN en tant que VERIFIED.

  2. #2
    Membre actif
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Avril 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 79
    Par défaut
    Problème réglé, variable qui devait être en POST au niveau de Custom.

Discussions similaires

  1. [PayPal][IPN] Afficher les variables $_POST
    Par beegees dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 16/04/2012, 11h24
  2. Paypal IPN: Problème avec fsockopen
    Par ilalaina dans le forum E-Commerce
    Réponses: 2
    Dernier message: 23/03/2011, 16h39
  3. Error 91 :object variable or with block variable not set
    Par Eausport dans le forum Installation, Déploiement et Sécurité
    Réponses: 13
    Dernier message: 06/06/2009, 04h09
  4. Paypal IPN et PDT ?
    Par TallyHo dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2009, 14h23
  5. [VBA-E] Erreur "Object variable or With block variable not set"
    Par @lex(is) dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/06/2006, 12h39

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