Jump to content

Pb de changement de status d'un dossier


alex.td
 Share

Recommended Posts

Bonjour à tous,

J'ai installé un module de paiement (fournis par ma banque) mais il ne gère pas correctement un cas particulier : si un paiement est raté, on peut retenter l'opération immédiatement, réussir le paiement la deuxième fois et pourtant le dossier reste en 'erreur de paiement'. Le module actuellement fait ça :

 

  1. paiement réussi => le module crée un dossier en "paiement accepté" avec $this->validateOrder(...)
  2. paiement raté => le module crée un dossier en "erreur de paiement" avec $this->validateOrder(...)
  3. paiement raté puis réussi => c'est là que le module coince. $this->validateOrder(...) ne marche plus vu que le dossier existe déjà : il a été créé au moment du paiement raté et je le retrouve bien avec :
$id_order = Order::getOrderByCartId(intval($ref));

J'ai tenté :

$history = new OrderHistory();
$history->id_order = $id_order;
$history->changeIdOrderState(_PS_OS_PAYMENT_, $id_order);

Mais ça ne marche que très partiellement : une ligne (new OrderPayment()) apparait dans la boite "paiement" du dossier (dans le bo presta) mais sans que le transaction_id ne soit conservé, le dossier n'a pas de nouvelle ligne d'état qui dirait "paiement accepté" et pas de mail de "confirmation de commande" ...

 

J'ai tenté ensuite :

$order=new Order($id_order);
$order->setCurrentState(_PS_OS_PAYMENT_);

Ça marche presque bien : une ligne apparait dans la boite "paiement" du dossier avec le lien vers la facture, mais toujours pas de transaction_id, le dossier change bien d'état et apparait en "paiement accepté", je reçois le mail "paiement accepté", mais toujours pas de mail de "confirmation de commande" ...

 

J'ai mème tenté de rajouter :

$order->addOrderPayment(Tools::ps_round((float)$custom['montant_sent'], 2), null, $custom['id_trans']);

J'étais content, j'avais bien ma ligne avec le transaction_id, mais en plus de celle que prestashop a quand même ajoutée : ça m'a valu une grosse notice rouge disant "Attention 2x payé au lieu de x"...

Si quelqu'un pouvait me donner un coup de pouce, d'avance merci.

 

PS: j'ai oublié de préciser PS 1.5.4.1

Edited by alex.td (see edit history)

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More