Jump to content

Développement d'un module de tracking


Recommended Posts

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 by Yos6 (see edit history)
Link to comment
Share on other sites

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 by Yos6 (see edit history)
Link to comment
Share on other sites

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

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 by Yos6 (see edit history)
Link to comment
Share on other sites

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

  • 1 month later...

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

  • 2 months later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...