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

Bibliothèques et frameworks PHP Discussion :

[Web Service] Intégration paypal


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut [Web Service] Intégration paypal
    Bonjour à tous,

    J'ai un petit soucis avec la mise en place du système de payement paypal:

    j'ai mis en place la phase de test via sandbox.paypal.com, j'ai mon compte vendeur et achteur.
    Coté site, la commande se créé correctement, et envoie correctement les données a paypal, puisque j'arrive à finalisé le payment sur paypal:
    Une page qui m'affiche le montant, clic sur "payé" et "
    Félicitations, votre paiement a été envoyé." etc...

    jusque la ça va.
    Le problème c'est que paypal, lui, ne me renvoie aucune confirmation de payement, j'ai pourtant bien indiquer l'url_notify qui est sencé être appelée lors de la validation...

    Voici ma page de de création de commande:
    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
     
    /* SQL: Creation de la commande */
    $cmdId = mysql_insert_id();
    putenv("HOME=~");
     
    $form = array('cmd' => '_xclick',//indique a paypal qu'il s'agit d'un bouton payer maintenant
            'business' => 'vendeur@domaine.fr',//adresse du vendeur (qui doit recevoir le paiement)
            'item_name' => 'Un Article',  //nom de la commande
            'item_number' => $cmdId, //numero de la commande
            'currency_code' => 'EUR', //Devise
            'amount' => '10', //montant a payer
            'lc' => 'FR', //langue de l'interface paypal
            'cert_id' => '**ID DE CERTIF**', //identifiant de certificat donné par paypal
            'custom' => 'mes valeurs utiles pour le traitement',//variable permettant de recevoir diverses informations sur la page de retour
            'invoice' => $cmdId,//valeur unique empechant les paiements accidentels (doit être differente pour chaque paiement)
            'charset' => 'utf-8',//Definit le charset utilisez
            'no_shipping' => '1', //Le client n'est pas invite a rentrer son adresse
            'cpp_header_image' => 'http://domaine.fr/logo.png',//Adresse de l'image se trouvant en haut de la page de paiement (750x90px maxi) dans l'ideal cette image soit se trouver sur un serveur securisé pour eviter d'avoir un message indiquant que certaine parti de la page ne sont pas écurisée.
            'return' => 'http://domaine.fr/',//Adresse de retour lorsque l'utilisateur clique sur retouner a la boutique
            'cancel_return' => 'html://www.domaine.fr/anul.php',//Adresse de retour pour les annulations
            'no_note' => '1',//Empeche l'utilisateur de rajouter des commentaires a son paiement.
            'notify_url' => 'http://www.domaine.fr/paypalIPN.php?paypal&valid'
        );
     
    //on enregistre le formulaire crypte dans une variable
    $encrypted = paypal_encrypt($form);
    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Paiement Paypal</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="fr" />
    </head>
    <body>
    <!-- l'attribut action du formulaire doit rediriger vers www.sandbox.paypal.com pour la phase de test et vers www.paypal.com pour le réel -->
    <form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_s-xclick">
    <!-- on affiche le formulaire crypté -->
    <input type="hidden" name="encrypted" value="<?php echo $encrypted; ?>">
    <!-- Indique la source de l'image du bouton payer maintenant -->
    <input type="image" src="http://images.paypal.com/images/x-click-but01.gif"
    name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite
    et sécurisée">
    </form>
    </body>
    </html>
    et ma page de verification IPN (http://www.domaine.fr/paypalIPN.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(isset($_GET['paypal'])){
     if(isset($_GET['valid'])){
        /* UPDATE SQL (status="ok") */
     }
    }
    *Edit, et donc, malgrès que le payment soit validé, l'UPDATE SQl de la page de verification ne s'effectue pas.

    Si vous savez comment m'en sortir...

    Merci beaucoup

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Enleve le paypal&valid de ton url_notify

  3. #3
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Okay merci, ça fonctionne effectivement mieux,
    Je voulais pas faire une page dédiée à ça mais tant pis ^^

    Maintenant paypal contact ma page IPN, mais il invalide ma commande :/

    ma page 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
     
    /* Contact Paypal
    /**********************************************************************/
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30); 
     
     
    /* Définition de variables
    /**********************************************************************/
    $mailTo         = "Moi <contact@domaine.fr>";
    $req            = 'cmd=_notify-validate';
    $seller_mail    = 'seller@domaine.fr';
    $textMail       = "
        <strong>Détail de la commande</strong><br />
        Commande numéro:".$item_number."<br />
        prix: ".$payment_amount." &euro;
    ";
     
    //headers
    $header         = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header         .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header         .= "Content-Length: " . strlen($req) . "\r\n\r\n";  
    $headerMail     = "Content-Type:text/html;charset=iso-8859-1\n";//permet d'envoyer les message au format html
    $headerMail     .= "Content-Transfer-Encoding: 8bit\n";//permet d'envoyer les message au format html
    $headerMail     .="From: me";//pour répondre au message
     
    //Récupération post
    $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'];
     
     
    /* Création de la requete
    /**********************************************************************/
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }
     
     
    /* Verification des données et validation
    /**********************************************************************/
     
    if (!$fp) {
        //http error
    } 
    else {
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
     
            if (strcmp ($res, "VERIFIED") == 0) {
            /* Traitement */
            }
            elseif (strcmp ($res, "INVALID") == 0) {
    	/* Invalide */
            }
        }
        fclose ($fp);
    }
    ?>
    réponse reçue de paypal ($req):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd=_notify-validate&mc_gross=10.00&invoice=awwIWMtqzCWrYz1u224g8yuPWS8VHmUJJhgxUzOi2ACRYvcTn9Znxi2i236CfQaQ&protection_eligibility=Ineligible&payer_id=BR7MCZMW2ABQU&tax=0.00&payment_date=02%3A57%3A50+Jun+29%2C+2010+PDT&payment_status=Completed&charset=windows-1252&first_name=Test&mc_fee=0.59&notify_version=3.0&custom=mes+valeurs+utiles+pour+le+traitement&payer_status=verified&business=seller_1276546700_biz%40gmail.com&quantity=1&verify_sign=AiPC9BjkCyDFQXbSkoZcgqH3hpacAG7cptXvRhHvcygOxMW5O4DDdZjD&payer_email=buyer_1276546735_per%40gmail.com&txn_id=4TU17450T5948225Y&payment_type=instant&last_name=User&receiver_email=seller_1276546700_biz%40gmail.com&payment_fee=&receiver_id=PXP9SJN93MET4&txn_type=web_accept&item_name=50+PTS&mc_currency=EUR&item_number=14&residence_country=FR&test_ipn=1&handling_amount=0.00&transaction_subject=mes+valeurs+utiles+pour+le+traitement&payment_gross=&shipping=0.00;
    Réponse de paypal ($res):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    HTTP/1.1 200 OK
    Date: Tue, 29 Jun 2010 09:57:54 GMT
    Server: Apache/1.3.33 (Unix) mod_fastcgi/2.4.2 mod_gzip/1.3.26.1a mod_ssl/2.8.22 OpenSSL/0.9.7e
    Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=x1RcoKsmQ8Sueu24M0nzeCLbIXUSgf0oBb0ZGUao1_gwascq50a35MUkkuhoWvzwv92nYxwbn1bzJms6kfbyyLPfhWiUSx0RS3YwVKIFLoRwCfEXsb27mdS6nltOTf5-NRNvO0%7ckR7sZVZlZtAYMYrPnSk_1QFKuwJI0SLquChGeI4mqiXBjjgzdvby4lcnOsSlKN_jp_M_hG%7cdw2mzGNl41az4TQezbOgoygQxHqqsw8abjeon-ZF4KfYjmyolUzJESLkV9Yqs-poaE5By0%7c1277805474; domain=.paypal.com; path=/; Secure; HttpOnly
    Set-Cookie: cookie_check=yes; expires=Fri, 26-Jun-2020 09:57:54 GMT; domain=.paypal.com; path=/; Secure; HttpOnly
    Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly
    Set-Cookie: navlns=0.0; expires=Mon, 24-Jun-2030 09:57:54 GMT; domain=.paypal.com; path=/; Secure; HttpOnly
    Set-Cookie: Apache=10.191.196.11.132021277805474386; path=/; expires=Mon, 16-May-04 03:29:38 GMT
    Connection: close
    Content-Type: text/html; charset=UTF-8
     
    INVALID;
    Merci

Discussions similaires

  1. [Débutant] Intégration d'une library STA mal codée dans un web service wcf
    Par Nadinette dans le forum Services Web
    Réponses: 2
    Dernier message: 19/11/2012, 15h38
  2. Intégration Web Services et GWT
    Par ghiwani80 dans le forum Services Web
    Réponses: 0
    Dernier message: 17/05/2012, 19h55
  3. Réponses: 1
    Dernier message: 15/01/2010, 10h59
  4. [Web Service][PayPal] Appel de setExpressCheckout
    Par chezdevelopping dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/11/2009, 11h42
  5. [CXF][SPRING] Problème d'intégration du web service
    Par Eldon3hs dans le forum Services Web
    Réponses: 1
    Dernier message: 06/10/2009, 13h35

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