Mini boutique en ligne et devis par mail transmission individuelle des articles dans un panier paypal

Soyez le premier à donner votre avis sur cette source.

Vue 37 010 fois - Téléchargée 11 558 fois

Description

En une seule page:

on affiche les produits stockés dans une base de données (prix, désignations, frais de livraison/traitement oui ou non...).

On renseigne le nombre de produits choisis.

Permet trois choix d'affichage ( uniquement les produits choisis, non choisis ou les deux).

Permet une demande de devis par un formulaire optionnel (nom email message) et transmet la demande à une adresse prédéfinie et a celle du client (vérification sommaire de la validité de cette adresse).

Permet une impression sélective du devis.

Transmet les produits choisis à un panier PayPal business en détaillant chaque produit ( quantité prix)

Permet de différencier les produits soumis à des frais de livraison / traitement de ceux qui ne le sont pas.

Source / Exemple :


<!-- 
contenu du ficher de connexion db
<?php //$connexion = mysql_connect('adresse serveur mysql','utilisateur','mot de passe') OR die(mysql_error());;
//mysql_select_db('nom de la base de donnees',$connexion);
?>
-->

<!-- 
La creation et le remplissage des tables de la db ne sont pas gere ici
vous devez le faire manuellement
Le code du bouton d'envoi a PayPal provient du site PayPal, j'ai juste ajoute la boucle PHP pour gerer le multi produits
-->

