Aller au contenu

Gestion du Panier Paypal


Sujets conseillés

Posté

Salut,

Voilà j'ai un pett problème ^^

Durant mon stage je dois faire un site de vente en ligne de matèriel informatique.

Je dois utiliser le mode de paiement paypal et un problème se pose.

Voilà je gère moi même un panier que j'ai généré en php et stocké dans des cookies. A la fin, lorsque le client veut commander, je veux envoyer l'intégralité de mon panier vers le panier paypal et empêcher celui-ci d'être modifié (pour des raisons de facilité de sauvegarde de la commande dans la bdd). Et ensuite je voudrais récupérer le nom, l'adresse, le code postal, la ville, sont n°tel et son email pour constitué ma base de donnée.

Est-ce possible?

Voici le code que j'utilise pour créer mon tableau et comment je tente d'envoyer mon panier :

if(($nbLignes)<1)
echo '<br /><br /><h2><em>Aucun article n\'a été ajouté au panier.</em></h2>';
else
{

// Ouverture de la form du bouton
echo '<form name="panier" target="paypal" action="https://www.paypal.com/fr/cgi-bin/webscr" method="post">';

echo '<table class=tabcom width=95% border=1 cellspacing=0 cellpadding=4>';
echo '<tr>';
echo '<td><b>Reférence</b></td>';
echo '<td><b>Désignation</b></td>';
echo '<td><b>Prix Unitaire</b></td>';
echo '<td><b>Quantité</b></td>';
echo '<td><b>Montant</b></td>';
echo '<td><b>Modification</b></td>';
echo '<td><b>Suppression</b></td>';
echo '</tr>';
if ($connexion)
 {
 $db;
 $RechercheNb=$nbLignes;
 $prod_choix = 0;
 $total=0;
 $qtecommande=0;
 for($i=1;$i<=$nbLignes;$i++)
 {
 $posFin=strpos($commande,'#');
 $article=substr($commande,0,$posFin);
 $commande=substr($commande,$posFin+1);
 $posQte=strpos($article, '*');
 $ref=substr($article,0,$posQte);
 $qte=substr($article,$posQte+1,$posFin);
 $requete="select produit_designation, produit_prix from produit where produit_reference='".$ref."';";
 $produit=mysql_query($requete);
 while ($valeursPdt=mysql_fetch_row($produit))
   {
   $des=$valeursPdt[0];
   $prix=$valeursPdt[1];
   }
 $montant=$qte*$prix;
 $total=$total+$montant;
 $qtecommande=$qtecommande+$qte;
 echo '<tr>';
 echo '<td>'.$ref.'</td>';
 echo '<td>'.$des.'</td>';
 echo '<td align="right">'.$prix.'</td>';
 echo '<td align="center"><input type=text align="right" size=3 name="prod_qte" value='.$qte.'></td>';
 echo '<td align="right">'.$montant.'</td>';
 echo '<td align="center">';
 echo '<a href="javascript:void(0)" onclick="javascript:modifPanier('.$prod_choix.','.$RechercheNb.')">Mettre à Jour</a>';
 echo '</td>';
 echo '<td align="center">';
 echo '<a href="javascript:void(0)" onclick="javascript:supprPanier('.$prod_choix.','.$RechercheNb.')">Supprimer</a>';
 echo '</td>';

 // Information pour le panier PayPal
 if ($nbLignes==1)
   {

   // S'il n'y a qu'un seul produit à envoyer, il n'y a aucun problème.
   echo '<input type="hidden" name="item_name" value="'.$des.'">';
   echo '<input type="hidden" name="item_number" value="'.$ref.'">';
   echo '<input type="hidden" name="amount" value="'.$prix.'">';
   echo '<input type="hidden" name="quantity" value="'.$qte.'">';
   echo '<input type="hidden" name="no_note" value="1">';
   }
 else
   {

   // Lorsqu'il y a plusieurs produits, il m'est indiqué que mon panier est vide et qu'il faut que je donne un montant.
   $prod_choix++;
   echo '<input type="hidden" name="item_name_'.$prod_choix.'" value="'.$des.'">';
   echo '<input type="hidden" name="item_number_'.$prod_choix.'" value="'.$ref.'">';
   echo '<input type="hidden" name="amount_'.$prod_choix.'" value="'.$prix.'">';
   echo '<input type="hidden" name="quantity_'.$prod_choix.'" value="'.$qte.'">';
   echo '<input type="hidden" name="no_note_'.$prod_choix.'" value="1">';
   }
 echo '</tr>';
 }

 // Déclarations uniques nécessaires pour le panier paypal
 echo '<input type="hidden" name="add" value="'.$nbLignes.'">';
 echo '<input type="hidden" name="cmd" value="_cart">';
 echo '<input type="hidden" name="business" value="'.$adresse.'">';
 echo '<input type="hidden" name="currency_code" value="EUR">';

 }
mysql_close($connexion);
echo '<tr>';
echo '<td align="right" colspan=3><b>Total</b></td>';
if ($qtecommande<=1)
 {echo '<td align="right">'.$qtecommande.' article</td>';}
else
 {echo '<td align="right">'.$qtecommande.' articles</td>';}
echo '<td align="right">'.$total.'</td>';
// Bouton Paypal
echo '<td colspan=2 align="center">';
echo '<input type="image" src="https://www.paypal.com/fr_FR/i/btn/view_cart.gif" border="0" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée !">';
echo '</td>';
echo '</tr>';
echo '</table>';
echo '<br />';
// Fin de la form du bouton PayPal
echo '</form>';
echo '<br />';
echo '</div>';

Voilà j'espère que c'est assez compréhensible.

Posté

Hello,

pour la partie PHP, je peux pas t'aider, mais par contre le problème rencontré par Paypal est qu'il ne gère pas les caractères accentués.

Ce qui pose souvent problème pour passer commande, par exemple si dans l'adresse il y a un accent :

12 rue de rivière => plantage et payment Paypal impossible

12 rue de la riviere => c'est ton bon

Bonne chance, je sais pas si ça pourra t'aider, moi ça m'a déjà bloqué pour payer avec Paypal (j'ai du changer d'adresse pour pouvoir commander :D )

Posté (modifié)

Euh non, le problème vient pas de là :unsure:

Pour l'instant je lui envoie que des valeurs sans accentuation :wacko:

Merci quand même :P

Avec ce code je reçois toujours "Veuillez entrer un montant supérieur à zéro." même après avoir entré manuellement les informations nécessaires:

echo '<input type="hidden" name="add" value="'.$nbLignes.'">';
echo '<input type="hidden" name="cmd" value="_cart">';
echo '<input type="hidden" name="business" value="'.$adresse.'">';
echo '<input type="hidden" name="currency_code" value="EUR">';
//test
echo '<input type="hidden" name="item_name_1" value="livre1">';
echo '<input type="hidden" name="item_number_1" value="ABCDEF">';
echo '<input type="hidden" name="amount_1" value="15">';
echo '<input type="hidden" name="quantity_1" value="2">';
echo '<input type="hidden" name="no_note_1" value="1">';
echo '<input type="hidden" name="item_name_2" value="livre2">';
echo '<input type="hidden" name="item_number_2" value="GHIJK">';
echo '<input type="hidden" name="amount_2" value="10">';
echo '<input type="hidden" name="quantity_2" value="3">';
echo '<input type="hidden" name="no_note_2" value="1">';

Modifié par XenoDeus
Posté
Personne ne comprend mon problème :'( ça fait une semaine que j'y suis deçu :'(  :wacko:

Bonjour,

Non, pas vraiment :(

En regardant sur le site Paypal, tout ce que je trouve c'est comment ajouter UN SEUL item dans le panier (avec une quantité pouvant être différente de 1 bien sûr) ... et pas toute une série à la fois.

Le formulaire d'ajout a un champ nommé "amount" et je n'ai pas trouvé de champ "amount_1", "amount_2", etc.

Est-ce que ton problème ne viendrait pas de là ?... du fait que la variable "amount" n'est pas déclarée, elle est donc nulle.

Dan

Posté (modifié)

Hum lol, je viens de remarquer un truc en relisant le guide d'intégration de paypal lol. Je me référait au chapitre d'"envoie du montant total" page 56 mais j'étais arrivé à la page suivante par recherche qui indiqué pour insérer plusieurs produits dans ce document. :boude: Je crois que je peux sauter par la fenêtre lol

Je crois pas qu'on peut remplir d'un seul coup tout le panier. Je peux juste envoyer la somme totale. :D

Merci Dan ^^

Edit:

Par contre, vous connaissez le code que je devrais utiliser pour pouvoir récuperer des informations sur le client lorsqu'il passe une commande afin que je puisse les gérer dans ma bases de données? Je voudrais garder le nom, l'adresse de livraison, le num tel, l'email ... voilà ^^

Modifié par XenoDeus
Posté
Je crois pas qu'on peut remplir d'un seul coup tout le panier. Je peux juste envoyer la somme totale.  :D

C'est bie ce qu'il me semblait... Paypal est un système de paiement, pas autre chose. ;)

Mais j'ai vu qu'ils ont toutefois un système de caddie... il doit donc être possible d'insérer les articles un à un.

Pour les infos à récupérer dans la base de données, quel est ton problème ?

Dans la mesure où tu as ces infos à disposition, il suffit de passer par une page intermédiaire qui insèrera ces données en base, avant la validation du caddie et l'appel de la page de règlement Paypal.

Dan

Posté (modifié)

J'ai essayé une fois d'envoyer en boucle chaque article lorsque je voulais valider la commande mais euh ça a pas trop plus à IE lol, ça ramé à mort avant de m'afficher un message d'erreur: un script est en cours, voulez vous l'arreter, sinon vous risquez de ne plus avoir de réponse de l'ordi ... (un truc comme ça). :D

Là je lui ai défini un montant qui est le montant totale: lorsque je clique, il m'ouvre une fenêtre paypal avec un tableau contenant un champ quantité:1 , un champ pour supprimer, un champ vide (là où est censé être la désignation), le champ option vide et le champ prix qui contient le montant total.

Je me suis dit, c'est peut être normale.

J'ai donc continué: validation et paiement sécurisé.

Lorsque je veux voir le contenu de mon panier et il réaffiche la même chose... Est-ce que c'est normale? ou le détail sera affiché après ??? :wacko:

Y a t-il un moyen de tester sans payer?

Y a t-il aussi un moyen que le site soit intégralement en français? car lorsque j'accepte la commande, la page suivante est en anglais (bon il suffit de rajouter "fr/" apres &quot;http://www.paypal.com/" mais bon pour le client :(

Edit:

Et à propos des infos que je veux savoir concernant le client, si celui-ci est déjà enregistré auprès de paypal, cela lui sera fastidieux, à moins que je lui crée un compte qu'il remplie une fois ^^ mais le problème c'est que s'il rentre n'importe quoi dans son formulaire d'inscription (alors qu'il sera obligé d'utiliser les bonnes informations sur paypal ^^). Je voudrais au moins récupérer l'adresse de livraison par paypal afin de la comparer avec celle enregistrée dans la base et mettre à jour si nécessaire.

Modifié par XenoDeus
Posté

Tu peux tester en payant 1 Euro, et en annulant le paiement ensuite ;)

