Jump to content

Effectuer une action lors de la confirmation du payement sur prestashop


Recommended Posts

Bonjour, j'ai très peu de notion dans le CMS prestashop mais j'ai déjà travailler sur des projets en PHP.


 


Je souhaiterait lorsque la commande est validé (confirmation de Paybox ou d'un autre moyen de payement) pouvoir faire exécuter un fonction( qui envoie des informations a un autre site via Curl).


Je cherche donc a savoir ou ce situe la fonction qui récupère les confirmations des payements afin d'y appeler ma fonction?


Pour ma fonction doit-je crée une nouvelle class?


Merci d'avance.


Link to comment
Share on other sites

Bonjour,

Je ne sais pas exactement ce que vous voulez faire, mais le hook à utiliser sera hookActionPaymentConfirmation.

Vous pouvez passer par un module qui s'accrochera sur ce hook et qui libèrera vos informations via cURL, je pense.

Après, il faut voir de quelles informations vous avez besoin de faire passer.

Créer une nouvelle class juste pour une action ne me paraît pas pertinent pour le coup, mais peut-être avez-vous certains besoins que vous n'avez pas détaillé ici.

 

J'espère vous avoir éclairé un peu,

Bonne journée,

Cordialement,

Lactor

Link to comment
Share on other sites

Merci pour ta réponse

 

j'ai pas bien compris pour le hook ActionPaymentConfirmation, je doit le trouver est appeler ma fonction dedans? ou le crée?

J'ai chercher et j'ai vue que le hook est appeler dans OrderHistory 

 

PS: Je cherche a ce qu'a chaque commande valider et payé, j'envoie des informations sur l'acheteur de la commande à un autre site.

 

Ma fonction actuel en class:

<?php

// $methode = "POST"
// $tabParam = tableau de donnée où la clé représente le nom de la variable.
// Exemple $tabParam =array("numero_client"=>"I-12122")


class requeteHTTPController
     {
         private $resultat;
         public function __construct($URL,$methode,$tabParam)
         {


             $keys=array_keys($tabParam);
             $chainePost="";
             for($i=0;$i<=count($keys)-1;$i++)
             {
				if($i!=0)
				{
				$chainePost=$chainePost."&".$keys[$i]."=".$tabParam[$keys[$i]];
				}
				else
				{
					$chainePost=$keys[$i]."=".$tabParam[$keys[$i]];
				}
             }

             $ch = curl_init($URL);
             //set the url, number of POST vars, POST data
             curl_setopt($ch, CURLOPT_URL, $URL);
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
             curl_setopt($ch, CURLOPT_POST,1);
             curl_setopt($ch, CURLOPT_POSTFIELDS,$chainePost);
             curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
             curl_setopt($ch, CURLOPT_HEADER      ,0);
             // DO NOT RETURN HTTP HEADERS
             curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);
             // RETURN THE CONTENTS OF THE CALL
             //execute post
             $resultat = curl_exec($ch);
             //close connection
             curl_close($ch);

             $this->resultat=$resultat;
         }

         public function getResultat()
         {
             return $this->resultat;
         }


     }

?>

Merci d'avance

Link to comment
Share on other sites

Bonjour,

En fait, prestashop fonctionne en MVC (Model-View-Controller), les hooks sont des points d'exécution de méthodes pour les contrôleurs, et définis dans l'init d'un module ou d'une class.

Les hooks sont des points d'accroche, si vous voulez, c'est un point qui va effectuer une méthode ou plusieurs, d'une class/module ou de plusieurs. Les controllers se chargent de faire passer des données de la vue au model, c'est donc par lui que passent toutes les exécutions de méthodes qui font appel à des données utilisateurs.

 

Dans une class, on appelle le hook de cette manière Hook::exec('nomDuHook); car on fait appel à la fonction exec de la class Hook. On appelle le hook de cette façon dans un controller front-office : 

$this->context->smarty->assign('THE_HOOK_TO_CALL', Module::hookExec('theHookToCall'));

. Sinon, dans un module, dans le fichier de configuration/initialisation du module, on définit les hooks où le module exécutera son code, en faisant ainsi:

dans la méthode install() du module, on appelle $this->registerHook('monHookAAppeler'); et ensuite on écrit la méthode correspondante au hook :

public function hookMonHookAAppeler() {//some code}

 

Pour en revenir à votre class, vous pouvez créer un module tout simple, avec un seul point d'accroche sur le hook que je vous ai donné, avec votre code de class dedans.

 

Normalement, ce hook, ActionPaymentConfirmation existe déjà, c'est par lui que passe l'affichage du template de confirmation de commande et tout ce qui peut se passer après que le paiement ait été validé. Regardez dans la liste de "Positions" dans le menu "Modules" pour vous faire une idée des hooks disponibles sur votre boutique.

C'est le hook que j'utilise pour mettre à jour des informations dans la base de données, pour ma part (:

 

J'espère avoir été claire, n'hésitez pas à me le dire si vous ne comprenez pas quelque chose. La doc de prestashop pourra vous être utile pour voir comment le CMS fonctionne,

--> http://doc.prestashop.com/pages/viewpage.action?pageId=15171588

 

Bonne journée,

Cordialement,

Lactor

Link to comment
Share on other sites

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...