<form method="post" name="facture" action="<?php echo $PHP_SELF."#bouton"; ?>">
			<input type='submit' name='action' value='Calculer'>
			<table class="t1" summary="Formulaire devis facture">
				<tr>
					<td class="c4" style="width : 50%;" >Type de prestation</td>
					<td class="c4" style="width : 17%;" >Quantités</td>
					<td class="c4" style="width : 33%;" >Total ligne</td>
				</tr>

					<!-- debut script php -->
					<?php
					  echo "\n\n\n\n\n\n<!--\n
					  #############################################################################################\n
					  # script de panier PayPal avec stockage des produits mysql et envoi du detail au panier PayPal\n
					  # gestion des frais de traitement livraison\n
					  # demande de devis possible avec envoi par mail au demandeur et au gestionaire du site\n
					  #############################################################################################\n\n
					  #############################################################################################\n
					  # Ce script a ete developpe par 2AIDE, vous vous sera fourni gratuitement sur simple demande depuis le site http://www.2aide.fr/\n
					  # Aucun support supplementaire ne vous sera propose gratuitement\n
					  # Vous pouvez malgre tout solliciter une aide dans le cadre des prestations proposees sur le site http://www.2aide.fr/\n
					  # Bien qu'il en soit maintenant tres eloigne ce script a ete inspire, au depart par un formulaire de contact propose gratuitement lui aussi.\n
					  # 2aide remercie donc http://www.patrickhamy.net/ auteur de ce formulaire de contact\n
					  #############################################################################################\n\n
					  #############################################################################################\n
					  # A vous de voir pour les css\n
					  # Je precise juste que la classe masimp est declaree dans une feuille de style dediee a l'impression: media=print\n
					  # Si vous utilisez ce code merci de laisser ces remarques\n
					  #############################################################################################\n
					  --> \n\n\n\n\n ";
					  
						include ('FICHIER DE CONNEXION DB');
						$produit = 'SELECT * FROM `produits` WHERE vente = 1 ORDER BY cat, id';
						$liste = mysql_query( $produit,$connexion );

						$trans = array ( "è" => "e", "é" => "e", "à" => "a", "ê" => "e", "½" => "1/2", "ô" => "o", "ç" => "c", "È" => "E", "É" => "E", "À" => "A", "Ê" => "E", "Ô" => "O", "Ç" => "C"); //suppression des accents pour formulaire transmit a PayPal car probleme avec codage des caracteres
						$tota1 = array(0);
						$frais1 = array(0);
						$prod1 = array(0);
						$prix1 = array(0);
						$quant = array(0);
						$mail = array(0);
						$numprod = 0;
						$i = 0;
						if (isset($_POST[$var])) $_POST[$var]="0";
						while ($tablo = mysql_fetch_array($liste)) 
						{
							if (!isset($_POST[$var])) $_POST[$var]="0";
							$i++; //Incrementee a chaques tour de boucle WHILE
							$var = 'var'.$i; //Construction des variables POST du formulaire

							if ( $_POST["reset"] =="on" ) // reset des variables formulaires
							{
							  $_POST[$var]= "0";
							  $_POST['nom']= "0";
							  $_POST['prenom']= "0";
							  $_POST['message']= "0";
							  $_POST['email']= "0";
							  $_POST["envoi"] ="";
							} //Vide tous les champs du formulaire

							if ($_POST[$var]> "0") // si nombre d'articles commande superieurs a 0 pour une ligne
							{ 
							  $numprod++; // compte le nombre d'articles selectionnes
							} // Creation de la variable de generation item pour les variables produits du bouton PayPal

							$prod  = $tablo['designation']; // designation des articles
							$prodnohtm = strip_tags($prod); // supression des balises html dans designation des articles
							$proddec = html_entity_decode($prodnohtm, null, 'UTF-8'); // remplacement des entites html par le caractere accentue
							$prodno = strtr($prodnohtm, $trans); // remplacement des caracteres accentues par le caractere normal le plus proche ( supression des accents) pour formulaire transmit a PayPal							
							$prix = $tablo['prix']; // designation des articles

							if ($_POST[$var]> "0") // nombre d'articles commande superieurs a 0 pour une ligne 
							{ 
							  $prod1[$numprod] = $prodno; //inscrit tous les produits selectionnes dans une variable tableau
							  $quant[$numprod] = $_POST[$var]; //inscrit toutes les quantites produits selectionnes dans une variable tableau
							  $prix1[$numprod] = $prix; //inscrit tout les prix produits selectionnes dans une variable tableau
							}

							$trait = $tablo['traitement']; //variable frais de livraison-traitement oui ou non
							
							if ($prix<>0) //verifie qu'un prix ne soit pas egal a 0
							{
							  $prixht = ($prix/1.196)*$_POST[$var]; //calcule le prix ht a partir du ttc
							}

							$tva = round(($prixht*0.196),2); //calcule le montant de la TVA
							$type = $tablo['type']; //affectation du produit creation web ou depannage

							$total1[$i] = $prix*$_POST[$var]; //inscrit le prix total de chaque ligne dans une variable tableau

							if ($trait==1 && $prix*$_POST[$var]<>0) //si frais de livraison-traitement oui et nombre de produits x par prix >0
							{
							  $fraisunit = ((($prix*$_POST[$var])/100)*3.4)+0.25; //calcule les frais de traitement
							}
							else {$fraisunit = 0;} //si pas de frais de traitement la variable est egale a 0

							$frais1[$i] = $fraisunit; //inscrit les frais de traitement de chaque ligne dans une variable tableau

							if ( $trait == 1) //si frais de traitement oui
							{
							  $note = "+ frais de traitement"; //texte affiche pour frais de traitement oui
							} 
							else { $note = "pas de frais de traitement";} //texte affiche pour frais de traitement non

							if ($_POST[$var] > 0) // si nombre de produits >0
							{ 
							  $imp = ""; // autorisation d'impression de la ligne
							}
							else { $imp = "class='masimp' ";} // interdiction d'impression de la ligne

							if ( $_POST["reset"] =="on" ) // si demande remise a 0 du formulaire
							{
							  $chk = 'checked="checked"'; // je force la case afficher les produits choisis a cochee
							  $chk1 = 'checked="checked"'; // je force la case afficher les produits non choisis a cochee
							  $vu = ""; //je ne cache aucune ligne
							}
							else //pas de demande de remise a 0 du formulaire
							{
								if ($_POST[$var] > 0 AND $_POST["masq"] !="on" AND $_POST["envoi"] !="on" ) //si nombre de produit > 0 ET case afficher les produits choisis pas cochee ET case envoyer demande de devis cochee
								{
								  $vu = 'style="display : none;"'; //je n'affiche pas la ligne
								}
								
								if ($_POST[$var] > 0 AND $_POST["masq"] =="on" ) //si nombre de produit > 0 ET case afficher les produits choisis cochee
								{
								  $vu = ""; //j'affiche la ligne
								}

								if ($_POST[$var] == 0 AND ($_POST["masq1"] !="on" OR $_POST["envoi"] =="on") ) //si nombre de produit = 0 ET case afficher les produits non choisis pas cochee ou case envoyer demande de devis cochee
								{
								  $vu = 'style="display : none;"'; //je n'affiche pas la ligne
								}

								if ($_POST[$var] == 0 AND ($_POST["masq1"] =="on"  AND $_POST["envoi"] !="on")) //si nombre de produit = 0 ET case afficher les produits non choisis cochee et case envoyer demande de devis pas cochee
								{
								  $vu = ""; //j'affiche la ligne
								}

								 if ($_POST["masq1"] !="on" AND $_POST["masq"] !="on" ) //si les cases afficher produits choisis et non choisis sont cochees
								{
								  $vu = ""; //j'affiche la ligne
								}

								if ( $_POST["masq"] =="on" OR $_POST["envoi"] =="on" ) //si case afficher les produits choisis cochee OU case envoyer demande de devis cochee
								{
								  $chk = 'checked="checked"'; //valeur par defaut de la case afficher les produits choisis a cochee
								}
								else { $chk = "";} //sinon valeur par defaut de la case afficher les produits choisis a pas cochee
								
								if ( $_POST["masq1"] =="on" AND $_POST["envoi"] !="on" ) //si case afficher les produits non choisis cochee ET case envoyer demande de devis pas cochee
								{
								  $chk1 = 'checked="checked"'; //valeur par defaut de la case afficher les produits non choisis a cochee
								}
								else { $chk1 = "";} //sinon valeur par defaut de la case afficher les produits non choisis a pas cochee
							}

							$code = "				<tr ".$imp.$vu.">\n"; // generation du code du tableau de produits
							    $code .="					<td class='c1'>\n";
								$code .="					  <label>&nbsp;".$prod.": <span class='def' title='".round(($prix/1.196),2)."€HT'>".$prix."€<sup>TTC</sup></span></label>\n";
								$code .="					</td>\n";
								$code .="					<td class='c2'>\n";
								$code .="					  <input style='text-align : right;' type='text' name='".$var."' size='3' value='".$_POST[$var]."'>\n";
								$code .="					</td>\n";
								$code .="					<td class='c2' >\n";
								$code .="					  ".round(($prixht),2)."€<sup>HT</sup> + ".$tva."€ de TVA\n";
								$code .="					  <br>".$note."\n";
								$code .="					</td>\n";
								$code .="				</tr>\n";

							if ($_POST[$var]> "0")
							{
							  $mail[$numprod] = $code; // inscription du code du tableau de produit dans une variable tableau
							}

							echo $code; // affichage  du code du tableau de produits
						}

						$total = array_sum($total1); // Je fais le total des totaux de chaque ligne
						$totalht = round(($total/1.196),2); // j'extrait le total global HT et j'arrondi a 2 decimales
						$frais = round(array_sum ($frais1),2); // Je fais le total des frais de chaque ligne et j'arrondi a 2 decimales
						$totaltva = round(($total - $totalht),2); // j'extrais la TVA et j'arrondi a 2 decimales
						$facture = round(($total + $frais),2); // je calcule le total de la facture et j'arrondi a 2 decimales

						if ($total == 0 ) // si la facture est d'un montant egal a 0 euro
						{ 
						  $chk = 'checked="checked"'; //valeur par defaut de la case afficher les produits choisis a cochee
						  $chk1 = 'checked="checked"'; //valeur par defaut de la case afficher les produits choisis a cochee 
						  $env = "style='display : none;'"; // j'interdit l'affichage des options liees a un montant
						}
						else { $env = ""; } // sinon je n'interdit pas l'affichage des options liees a un montant

						$code1 = "				<tr>\n"; // generation du code des tataux en bas de tableau
							$code1 .= "					<td class='c1' colspan='3'>\n";
							$code1 .= "					  <br>Total ".$totalht."€<sup>HT</sup>\n";
							$code1 .= "					  <br>".$totaltva."€ de TVA\n";
							$code1 .= "					  <br>".$frais."€ de frais de traitement\n";
							$code1 .= "					  <br>Soit une facture totale de :".$facture."€<sup>TTC</sup>\n";
							$code1 .= "					</td>\n";
							$code1 .= "				</tr>\n";
							$code1 .= "			</table>\n";

						echo $code1;  // affichage du code des tataux en bas de tableau

						$headers ='From: "Devis"<VOTRE@EMAIL>'."\n"; // entete email devis
							$headers .='Content-Type: text/html; charset="utf-8"'."\n";
							$headers .='Content-Transfer-Encoding: 8bit';

						$mailtot = "<h1>Vous avez reçu une demande de devis !</h1>\n <p>"; // generation du code du mail de devis
							$mailtot .= $_POST["message"]."\n <br> de: ".$_POST["prenom"]."&nbsp;".$_POST["nom"];
							$mailtot .= "<br>".$_POST["email"]."</p>\n<table>".implode($mail).$code1; // implode de la variable tableau contenant le code du tableau de produits

						if ( $_POST["envoi"] =="on" ) // si demande d'envoi de devis par mail
						{
						  $chk2 = 'checked="checked"';	//valeur par defaut de la case afficher les produits choisis a cochee
						  $chk = 'checked="checked"';	//valeur par defaut de la case afficher les produits choisis a cochee
						  $chk1 = '';					//valeur par defaut de la case afficher les produits non choisis a pas cochee
						  $action = 'Envoyer'; // texte du bouton de soumission

							if ($_POST["email"]<> "" && eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$",$_POST["email"]) ) // verification presence et vatidite de la saisie de l'email du client
							{ 
							  mail('VOTRE@EMAIL','Demande de devis', $mailtot, $headers); //envoi du devis au gestionnaire du site
							  mail($_POST["email"],'Copie du devis soumis', $mailtot, $headers); //envoi du devis au client
							  $contfor = "<div style='display : none;'>"; //masque formulaire et autre si envoi OK
							  $contfor1 = "</div>";	//masque formulaire et autre si envoi OK
							  $_POST["envoi"] = ""; //intitialise le formulaire de contact
							  $_POST["nom"] = "";
							  $_POST["prenom"] = "";
							  $_POST["email"] = "";
							  $_POST["message"] = "";
							  $chk2 = "";
							  echo "<h2>Votre demande à bien été envoyée</h2>";
							}
							else { echo "<h3 class='masimp' >Vérifiez la saisie de votre adresse Email.</h3>"; }	//previent d'un probleme avec adresse email
							// formulaire de contact
							echo "<div class='masimp'>\n".$contfor."\n<label>Nom:&nbsp;<input style='text-align : left;' type='text' name='nom' size='25' value='".$_POST["nom"]."' ></label>\n";
							echo "<br><br><label>Prénom:&nbsp;<input style='text-align : left;' type='text' name='prenom' size='25' value='".$_POST["prenom"]."' ></label>\n";
							echo "<br><br><label>Email:&nbsp;<input style='text-align : left;' type='text' name='email' size='25' value='".$_POST["email"]."' ></label>\n";
							echo "<br><br><label>Message:&nbsp;<textarea style='text-align : left;' name='message' cols='25' rows='15'>".$_POST["message"]."</textarea></label>\n".$contfor1."\n</div>\n";
						}
						else { $chk2 = ''; $action = 'Calculer';}	// texte du bouton de soumission
						// diverses options d'affichage
 						echo "			<div class='masimp' style='width : 28em; margin-left : auto; margin-right : auto; text-align : left;' >\n\n";
						echo "     	 	  <span ".$env."><input type='checkbox' name='envoi' ".$chk2." class='button'>&nbsp;Cochez cette case puis cliquez sur&nbsp;</span>\n";
						echo "			  <input type='submit' name='action' value='".$action."'>\n";
						echo "				<span ".$env.">\n";
						echo "				  <br>pour demander un devis définitif\n";
						echo "				  <br>\n";
						echo "				  <br>\n";
						echo "					<script type='text/JavaScript'>\n";
						echo "					  document.write('<button onClick=\'window.print();\'\>Imprimer le devis<\/button\>');\n";
						echo "					</script>\n";
						echo "				  <br>\n";
						echo "				</span>\n\n";
						echo "				  <br>\n";
						echo "				  <input type='checkbox' name='reset' class='button'>Cochez pour vider votre panier.\n";
						echo "				  <br>\n";
						echo "				  <input type='checkbox' name='masq' ".$chk." class='button'>cochez pour voir les produits que vous avez choisis.\n";
						echo "				  <br>\n";
						echo "				  <input type='checkbox' name='masq1' ".$chk1." class='button'>Cochez pour voir les produits non choisis.\n\n";
						echo "			</div>\n";
						echo "		 </form>\n";
					?>

			<div class="masimp"<?php echo $env; ?>>
			  <br>
			  <br>
			  <script type="text/JavaScript">
			  document.write('<div style=\"float : right;\"\>En cliquant sur ce bouton vous lancez une impression de vos choix<br\>ET accédez directement à la page de paiement.<\/div\>');
			  </script>
			  <noscript><div style="float : right;">En cliquant sur ce bouton vous accédez directement à la page de paiement.</div></noscript>
				<div style="float : right;" onClick="window.print();" >
					<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
					  <input type="image" src="URL ABSOLUE DE L'IMAGE DU BOUTON PAYPAL" name="submit" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !">
					  <img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
					  <input type="hidden" name="upload" value="1">
					  <input type="hidden" name="cmd" value="_cart">
					  <input type="hidden" name="business" value="VOTRE CODE DE PARAINAGE OU VOTRE EMAIL IDENTIFIANT PAYPAL">
						<?php
							for($bouc=1; $bouc<=$numprod; $bouc++) // creation d'une boucle reiteree autant de fois q'un produit a ete choisi
							{
							  echo '<input type="hidden" name="item_name_'.($bouc).'" value="'.$prod1[$bouc].'">'."\n"; // transmition de la designation des produits
							  echo '<input type="hidden" name="quantity_'.($bouc).'" value="'.$quant[$bouc].'">'."\n";  // transmition de la quantite des produits
							  echo '<input type="hidden" name="amount_'.($bouc).'" value="'.$prix1[$bouc].'">'."\n";	// transmition du prix des produits
							}
						?>

					  <input type="hidden" name="handling_1" value="<?php echo $frais; // transmition des frais de traitement livraison globaux ?>">
					  <input type="hidden" name="logo_custom" value="URL ABSOLUE DE L'IMAGE DU BOUTON PAYPAL">
					  <input type="hidden" name="no_note" value="1">
					  <input type="hidden" name="currency_code" value="EUR">
					  <input type="hidden" name="lc" value="FR">
					  <input type="hidden" name="bn" value="PP-ShopCartBF">
					</form>
				</div>
			</div>

Conclusion :


Bon, c'est mon premier code ici, ça fait un mois que je m'essaie au PHP, et quelques années que je pique sournoisement des bouts de codes ici.
Alors si ce petit truc maladroit pouvait être utile à quelqu'un ce serait un juste retour.
Comme je l'ai dit je suis Newbie alors les critiques seront les bien venues.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires


nice pour un un futur developpeur et du courage pour le reste et le meilleur reste a venir
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Tu as raison, EBP ou Ciel sont des logiciels très fermés et difficiles à prendre en main, mais par contre, celà fait tellement d'années qu'il sont sur le marché que le principe est bien rodé. Il suffit juste de prendre ce qui t'interesse et tu laisse le reste.

Pour ce qui est de ta table devis, tu peux effectivement partir comme çà, sachant qu'une facture n'est autre qu'un devis qui a abouti. Donc pense déja à mettre un champ 'type' (enum('0','1'))dans ta table devis qui te permettra de savoir si c'est un devis ou une facture. Comme ça, tu l'enregistre comme devis et quand tu le valides (l'intervention est faite), tu change le type et ton devis devient une facture.

