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

PHP & Base de données Discussion :

paiement paypal


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Par défaut paiement paypal
    Bonjour à tous, je viens vous demander de l'aide car là je commence a perdre patience en ce qui concerne l'integration de paypal ...

    Je vous explique, j'ai integré un code html de paiement paypal via le sandbox pour faire des tests . Sa marchait bien, il s'agit de commandes, donc en parametre dans "custom", je passe le numéro unique de commande qui etait auparavant stocké dans la table qui concerne les commandes que j'avais nommé paypal . quand on faisait son choix, avant de payer, sa s'enregistrai dans la table, avec un parametre qui disait que c'était en attente de paiement, puis, une fois le paiement effectué, l'IPN changeait ce parametre en payé ... tout marchait bien ...

    Maintenant, j'ai voulu restructurer celà sachant que je rajoute la possibilité de paiements par cheques, je stock donc dans une table provisoire les commandes qui se nomme "commandeProvisoire", puis, si on choisit le paiement par cheque, sa enregistre dans la table "cheque" les infos de commande et supprime de "commandeProvisoire" sa sa marche bien ...

    En revanche, quand je coisis paypal comme moyen de paiement, avec mes comptes test toujours de la sandbox, le paiement s'effectue bien, mais la table "paypal" n'est pas alimentée, et donc la commande table commandeProvisoire n'est pas effacé ...

    Surpris que d'un seul coup sa ne marche plus, dans le fichier IPN appelé noprmalement apres paiement, j'ai ajouté des mail(); à differents endroits pour savoir d'ou vient le probleme ... je ne recois aucun mail, même pas celui qui se trouve avant les tests :s

    Je vais vous mettre le code html de paiement paypal, puis la page IPN ... mais là sa fait comme si la page de l'IPN n'est pas appelée

    HTML :
    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
     
    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
                <input type="hidden" value="<?php echo $prix; ?>" name="amount" />
                <input name="currency_code" type="hidden" value="EUR" />
                <input name="shipping" type="hidden" value="0.00" />
                <input name="tax" type="hidden" value="0.00" />
                <input name="return" type="hidden" value="http://www.site.com/confirmation.php" />
                <input name="cancel_return" type="hidden" value="http://www.site.com/annulation.php" />
                <input name="notify_url" type="hidden" value="http://www.site.com/composants/abonnements/donneespaypal.php" />
                <input name="cmd" type="hidden" value="_xclick" />
                <input name="business" type="hidden" value="sel123_1326039112_biz@hotmail.fr" />
                <input name="item_name" type="hidden" value="<?php echo $nom; ?>" />
                <input name="no_note" type="hidden" value="1" />
                <input name="lc" type="hidden" value="FR" />
                <input name="bn" type="hidden" value="PP-BuyNowBF" />
                <input name="custom" type="hidden" value="<?php echo $uniqid; ?>" />
                <input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
    		</form>
    la page IPN qui se nomme donneespaypal.php
    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
     
    <?php
    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
     
    foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
    }
     
    // post back to PayPal system to validate
    $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";
    $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
     
    // 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'];
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $address_street = $_POST['address_street'];
    $address_city = $_POST['address_city'];
    $address_zip = $_POST['address_zip'];
    $custom = $_POST['custom'];
    mail("jonathan.fortune@hotmail.fr","bizarre","bizarre"); // meme celui là je le reçois pas c'est pas normal !
    if (!$fp) {
    // HTTP ERROR
    mail("jonathan.fortune@hotmail.fr","erreur","erreur");
    } else {
    fputs ($fp, $header . $req);
    while (!feof($fp)) {
    $res = fgets ($fp, 1024);
    if (strcmp ($res, "VERIFIED") == 0) {
     
    mysql_connect($host,$user,$pass);
    mysql_select_db($user);
    $query=mysql_query("SELECT * FROM commandeProvisoire WHERE id_site='$custom'"); $num=mysql_num_rows($query);
    if ($num==1)
    	{mail("jonathan.fortune@hotmail.fr","ok","ok");
    	$assoc=mysql_fetch_assoc($query); $id_user=$assoc['id_user']; $name=$assoc['name']; $id_site=$assoc['id_site']; $qualite=$assoc['qualite']; $date=date("d/m/Y");
    	$recupeNbrOffres=mysql_query("SELECT * FROM boutonspaypal WHERE name='$name'"); $assocNbrOffres=mysql_fetch_assoc($recupeNbrOffres); $nbrOffres=assocNbrOffres['offres']; $duree=$assocNbrOffres['duree']; $report=$assocNbrOffres['report'];
    	if ($duree="1 an") {$datefin=date('d/m/Y',strtotime('+1 year'));} else if ($duree="1 mois") {if ($report=="non") {$datefin=date('d/m/Y',strtotime('+1 month'));} else if ($report=="oui") {$datefin=date('d/m/Y',strtotime('+2 month'));}} else if ($duree="1 offre") {$datefin="1 offre";}
    	if (mysql_query("INSERT INTO paypal VALUES('','$id_user','$payment_amount','$name','$custom','$date','$datefin','valide','$nbrOffres','$payment_status','$payer_email','$txn_id','$first_name','$last_name','$address_street','$address_zip','$address_city')"))
    		{
    		mail($payer_email,"choisistonartisan.com : Validation de votre abonnement","Vous avez souscris à l'offre $name, nous vous en remercions . Rappel des références : numéro de transaction paypal : $txn_id , numéro de votre abonnement sur choisistonartisan.com : $id_site . Vous pouvez dès à présent déposer des offres sur les projets déposés sur le site dans le domaine de : $qualite .");
    		}
    	else
    		{mail($payer_email,"choisistonartisan.com : Echec d'enregistrement de votre abonnement","Bonjour, Vous avez effectué un paiement, qui cependant a bien été validé, pour votre abonnement $name, cependant, un problème est survenu lors de l'enregistrement dans notre base de données et nous nous en excusons, merci de nous contacter en nous mentionnant 1) le numéro de transaction paypal : $txn_id 2) le numéro de commande choisistonartisan.com : $id_site 3) la cause du problème . Merci de nous excuser pour la gène occasionnée, bien cordialement .");}
     
    	if (mysql_query("INSERT INTO abonnements VALUES('','$id_user','$date','$datefin','$nbrOffres','$nbrOffres','$custom','paypal','$name')"))
    		{
    		mail($payer_email,"choisistonartisan.com : $nbrOffres offres crédités sur votre compte","Vous avez été crédité de $nbrOffres sur votre compte choisistonartisan.com .");
    		}
    	else
    		{mail($payer_email,"choisistonartisan.com : $nbrOffres offres n'ont pas pû être crédités sur votre compte","Bonjour, suite à une erreur technique, votre compte n'a pas pû être crédité du nombre d'appels d'offres de $nbrOffres offres sur votre compte choisistonartisan.com . Merci de nous contacter en nous mentionnant le numéro d'abonnement suivant : $id_site afin que nous créditions votre compte manuellement . Nous nous excusons pour ce désagrément .");}
    	}
    else
    	{mail("jonathan.fortune@hotmail.fr","non","non"); mail($payer_email,"Echec d'enregistrement de votre abonnement sur choisistonartisan.com","Bonjour, Vous avez effectué un paiement pour votre abonnement $name, cependant, un problème est survenu lors de l'enregistrement dans notre base de données et nous nous en excusons, merci de nous contacter en nous mentionnant 1) le numéro de transaction paypal : $txn_id 2) le numéro de commande choisistonartisan.com : $id_site 3) la cause du problème . Merci de nous excuser pour la gène occasionnée, bien cordialement .");}
    }
    else if (strcmp ($res, "INVALID") == 0) {
    // log for manual investigation
    }
    }
    fclose ($fp);
    }
    ?>
    Voilà, désolé sa fait un gros paté, mais en gros le problème survient apres que j'ai modifié les conditions d'enregistrement avec les if et else ...

    Merci beaucoup pour votre aide précieuse ...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Par défaut
    je me dis que peut etre je n'ai pas posté dans le bon forum, si c'est le cas, pouvez-vous le déplacer à l'endroit concerné svp ? merci

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Par défaut
    J'avais aussi opté pour une nautre solution bien avant tout ça, créer un bouton different dans mon compte sandbox vendeur, sa faisait je crois 14 boutons differents, je stockai les codes des boutons dans une table de la base de données, puis, selon le produit selectionné, le bouton afferant s'affichait, le seul problème, c'est que quand on créé un bouton de paiement, sa nous propose :
    1) une page de redirection lors qu'on annule un paiement
    2) une page de redirection lors qu'on complète le paiement

    Questions :
    1) pourquoi ne peut on pas mettre de page ipn aussi ?
    2) si je le rajoute en parametre dans le textarea prévu à cet effet avec:
    notify_url=http://www.site.com/composants/abonnements/donneespaypal.php
    3) si oui, ce parametre suffit-il, oubien dois-je en rajouter dans ce champ pour que la page donneespaypal.php soit bien appelée et traite bien les infos retournées ?
    4) si non, alors est-ce que si je mets le code de donneespaypal.php dans confirmation.php sa va récupérer les données du paiement ?

    Merci encore pour vos infos, je pose la question aulieu de tester et retester des choses et faire des conneries, cette mise en place de paiement paypal n'est pas si facile qu'elle n'en a l'air en fin de compte ...

    Merci encore

Discussions similaires

  1. telechargement apres paiement paypal
    Par nomai dans le forum E-Commerce
    Réponses: 2
    Dernier message: 28/11/2008, 09h29
  2. Paiement Paypal et lancer telechargement
    Par tremeur53 dans le forum E-Commerce
    Réponses: 1
    Dernier message: 16/07/2008, 13h48
  3. Paiement paypal, adresse de l'acheteur
    Par elekaj34 dans le forum E-Commerce
    Réponses: 0
    Dernier message: 29/02/2008, 10h30
  4. paiement PayPal sur telechargement
    Par tremeur53 dans le forum E-Commerce
    Réponses: 5
    Dernier message: 20/02/2008, 22h07
  5. [PayPal] Intégrer module "je suis nouveau client" + paiement Paypal
    Par kervano dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 08/07/2006, 20h21

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