ACTION
FO+BO
Desde 1.5
actionValidateOrder
~3 min de lectura
#Descripcion
Se ejecuta cuando un pedido es completamente validado, es decir, despues de que el modulo de pago llame a `validateOrder()`. Es el hook mas importante del ciclo de vida de un pedido. Se dispara una sola vez por pedido, justo cuando el dinero es confirmado y el pedido queda registrado en la base de datos.
Disparado por
-
PaymentModule::validateOrder()— classes/PaymentModule.php
#Parametros
| Nombre | Tipo | Requerido | Descripcion |
|---|---|---|---|
| $cart | Cart | Si | Objeto Cart que origino el pedido |
| $order | Order | Si | Objeto Order recien creado |
| $customer | Customer | Si | Cliente que realizo el pedido |
| $currency | Currency | Si | Moneda del pedido |
| $orderStatus | OrderState | Si | Estado inicial del pedido |
| $id_order | int | Si | ID del pedido creado |
| $extraVars | array | No | Variables extra del modulo de pago |
Retorno
void
Este hook no espera valor de retorno
#Ejemplo de codigo
mymodule.php
php
<?php
// En el metodo install() de tu modulo:
public function install()
{
return parent::install()
&& $this->registerHook('actionValidateOrder');
}
mymodule.php
php
<?php
/**
* Hook actionValidateOrder
* Se ejecuta cuando el pedido es confirmado
*/
public function hookActionValidateOrder(array $params)
{
/** @var Order $order */
$order = $params['order'];
/** @var Cart $cart */
$cart = $params['cart'];
/** @var Customer $customer */
$customer = $params['customer'];
/** @var Currency $currency */
$currency = $params['currency'];
// Ejemplo: Enviar notificacion a sistema externo
$data = [
'order_id' => $order->id,
'reference' => $order->reference,
'total' => $order->total_paid,
'currency' => $currency->iso_code,
'customer' => $customer->email,
'date' => date('Y-m-d H:i:s'),
];
// Registrar en la BD del modulo
Db::getInstance()->insert('my_order_export', [
'id_order' => (int)$order->id,
'data' => pSQL(json_encode($data)),
'created_at' => date('Y-m-d H:i:s'),
]);
// Enviar webhook
// $this->sendWebhook($data);
}
#Notas y gotchas
- ⚠️ Este hook se ejecuta **una sola vez** por pedido, cuando el pago es confirmado.
- ⚠️ El parametro `$params['order']` ya tiene `id > 0` — el pedido ya esta en la BD.
- ⚠️ Si necesitas ejecutar logica despues de que el estado del pedido sea asignado, usa `actionOrderStatusUpdate`.
- ⚠️ Evita operaciones pesadas o peticiones HTTP sincronas en este hook — pueden bloquear al cliente en la pagina de confirmacion.
- ⚠️ El carrito (`$params['cart']`) ya NO esta activo en este punto — ha sido 'consumido' para crear el pedido.
- ⚠️ Para crear facturas o documentos PDF despues del pedido, usa `actionSetInvoice` en su lugar.
#Relacionados
#Historial de versiones
| Version PS | Cambio |
|---|---|
| 1.5 | Introducido con los parametros basicos |
| 1.6 | Añadido el parametro `extraVars` |
| 1.7 | Sin cambios. Compatible con PS 1.7, 8.x y 9.x |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.