Pour le STRAIGHT_JOIN, c'est hyper important, car sans cette instruction, ton moteur se perd dans ses condition et tu peux te retrouvé confronté à des erreurs de temps de requette. Car à straight_join, tu force mysql à suivre ton fil de liaison, tu gagnes un temp monstre et tu allège ton serveur (surtout si tu est sur un mutualisé... ça évite de planter les autres site... lol)

Bon allez, au boulot maintenant...
Messages postés
7
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
27 juin 2008

Merci Masternico

Je suis justement en train de plancher sur un système de devis, je partais sur une table produit (celle qui existe) une table clients, une table devis qui recevra les devis et la dernière qui relie toutes les lignes d'un devis à un client et une date grâce à un n° de devis.
Après je verrai pour la transformation en facture et tout le reste.
Je suis un peu allergique aux soft type ciel ou EBP et étant itinérant si j'arrive à ce que je veux je pourrais faire des devis facture (et plus) depuis n'importe où voire même depuis une clef usb avec un truc du genre zazouminiserveur.

Ta remarque sur SELECT STRAIGHT_JOIN va m'économiser quelques heures de recherche.

J'ai qualifié ce script de "mini boutique" parce qu'il permet de sélectionner les produits dans une liste, de spécifier les quantités et de transmettre le détail de tout ça à Paypal.

