Bonjour,
J'ai suivi une partie d'un tutoriel pour intégrer paypal dans un site web.
Le problème c'est que dans le tutoriel il est conseillé d'enregistrer la commande avec statut (0 non payé, 1 payé)
avant de passer au paiement. Mais si le panier change, le prix de la commande change
et il n'y a rien dans le tutoriel qui indique qu'il faut vérifier le prix avant enregistrement de la commande. Que dois-je faire ?
Une autre question, est ce que je dois enregistrer le panier (les produits --> id, quantité) dans la bdd avant le paiement
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 if (!isset($_SESSION['panier']['commande'])) { // 1 - J'enregistre la commande en BDD avec statut 0 mysql_query("LOCK TABLES commande WRITE"); mysql_select_db($database_base, $base); $insert_commande = sprintf("INSERT INTO commande(Utilisateur_idUtilisateur,dateCommande,modePaimentCommande,EtatCommande_idEtatCommande, prixCommande,EtatPaiement) VALUES(%s, NOW(), 'paypal',1,%s,0)",$_SESSION['MM_UserId'],$_SESSION['panier']['PrixTotalTtc']); $commande = mysql_query($insert_commande, $base) or die(mysql_error()); // 2 - Je récupère le n° de commande dans la BDD et je le mets en session mysql_select_db($database_base, $base); $query_commandeId = "SELECT MAX(idCommande) AS last_id FROM commande"; $commandeId = mysql_query($query_commandeId, $base) or die(mysql_error()); $row_commandeId = mysql_fetch_assoc($commandeId); $_SESSION['panier']['commande'] = $row_commandeId['last_id']; mysql_query("UNLOCK TABLES"); }
ou alors passer le tableau contenant les infos du panier dans le formulaire précédant le paiement paypal en utilisant serialize.
Là aussi se pose le problème de vérifier si le panier change on doit tout changer dans la bdd
1ere solution
2eme solution : c'est juste un exemple je sais que le code n'est pas correct c'est juste pour donner une idée
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input name="custom" type="hidden" value='<?php echo serialize($_SESSION['achats']);?>' />
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 //verifier si le panier et le même qu'avant $tab_produits = $_SESSION['achats']; //récupérer le panier dans la base $requete= "SELECT * from composee where Commande_idCommande=".$_SESSION['panier']['commande']."order by idComposee ASC"; $tab_produitsBase = 0; if($tab_produits != $tab_produitsBase ) { //insertion des produits commande //Si le panier existe et qu'il n'est pas vide if(isset($tab_produits) && count($tab_produits) > 0){ // on supprime les produits de la commande $deletesql= "delete from composee where ..." //Parcours des articles composant le panier for ($i=0; $i < count($tab_produits); $i++) { //$tab_produits[$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) VALUES(%s, %s, %s)", $tab_produits[$i]['id'], $_SESSION['panier']['commande'], $tab_produits[$i]['qte']); //echo $insert_commande; $commande = mysql_query($insert_commande, $base) or die(mysql_error()); } } }
Désolé pour le pavé
Je vous remercie .
Partager