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] Intégration paypal php


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut [PayPal] Intégration paypal php
    Bonjour,

    je ne sais pas si je poste ça au bon endroit ??
    J'ai un problème avec l'intégration de paypal à un site web.
    Le problème c'est que après que l'achat soit validé le navigateur doit revenir à la page paimentValide.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="return" type="hidden" value="http://localhost/soltana/paiementValide.php" />
    Et c'est dans paiement valide que j'effectue tout le traitement concernant la commande. C'est à dire les envoi de mails et les enregistrement dans la base des commandes. Le problème c'est que lorsque je vais sur le site paypal via leur bouton acheter le retour vers mon site ne se fait qu'en cliquant sur un lien de retour. Je voudrais que le retour se fasse automatiquement sinon il se peut que le client ferme la fenêtre lorsqu'il voit que le paiement est validé. Il est donc possible que le client n'aille pas sur la page paiementValide.php
    et sa commande ne sera donc pas enregistré. Comment faites-vous avec paypal pour l'intégrer dans votre site web ?
    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    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 563
    Points : 2 390
    Points
    2 390
    Par défaut
    A chaque paiement, Paypal envoi un IPN (il fait un appel sur une page hebergé sur ton serveur) pour que tu puisse réalises les traitement même si l’utilisateur ne clique pas sur le bouton de retour.
    L'url de la page hébergé sur ton serveur qui doit être appelé après chaque paiement peut être spécifiée via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="notify_url" value="ton/url" />
    L'ipn te donne toutes les infos sur le paiement. Notamment si celui ci a bien été validé.

    Paypal fournis des codes d'exemple pour traiter les IPN :
    https://cms.paypal.com/fr/cgi-bin/?c...n_code_samples
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut
    il ne faut pas activer l'ipn d'abord sur le compte ?
    comment je l'active ?

  4. #4
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    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 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Non, il n'y a rien à activer.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut
    ça ne marche pas !

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Il faut effectivement activer les IPN (Instant Payement Notification) sur le compte Paypal et préciser la page qui doit être appelé.
    Concernant la création de la page qui traite les IPN tu trouveras des tonnes de scripts déjà tout fait sur le net.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut
    j'ai essayé d'activer l'ipn ça ne marche pas non plus.

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    A quoi tu arrives à voir que ça ne fonctionne pas ?
    Personnellement quand j'ai commencé avec les IPN Paypal je me suis fais un script qui envois une notification par mail. Tu peux t'inspirer de celui la : http://ralph.davidovits.net/internet...aypal-ipn.html qui à première vu semble fonctionnel.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut
    En fait j'ai remarqué que ça fonctionne mais seulement si je n'utilise pas ma variable $_SESSION. c'est embêtant $_SESSION contient une variable achat pour la liste des produits achetés, l'id de l'acheteur et l'id de la livraison choisie. Je ne peux pas traiter la commande sans mes variables de session.

    ce code marche :

    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
    <?
    include("assets/includes/include.php");
     
    if (!isset($_SESSION)) {
      session_start();
    }
     
    mysql_select_db($database_base, $base);
     
    //$colname_utilisateur = $_SESSION['MM_UserId'];
    //$query_utilisateur = sprintf("SELECT * FROM utilisateur WHERE idUtilisateur = %s", $colname_utilisateur);
    //$utilisateur = mysql_query($query_utilisateur, $base) or die(mysql_error());
    //$row_utilisateur = mysql_fetch_assoc($utilisateur);
     
     
    		$last_id = 22;
     
    		//Insertion des articles composant la commande
    		//********************************************
    		//Si le panier existe et qu'il n'est pas vide
    		//if(isset($_SESSION['achats']) && count($_SESSION['achats']) > 0){
    		//Parcours des articles composant le panier
    			//for ($i=0; $i < count($_SESSION['achats']); $i++)
    			//{
    				//$_SESSION['achats'][$i]['id'];
    				//Insertion des tuples pour la commande en cours
    				mysql_select_db($database_base, $base);		
    				$insert_commande = sprintf("INSERT INTO 
    				composee(Produit_idProduit, Commande_idCommande,quantite,pointure) 
    				VALUES(%s, %s, %s, %s)", 70, $last_id, 1, 31);
    				//echo $insert_commande;
    				$commande = mysql_query($insert_commande, $base) or die(mysql_error());
    			//}
     
    		//Détruire les variables le panier
    		//$_SESSION['achats'] = NULL;
    		//unset($_SESSION['achats']);
    		//}
    		//$_SESSION['livraison'] = NULL; 
    		//unset($_SESSION['livraison']);
    		//if(isset($_SESSION['pointKiala'])){
    		//$_SESSION['pointKiala'] = NULL; 
    		//unset($_SESSION['pointKiala']);		
    		//}
    ?>
    ce code ne marche pas :

    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
    <?
    include("assets/includes/include.php");
     
    if (!isset($_SESSION)) {
      session_start();
    }
    print_r($_SESSION);
    mysql_select_db($database_base, $base);
    $colname_utilisateur = $_SESSION['MM_UserId'];
    $query_utilisateur = sprintf("SELECT * FROM utilisateur WHERE idUtilisateur = %s", $colname_utilisateur);
    $utilisateur = mysql_query($query_utilisateur, $base) or die(mysql_error());
    $row_utilisateur = mysql_fetch_assoc($utilisateur);
     
    		//id de la commande	
    		$last_id = 22;
     
    		//Insertion des articles composant la commande
    		//********************************************
    		//Si le panier existe et qu'il n'est pas vide
    		if(isset($_SESSION['achats']) && count($_SESSION['achats']) > 0){
    		//Parcours des articles composant le panier
    			for ($i=0; $i < count($_SESSION['achats']); $i++)
    			{
    				//$_SESSION['achats'][$i]['id'];
    				//Insertion des tuples pour la commande en cours
    				mysql_select_db($database_base, $base);		
    				$insert_commande = sprintf("INSERT INTO 
    				composee(Produit_idProduit, Commande_idCommande,quantite,pointure) 
    				VALUES(%s, %s, %s, %s)", $_SESSION['achats'][$i]['id'], $last_id, $_SESSION['achats'][$i]['qte'], $_SESSION['achats'][$i]['pointure']);
    				//echo $insert_commande;
    				$commande = mysql_query($insert_commande, $base) or die(mysql_error());
    			}
     
    		//Détruire les variables le panier
    		$_SESSION['achats'] = NULL;
    		unset($_SESSION['achats']);
    		}
    		if(isset($_SESSION['livraison'])){
    		$_SESSION['livraison'] = NULL;
    		unset($_SESSION['livraison']);
    		}
    		if(isset($_SESSION['pointKiala'])){
    		$_SESSION['pointKiala'] = NULL; 
    		unset($_SESSION['pointKiala']);		
    		}
    ?>
    Pourquoi avec $_SESSION ça ne fonctionne pas ???

  10. #10
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    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 563
    Points : 2 390
    Points
    2 390
    Par défaut
    C'est normal que tu ne peux pas récupérer la variable de session.
    L'appel du script est faite par les serveur de paypal et non pas par le client qui a payé. Du coup ce n'est pas la même session.

    Dans le formulaire de paiement tu peux ajouter le champ custom dans lequel tu peux y mettre le contenu de ta variable et ensuite la récupérer dans l'ipn.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut
    J'ai besoin de mettre le contenu de la variable de session "achat" $_SESSION['achats'] = array('"idProduit,"quantite","pointure") qui contient les infos sur les produits choisis + la variable de session $_SESSION['userId'] qui contient l'id du user et de savoir le type de livraison choisi $_SESSION['livraison']. Comment je fais avec seulement le champ custom(je l'utilise déjà pour l'id de l'utilisateur) ? Il y a d'aute champ que je peux utiliser ? Désolé de te déranger. Merci.

  12. #12
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    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 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Il existe déjà des champs prévu par paypal pour enregistrer tout ça (item_name, quantity, etc...)

    As tu consulté la documentation paypal ?
    https://cms.paypal.com/us/cgi-bin/?c...n_IPNReference
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  13. #13
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par cilies38 Voir le message
    Le problème c'est que après que l'achat soit validé le navigateur doit revenir à la page paimentValide.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="return" type="hidden" value="http://localhost/soltana/paiementValide.php" />
    Non mais sans blague, tu veux que le retour se fasse sur une adresse locale ?
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 67
    Points
    67
    Par défaut
    non je ne fais pas les tests en local.

Discussions similaires

  1. [Web Service] Intégration paypal
    Par xxkirastarothxx dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/06/2010, 12h28
  2. [PayPal] Intégration sur website
    Par gabdeschenes dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 04/03/2010, 22h07
  3. [PayPal] Intégration complète en PHP
    Par HALOMOTO dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 24/01/2010, 20h19
  4. intégration PayPal et SetExpresscheckout
    Par chezdevelopping dans le forum Services
    Réponses: 0
    Dernier message: 25/09/2009, 19h11
  5. Intégration paypal ?
    Par Evocatii dans le forum E-Commerce
    Réponses: 0
    Dernier message: 27/06/2009, 17h25

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