Ils n'ont malheureusement pas d'interface de test.

Posté
On peut utiliser le même compte?

Je veux dire j'achète chez moi  :wacko:

Non , je ne pense pas que ce soit possible :(

Posté (modifié)

Youpi :hourra:

J'ai réussi :hourra:

J'ai réussi à envoyer le contenu complet du panier et aller directement au paiement sans que le client puisse modifier :hourra:

:lol:

    	// Information pour le panier PayPal
    if ($nbLignes==1)
     {
     echo '<input type="hidden" name="add" value="1">';
     //echo '<input type="hidden" name="upload" value="1">'; ne semble pas fonctionner pour un seul produit :(
     echo '<input type="hidden" name="item_name" value="'.$des.'">';
     echo '<input type="hidden" name="item_number" value="'.$ref.'">';
     echo '<input type="hidden" name="amount" value="'.$prix.'">';
     echo '<input type="hidden" name="quantity" value="'.$qte.'">';
     echo '<input type="hidden" name="no_note" value="1">';
     }
    else
     {
     $prod_choix++;
     echo '<input type="hidden" name="upload" value="'.$prod_choix.'">';
     echo '<input type="hidden" name="item_name_'.$prod_choix.'" value="'.$des.'">';
     echo '<input type="hidden" name="item_number_'.$prod_choix.'" value="'.$ref.'">';
     echo '<input type="hidden" name="amount_'.$prod_choix.'" value="'.$prix.'">';
     echo '<input type="hidden" name="quantity_'.$prod_choix.'" value="'.$qte.'">';
     echo '<input type="hidden" name="no_note_'.$prod_choix.'" value="1">';
     }
   echo '</tr>';
   }
  echo '<input type="hidden" name="cmd" value="_cart">';
  echo '<input type="hidden" name="business" value="'.$adresse.'">';
  echo '<input type="hidden" name="currency_code" value="EUR">';
  }

Maintenant, il faut que je récupère l'accusé de réception pour savoir s'il la commande a bien été validé afin de valider la commande dans ma base de donnée. Vous savez comment le faire?

Au fait, j'ai entendu parler d'ipn : kesako ???? :wacko:

Edit: Ben je viens de me rendre compte que je n'avais pas besoin de gérer s'il n'y a qu'un seul produit.

// Information pour le panier PayPal
   //if ($nbLignes==1)
     //{
     //echo '<input type="hidden" name="upload" value="1">';
     //echo '<input type="hidden" name="item_name_1" value="'.$des.'">';
     //echo '<input type="hidden" name="item_number_1" value="'.$ref.'">';
     //echo '<input type="hidden" name="amount_1" value="'.$prix.'">';
     //echo '<input type="hidden" name="quantity_1" value="'.$qte.'">';
     //echo '<input type="hidden" name="no_note_1" value="1">';
     //}
   //else
     //{
     $prod_choix++;
     echo '<input type="hidden" name="upload" value="'.$prod_choix.'">';
     echo '<input type="hidden" name="item_name_'.$prod_choix.'" value="'.$des.'">';
     echo '<input type="hidden" name="item_number_'.$prod_choix.'" value="'.$ref.'">';
     echo '<input type="hidden" name="amount_'.$prod_choix.'" value="'.$prix.'">';
     echo '<input type="hidden" name="quantity_'.$prod_choix.'" value="'.$qte.'">';
     echo '<input type="hidden" name="no_note_'.$prod_choix.'" value="1">';
     //}

Modifié par XenoDeus

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...