Jump to content

Pb de changement de status d'un dossier


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