Ah zut j'avais pas vu la réponse ! Vous êtes trop rapide (et j'apprécie beaucoup )
"La gestion de cet identifiant de transaction est spécifique à chaque module de paiement"
Je suis d'accord c'est ce que je voulais faire, mais je veux remplir le champ `transaction_ref` dans les tables `order_version` et `order` (et il y a un {set/get}TransactionRef() dans la classe Order de base (core/lib/Thelia/Model/Base/Order.php), donc j'aurais voulu remplir ces champs-ci.
Pour Paypal, voici la partie du code concernée, je rajoute des commentaires pour le contexte + ce que j'aurais bien voulu faire:
<?php
$response = $paypal_machin->send(); // je simplifie, mais dans $response on a un tableau associatif
// $response = ['PAYPAL_STATUS' => 'Completed', 'TRANSACTION_ID' => '123456789abcdefghi' ]
if ($payment_has_been_completed)
$event = new OrderEvent($order); // un peu plus haut, $order est l'objet retourné par $order = $this->checkorder($order_id,$token);
$event->setStatus(OrderStatusQuery::getPaidStatus()->getId());
// ici, j'aurais voulu "simplement rajouter" $event->setTransactionRef($response['TRANSACTION_ID']);
$this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS,$event);
$this->redirectToSuccessPage($order_id);
mais OrderEvent (extends ActionEvent) n'a pas de méthode setTransactionRef … On a getRef/setRef, mais ils correspondent à la référence genre "ORD000001"
Donc je veux faire comme tu as dit… mais avant je pense que je dois modifier OrderEvent (pour que ça apparaisse dans order_version) non ?
Dans Payzen ça se fait plus simplement, directement avec l'objet "$order", mais il n'utilise pas du tout "dispatch event" :
$order->setTransactionRef($transaction_id)->save();
Last edited by Asenar (10-12-2015 18:20:55)