Le suivit des transactions est donc tout à fait possible en l'état grâce aux outils de reporting de Paypal, en effet tout est transmit, le client et le vendeur reçoivent un email détaillé et les coordonnées de l'acheteur ainsi que le contenu du panier.
Le tout restant stockés dans l'historique du compte et téléchargeables au format cvs.
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Une mini boutique sur une table... mhhhh... disons qu'en l'état, il n'est possible de faire un suivit ni de commande, ni de clientelle ni de facturation...

Il te reste encore beaucoup de chemin à faire avant de pouvoir appeler ça une boutique (même mini). Ton code dans l'état ne sert à rien pour quelqu'un qui chercherait un snippet puisqu'il lui faut tout faire...

Ton code me fait penser à windows vista (si si), l'idée est bonne, mais la réalisation innachevée par précipitation...

Il vaux mieux que tu prennes ton temps pour faire une analyse complète de ta boutique, que tu révise la structure de ta base de données en y ajoutant toutes les tables clients, factures, fournisseur, paiement, devis, prospect (inspire toi d'un logiciel de compta tel EBP ou Ciel).

Etant un novice dans le domaine, je ne pense pas que tu y ariveras du premier coup, mais tu semble aimer la méthode empirique, donc tu finira bien par trouver la solution.

Une astuce qui pourrait de faciliter la tâche en base de données, c'est la mise en place des relations de tables:
prenons une table article telle que tu l'as faite. Prenons ensuite une table client dont je te laisse définir les champs. Enfin, prenons une table facture dont tu définiras aussi les champs. Il faut que tu définisse le mécanisme qui va relier ces trois tables, à savoir:
à chaque facture correspond une liste d'articles et à chaque client correspond une liste de facture. L'annalyse du problème donnera celà:

articles articles2factures factures factures2clients clients
id_article --->id_article |-->id_facture -->id_facture |---->id_client
id_facture ---------| id_client --------|

Entre chaque table, tu dois utiliser une table intermédiaire qui va lier les deux exrémités.
Du coup, pour rechercher la liste des clients qui ont acheté un article en particulier la requette est:

SELECT STRAIGHT_JOIN clients.id_client FROM clients,factures2clients,articles2factures,articles WHERE articles.id_article '12345' AND articles2factures.id_article articles.id_article AND articles2factures.id_facture = factures2clients.id_facture AND factures2clients.id_client = clients.id_client GROUP BY clients.id_client

Voila... bonne route...
Messages postés
7
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
27 juin 2008

Salut Masternico,

Bon s'ajoute tout de suite le fichier SQL, un plugin de téléchargement de firefox me refusait cette manip, je ne sais pas pourquoi Downthemall me retournait un fichier php au lieu du .sql.

Après ça marche bien avec une seule table.

La table contient un "catalogue" de produits, leur prix (en ttc car c'était plus pratique pour moi), si je veux répercuter ou non les frais de traitement de PayPal (0 pour non 1 pour oui) et la catégorie du produit qui ne sert ici qu'au regroupement des lignes du tableau.

J'ai ajouté un champ observations parce que j'utilise la même table pour afficher/imprimer un tarif depuis une autre page et un champ vente (0 pour non 1 pour oui) pour ignorer certains produits dans le formulaire destiné à PayPal.

Donc en arrivant sur le formulaire on a un tableau dans lequel figurent tous les produits du "catalogue" (hors vente=0), on indique la quantité que l'on veut pour chaque référence achetée.

On clique sur calculer pour obtenir le résultat (prix ht, TVA, frais de traitement et total de la facture).

En cochant une case on peut masquer tous les produits non choisis ou avec une autre case tous les produits choisis (c'est juste visuel pour vérifier ou compléter la commande).

Si il y a au moins un produit choisi on peut imprimer la page ou envoyer sa demande de devis personnalisée par mail, un formulaire de contact apparait alors pour préciser sa demande.
Une fois renseigné on envoi le tableau des produits choisis (avec le calcul) accompagné du message à l'adresse du marchand, on reçoit aussi une copie.

On peut aussi payer directement par PayPal.
Le bouton Paypal transmet le tableau des produits choisis leurs quantité et les frais de traitement globaux.

Le script ne se contente pas de passer un montant total, il retourne une ligne par produit et calcule le montant de chaque ligne (prix unit X quantité).
On obtient donc une ligne détaillée par produit directement dans le formulaire de paiement de PayPal.

Il gère aussi des produits soumis à des frais de traitement/livraison et d'autres qui ne le sont pas.

En fait j'ai codé ça au départ pour générer des devis estimatifs en ligne, mais j'ai une activité à domicile et j'ai déjà eu des clients qui, une fois terminé, me disaient qu'ils n'avaient qu'une carte bleue.
Donc cette page me permet simplement d'accepter un autre moyen de paiement, il ne s'agit donc pas, dans mon cas, de réelle vente en ligne.
Mais je pense que ce système permet la réalisation d'une petite boutique.

Effectivement aujourd'hui, ce script ne garde pas de trace de la transaction, ça c'est Paypal qui s'en charge.Je pense modifier ça aussi.

Je vais utiliser cette base pour créer une petite application de Devis / Facture avec gestion clients.
Bon on en est encore loin mais je posterai ici quand j'aurai fini.

Petite astuce avec Paypal, le code du bouton généré sur leur site contient notre adresse email en clair, ce qui est fâcheux.
Alors à cette adresse: http://www.paypalblog.info/article-4116254-6.html
On nous explique que l'on peut remplacer l'adresse email par le code de parrainage (voir l'article)
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.