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 ?

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");
 
			}
Une autre question, est ce que je dois enregistrer le panier (les produits --> id, quantité) dans la bdd avant le paiement
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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<input name="custom" type="hidden" value='<?php echo serialize($_SESSION['achats']);?>' />
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
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 .