Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Discussion: Paypal et script IPN

  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    septembre 2010
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 152
    Points : 10
    Points
    10

    Par défaut Paypal et script IPN

    Bonjour à tous,

    Voici mon petit (enfin gros) soucis :

    J'ai besoin d'envoyer un mai contenant une clé de déverrouillage extraite d'une base de donnée une fois un paiement via paypal effectué.
    Bien sur il faut que l'envoi se fasse uniquement si le paiement a bien été effectué.

    Pour cela j'utilise donc l'IPN de Paypal.
    J'ai donc crée une page ipn.php comme celle ci :

    Code php :
    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
    <?php
     
    // STEP 1: Read POST data
     
    // reading posted data from directly from $_POST causes serialization
    // issues with array data in POST
    // reading raw POST data from input stream instead.
    $raw_post_data = file_get_contents('php://input');
    $raw_post_array = explode('&', $raw_post_data);
    $myPost = array();
    foreach ($raw_post_array as $keyval) {
      $keyval = explode ('=', $keyval);
      if (count($keyval) == 2)
         $myPost[$keyval[0]] = urldecode($keyval[1]);
    }
    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
    if(function_exists('get_magic_quotes_gpc')) {
       $get_magic_quotes_exists = true;
    }
    foreach ($myPost as $key => $value) {       
       if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
            $value = urlencode(stripslashes($value));
       } else {
            $value = urlencode($value);
       }
       $req .= "&$key=$value";
    }
     
     
    // STEP 2: Post IPN data back to paypal to validate
     
    $ch = curl_init('https://www.paypal.com/cgi-bin/webscr');
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    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_FORBID_REUSE, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
     
    // In wamp like environments that do not come bundled with root authority certificates,
    // please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path
    // of the certificate as shown below.
    // curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
    if( !($res = curl_exec($ch)) ) {
        // error_log("Got " . curl_error($ch) . " when processing IPN data");
        curl_close($ch);
        exit;
    }
    curl_close($ch);
     
     
    // STEP 3: Inspect IPN validation result and act accordingly
     
    if (strcmp ($res, "VERIFIED") == 0) {
        // check whether 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
     
        // 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'];
     
        $to = "monmail@gmail.com";
        $headers = "From: ".$payer_email;
        $message = "Test de l'ipn !!!";
        $subject = "SANDBOX PAYPAL";
     
        mail($to, $subject, $message, $headers);
     
    } else if (strcmp ($res, "INVALID") == 0) {
        // log for manual investigation
    }
    ?>

    Ici j'essai juste de faire un test en envoyant un mail. Hors je ne reçois rien du tout.

    Le paiement se fait via un bouton "Acheter" Paypal que j'ai configuré :
    Dans la rubrique variables avancées j'ai mis notify_url=http://www.monwebsite.com/ipn.php

    Voila donc quand je fais un test avec la sandbox je ne reçois pas de mail.
    J'ai aussi fais un test en "production" et aucun mail ne part.

    Si vous avez une idée cela m'aiderai beaucoup.

    Merci

  2. #2
    Membre confirmé

    Inscrit en
    décembre 2006
    Messages
    380
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 380
    Points : 286
    Points
    286

    Par défaut

    A tout hasard, la condition "if (strcmp ($res, "VERIFIED") == 0) {" est elle remplie ?
    Prestataires, inscrivez vous dans l'annuaire e-commerce des prestataires - foe.hn : un raccourcisseur d'url fun, avec API

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    septembre 2010
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 152
    Points : 10
    Points
    10

    Par défaut

    En fait après un test en utilisant l'IPN simulator de la Sandbox Paypal (https://www.x.com/developers/paypal/...ide/IPNTesting) j'ai le message d'erreur suivant :

    IPN delivery failed. HTTP error code 403: Forbidden

    Si je me trompe pas cela signifie que l'ipn n'est pas transmis à mon script php hébergé sur mon serveur (ovh).
    Du coup je ne sais pas quoi faire ...

  4. #4
    Candidat au titre de Membre du Club
    Inscrit en
    septembre 2010
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 152
    Points : 10
    Points
    10

    Par défaut

    Désolé de relancer le sujet mais personne à une petite idée ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •