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

Langage PHP Discussion :

Payement boutique en ligne


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut Payement boutique en ligne
    Bonjour,

    Je suis en train de créer un site de e-commerce.
    Une fois que l'internaute a selectionné ses articles (enregistrés dans une variable de session) etc... il voit le contenu de son panier (facture.php) puis il clique sur payer commande et la il est redirigé vers le site de la banque, suite à ca il revient sur le site sur une page payement_accepte.php ou payement_refuse.php.

    Entre le moment ou il est sur la page facture.php et ou il revient sur la page payement_accepte.php il faut pour éviter qu'il ajoute des articles au panier sans les payer créer un numéro de panier recensant les articles qu'il a dans son panier pour cette commande ou autre non (ou faut il déjà procéder à un enregistrement en bdd avec un tupple indiquant l'état (accepte ou refuse)) ?

    Comment faire car je bloque a ce niveau la ?
    Merci d'avance pour votre réponse,
    Cordialement

  2. #2
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    hello

    "il est sur la page facture.php et ou il revient sur la page payement_accepte.php"
    ce qui se passe à ce moment là ne devrait à priori pas être stricte mais simplement informatif. genre "Votre commande est en traitement".
    les Banques (module Atos, PayPal, ....) travaillent à priori avec un fichier auto_response : ce fichier est une communication de serveur à serveur (invisible, inexistant plutôt, sur le navigateur) qui ne permet aucune action par personne.
    c'est cette communication de serveur à serveur qui devrait déclencher les actions voulues en cas de payement, pas le retour par click.
    j'achète toutes ta boutique pour zéro balle sinon

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Quelque soit le mode de persistance (SESSION ou Bdd), une fois la commande validée (et donc juste avant l'étape du paiement) il faut bloquer celle-ci par exemple avec un booleen.

    Pourquoi ?
    Car la personne peut commander 10 articles, valider sa commande, puis laisser un seul article et proceder au paiement, du coups elle paie 1 articles et en reçoit 10 c'est une faille courante dans les anciens systèmes de panier.

    Autre solution comme évoqué, générer un numéro de commande sur l'étape de validation et transmettre le numéro et le montant associé lors du paiement.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par cholopat Voir le message
    hello
    C'est cette communication de serveur à serveur qui devrait déclencher les actions voulues en cas de payement, pas le retour par click.
    j'achète toutes ta boutique pour zéro balle sinon
    Citation Envoyé par RideKick Voir le message
    Quelque soit le mode de persistance (SESSION ou Bdd), une fois la commande validée (et donc juste avant l'étape du paiement) il faut bloquer celle-ci par exemple avec un booleen.

    Pourquoi ?
    Car la personne peut commander 10 articles, valider sa commande, puis laisser un seul article et proceder au paiement, du coups elle paie 1 articles et en reçoit 10 c'est une faille courante dans les anciens systèmes de panier.

    Autre solution comme évoqué, générer un numéro de commande sur l'étape de validation et transmettre le numéro et le montant associé lors du paiement.
    Bonjour,

    Vous avez tous les deux exactement compris mon problème et RideKick l'explique très bien
    Citation Envoyé par RideKick Voir le message
    une fois la commande validée (et donc juste avant l'étape du paiement) il faut bloquer celle-ci par exemple avec un booleen.
    Ma question est maintenant comment faire pour "bloquer" l'ajout d'articles au panier ?
    Ce matin j'ai pensé faire comme suit :
    - Une fois que la personne clique sur le bouton "payer la commande" un numero aléatoire de 15 chiffres via la fonction rand() est créer; les articles qu'il a ajouté ainsi que ce numéro sont enregistrés dans la base de données, la table "paye_commande" contient dans une tupple "etat_commande" -> en attente

    L'internaute fait sa transaction via le site de la banque puis est renvoyé sur le site... Si j'ai bien compris d'après la documentation du cic il faut 2 pages une vers laquelle il renvoie si la transaction est acceptée et l'autre vers laquelle il renvoie si la transaction est refusée.

    La page vers laquelle il est renvoyé serait dans mon cas tenue "secrete" :

    une page X (commande acceptée) -> Un update de tous les tupples etat_commande contenant le numéro de commande généré auparavant est effectué.

    Une page Y (commande refusee) -> Un delete de tous les tupples contenant le numero de commande generé auparavant est effectué.

    Ces deux pages contient un header(Location:...) de façon a ce que l'internaute soit redirigé vers une page au message informatif (commande bien enregistrée / commande refusée) sans avoir connaissance des deux pages "secrètes".

    Que pensez-vous de ma technique est-ce bien ou complètement nul et trop compliqué ?

    Merci d'avance pour votre réponse

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Citation Envoyé par popy67 Voir le message
    Bonjour,

    Vous avez tous les deux exactement compris mon problème et RideKick l'explique très bien
    Je sais


    Citation Envoyé par popy67 Voir le message
    Ma question est maintenant comment faire pour "bloquer" l'ajout d'articles au panier ?
    Si ton panier est en session, tu peux faire un boolean que tu regarde avant chaque modifs du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!$commandeBloquee)
    {
    //Traitement
    }
    Citation Envoyé par popy67 Voir le message
    Ce matin j'ai pensé faire comme suit :
    - Une fois que la personne clique sur le bouton "payer la commande" un numero aléatoire de 15 chiffres via la fonction rand() est créer; les articles qu'il a ajouté ainsi que ce numéro sont enregistrés dans la base de données, la table "paye_commande" contient dans une tupple "etat_commande" -> en attente
    Pas mal non plus en faisant attention que le numero aleatoire ne revienne pas

    Citation Envoyé par popy67 Voir le message
    L'internaute fait sa transaction via le site de la banque puis est renvoyé sur le site... Si j'ai bien compris d'après la documentation du cic il faut 2 pages une vers laquelle il renvoie si la transaction est acceptée et l'autre vers laquelle il renvoie si la transaction est refusée.
    oui ça se passe comme ça

    Citation Envoyé par popy67 Voir le message
    La page vers laquelle il est renvoyé serait dans mon cas tenue "secrete" :

    une page X (commande acceptée) -> Un update de tous les tupples etat_commande contenant le numéro de commande généré auparavant est effectué.

    Une page Y (commande refusee) -> Un delete de tous les tupples contenant le numero de commande generé auparavant est effectué.

    Ces deux pages contient un header(Location:...) de façon a ce que l'internaute soit redirigé vers une page au message informatif (commande bien enregistrée / commande refusée) sans avoir connaissance des deux pages "secrètes".

    Que pensez-vous de ma technique est-ce bien ou complètement nul et trop compliqué ?

    Merci d'avance pour votre réponse
    Alors la par contre ça se gate ...
    La page qui est tenue secrète en générale est une page appelée par le système de la banque pour que tu puisse valider ou non une commande (via des paramètres qu'elle te renvoi) cette page est appelée par la banque le user n'y a pas accès.

    Tu peux ensuite rediriger ton utilisateur sur une page qui lui dira si oui ou non la commande est validée.
    Je te conseille aussi de ne pas effacer les commandes refusées, simplement de les marquer en tant que tel dans la base pour quelques raison simple :

    - Statistiques : tu peux ensuite voir le nombre de panier validés, voir faire des statistiques sur les produits qui sont les plus demandés sur ton site.
    - Technique : Si tu mets en base juste le temps de la transaction et que tu efface après ça n'a aucun sens et donc tu peux t'en passer
    - Logique : le paiement refusé peut l'être par erreur de la banque ou parce que la carte de l'utilisateur arrive a peremption, il peut etre judicieux de la garder au chaud le temps que le problème se règle et que l'utilisateur puisse repasser par le paiement de sa commande.

    Voila mon humble avis.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Alors la par contre ça se gate ...
    La page qui est tenue secrète en générale est une page appelée par le système de la banque pour que tu puisse valider ou non une commande (via des paramètres qu'elle te renvoi) cette page est appelée par la banque le user n'y a pas accès.
    Re

    Merci bcp pour ton aide......
    Tu me dis que la page est appellée par la banque avec des paramètres etc... jusque la ok... Mais...
    si je ne mets pas de redirection vers une page sans script php l'internaute a connaissance de l'url cette page "secrete" et contenant les instructions d'update des tupples.
    Il pourrait donc lors d'une prochaine commande modifier les paramètres de l'url renvoyée par la banque lors de sa commande précédente (renvoyant sur la page secrète) puis directement appeler cette page ce qui updaterait les tupples en sa faveur sans avoir payé non ?

    Dis moi si j'me trompe

  7. #7
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Si la page est secrète comment veux-tu que l'utilisateur puisse y acceder puisqu'il ne connait pas l'existence de celle ci ?
    De plus tu peux protéger cette page dans un répertoire avec un fichier .htaccess et tu fournis les identifiants a la banque ...la encore meme si il "devine" où se situe ta page il ne pourra pas y accéder.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut
    ok ok merci j'ignorais qu'on puisse les mettre dans un repertoire protegé etc... C'est la toute première fois que je créer une boutique et que j'utilise ce système

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [osCommerce] Que penser de osCommerce pour démarrer sa boutique en ligne ?
    Par Anne1969 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 17/03/2008, 10h41
  2. Boutique en ligne : Solution de paiment la plus simple ?
    Par Lareine dans le forum E-Commerce
    Réponses: 5
    Dernier message: 07/05/2006, 17h59
  3. [eCommerce][Boutique en ligne] Solutions open-source
    Par Ben42 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 18/11/2005, 13h54

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