Yos6 Posted June 29, 2016 Share Posted June 29, 2016 (edited) Bonjour à tous ! Je suis un peu novice sur Prestashop et je dois dire que je galère un peu pour trouver des infos sur le fonctionnement et l'architecture ;-) En fait j'aurais souhaité savoir si des personnes plus éclairées que moi auraient quelques pistes à me communiquer En résumé : Je tente de récupérer d'une manière ou d'une autre toutes les infos me permettant de tracker une vente de n'importe quelle boutique Prestashop au travers d'un module (que mes clients installeront). Pour cela, 2 requêtes à exécuter sur mon serveur sont nécessaires : une pré-paiement et une post-paiement (qui me confirme la 1ère). En détail : 1) Pour la requête pré-paiement d'abord. Il faut que je trouve un moyen de l’exécuter au bon moment, à savoir juste avant la confirmation de paiement ou à défaut au moment où l'on affiche la liste des modes de paiements. Pour effectuer cette requête, j'aurais besoin de récupérer des informations précises sur la commande en cours : - Le numéro de commande (est-il déjà généré à ce moment là ?) - Le nom et prénom du client - Le prix total HT (hors frais de port) de toute la commande - Le code d'une remise éventuelle s'appliquant sur toute la commande - La devise que le client a utilisé pour payer - Le contenu détaillé du panier avec pour chaque article : > la catégorie du produit > la quantité et la description sommaire du produit > le prix HT du produit * la quantité choisie > le code d'une remise éventuelle sur l'article uniquement - Le mode de paiement choisi par le client (carte bancaire, Paypal, chèque, virement...) - Le client a t-il créé un nouveau compte pour l'occasion ? 2) Je stocke ensuite ces informations dans un tableau que j'encode en JSON. 3) J'insère une image invisible à ce moment précis qui aura pour effet de lancer la requête vers mon serveur distant : <img src="http://monserveur.com/traitement.php?data=[TABLEAU JSON]"> Comme vous pouvez le constater, j'ai ajouté en paramètre GET mon tableau JSON. 4) Pour la requête post-paiement. A exécuter logiquement juste après la confirmation de paiement donc au moment où le client est redirigé sur la page de confirmation de commande. Pour celle là j'aurais besoin de récupérer seulement : - le numéro de commande - le mode de paiement Je refais la même chose que pour la 1ère requête (tableau JSON en paramètre dans une image invisible que j'insère etc...). J'espère avoir été clair Pensez-vous que ceci est réalisable au travers d'un seul module et donc pouvant facilement être installé ensuite dans Prestashop ? J'ai déjà installé en local une petite boutique de test en version 1.6. D'ailleurs il faudrait que ce module soit un max compatible avec les versions précédentes... mais bon ça je verrais après. J'ai commencé à potasser sur la création de module : le dossier et les fichiers à créer, la méthode d'installation et de désinstallation et surtout l'histoire des hooks pour "accrocher" du code à un évènement. Le hic, c'est que je ne sais pas trop par où commencer ! Merci d'avance ! Edited June 29, 2016 by Yos6 (see edit history) Link to comment Share on other sites More sharing options...
Yos6 Posted July 5, 2016 Author Share Posted July 5, 2016 (edited) Merci beaucoup, ton lien m'a déjà bien aidé et j'ai réussi à faire fonctionner ma 1ère requête Par contre, certaines infos que je dois récupérer me pose encore problème : - Le numéro de commande : si j'ai bien compris, il n'est généré que après le paiement, donc avant c'est grillé (je n'ai pas encore décortiqué le fonctionnement de l'après paiement...) - Savoir si le client a créé un nouveau compte pour la commande : j'ai repéré la méthode static "isGuestCartByCartId($id_cart)" de l'objet Cart mais ça n'a pas l'air d'être ça car même en créant un compte au moment de la commande, la méthode me renvoie FALSE. - Les codes promo. Alors là c’est la choucroute pour moi... L'idéal pour moi est d'arriver à constituer un tableau qui me liste chaque produit du panier avec les infos suivantes : > Catégorie : OK > Nom : OK > Prix : OK > TVA : OK > Quantité : OK > Ecotaxe : OK > Code promo : ??? > Valeur du code promo : ??? > Type du code promo (% ou €) : ??? Voilà, donc ça coince au niveau des 3 dernières infos... car si je ne me trompe pas, la méthode getProducts() de l'objet Cart qui liste les produits du panier ne donne pas cette infos... Il faudrait que je trouve quelque chose qui fait le lien entre les codes promo et les produits du panier. Edited July 5, 2016 by Yos6 (see edit history) Link to comment Share on other sites More sharing options...
Yos6 Posted July 5, 2016 Author Share Posted July 5, 2016 Alors getCartRules j'avais déjà cherché, ça se contente de lister les codes que l'utilisateur a entré, MAIS ça ne dit pas à quels produits du panier ça s'applique. Par exemple si j'ai plusieurs produits dans le panier et que seulement 1 est concerné par le code, je ne vois pas ce qui peut me le dire avec cette méthode. Après peut être ai-je loupé quelque chose ? Link to comment Share on other sites More sharing options...
Yos6 Posted July 6, 2016 Author Share Posted July 6, 2016 (edited) Ah il y a la méthode "checkProductRestrictions" qui ramène les produits sélectionnés, mais elle est en "protected" ! Donc je peux pas m'en servir dans la classe de mon module... Bon au pire je peux peut être me débrouiller pour la réutiliser en surchargeant la classe ?... Edited July 6, 2016 by Yos6 (see edit history) Link to comment Share on other sites More sharing options...
Yos6 Posted July 11, 2016 Author Share Posted July 11, 2016 Logiquement je suis ok avec les codes promo. Par contre je coince avec cette histoire de nouveau client lors d'une commande... je vois qu'un hook "actionCustomerAccountAdd" existe pour voir si un compte a été créé, mais moi j'ai besoin de cette info au moment de mon traitement qui génère la requête, à savoir au hook "displayBeforePayment". Et là... je sèche un peu. Quelqu'un a t-il une piste ? Link to comment Share on other sites More sharing options...
Yos6 Posted August 30, 2016 Author Share Posted August 30, 2016 J'up ce sujet pour vous informer que j'ai réussi à peu près ce que je voulais faire (si jamais d'autres sont intéressés pour que je les aide). Il me reste toutefois des inconnues notamment pour ma 2ème requête => post-paiement donc. Je n'ai pu tester qu'avec le module chèque et virement bancaire en utilisant le hook "displayOrderConfirmation" pour lancer mon traitement, et ça fonctionne. En revanche, je sais pas du tout si ce hook fonctionne pour tous les modes de paiement (notamment avec Paypal ou CB). Quelqu'un saurait-il me dire cela ? ou savez-vous comment est-il possible de tester des paiements par CB ? Link to comment Share on other sites More sharing options...
Yos6 Posted November 3, 2016 Author Share Posted November 3, 2016 Est-ce quelqu'un saurait si il est possible (par l'intermédiaire d'un hook par exemple) si il est possible de capter l'évènement "clic d'un mode de paiement" à la cinquième étape ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now