---
title: actionPaymentConfirmation
section: hooks
slug: actionPaymentConfirmation
hook_type: action
category: payment
location: FO+BO
since_version: 1.5
source_url: "https://ayudaprestashop.es/hooks/actionPaymentConfirmation"
---

# Hook `actionPaymentConfirmation`

| Propiedad | Valor |
| --- | --- |
| Tipo | Action |
| Localizacion | FO+BO |
| Categoria | payment |
| Desde version | 1.5 |

## Descripcion

Se ejecuta cuando el pago de un pedido es confirmado. A diferencia de actionValidateOrder que se dispara al crear el pedido, este hook se ejecuta especificamente cuando el estado del pago cambia a 'pagado'. Util para modulos que necesitan reaccionar solo a la confirmacion del pago (no a la creacion del pedido), como sistemas de facturacion, activacion de licencias digitales, o notificaciones a proveedores.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `id_order` | `int` | si | ID del pedido cuyo pago ha sido confirmado |

## Valor de retorno

- **Tipo**: `void`
- **Descripcion**: No se espera valor de retorno

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| OrderHistory | `OrderHistoryCore` | `changeIdOrderState()` | `classes/order/OrderHistory.php` |

**Paginas**: `admin-order-view`

## Registro del hook

```php
public function install()
{
    return parent::install()
        && $this->registerHook('actionPaymentConfirmation');
}
```

## Ejemplo de uso

```php
/**
 * Hook actionPaymentConfirmation — Activar licencia digital
 */
public function hookActionPaymentConfirmation($params)
{
    $id_order = (int)$params['id_order'];
    $order = new Order($id_order);

    if (!Validate::isLoadedObject($order)) {
        return;
    }

    $products = $order->getProducts();
    $customer = new Customer($order->id_customer);

    foreach ($products as $product) {
        // Verificar si es un producto digital
        $isDigital = Db::getInstance()->getValue(
            'SELECT is_digital FROM `' . _DB_PREFIX_ . 'mymodule_digital`
             WHERE id_product = ' . (int)$product['product_id']
        );

        if ($isDigital) {
            // Generar clave de licencia
            $licenseKey = $this->generateLicenseKey();

            Db::getInstance()->insert('mymodule_licenses', [
                'id_order'    => $id_order,
                'id_customer' => (int)$order->id_customer,
                'id_product'  => (int)$product['product_id'],
                'license_key' => pSQL($licenseKey),
                'active'      => 1,
                'date_add'    => date('Y-m-d H:i:s'),
            ]);

            // Enviar email con la licencia
            Mail::Send(
                (int)$order->id_lang,
                'license_key',
                'Tu licencia digital - Pedido ' . $order->reference,
                ['license_key' => $licenseKey, 'product_name' => $product['product_name']],
                $customer->email,
                $customer->firstname . ' ' . $customer->lastname,
                null, null, null, null,
                _PS_MODULE_DIR_ . $this->name . '/mails/'
            );
        }
    }
}
```

## Notas y gotchas

- Este hook se dispara cuando el estado del pedido cambia a un estado marcado como 'pagado' (con paid = 1 en ps_order_state).
- No se ejecuta al crear el pedido si el estado inicial ya es 'pagado' — para eso usa actionValidateOrder.
- Si cambias manualmente el estado a 'pagado' desde el admin, este hook tambien se ejecuta.
- Cuidado: si un pedido pasa por varios estados 'pagados', el hook puede ejecutarse multiples veces.
- Para saber el estado anterior, consulta OrderHistory::getLastOrderState($id_order) antes del cambio.

## Hooks relacionados

- [`actionValidateOrder`](https://ayudaprestashop.es/hooks/actionValidateOrder)
- [`actionOrderStatusUpdate`](https://ayudaprestashop.es/hooks/actionOrderStatusUpdate)
- [`actionOrderHistoryAddAfter`](https://ayudaprestashop.es/hooks/actionOrderHistoryAddAfter)
- [`actionSetInvoice`](https://ayudaprestashop.es/hooks/actionSetInvoice)

## Guias relacionadas

- [payment/payment-module](https://ayudaprestashop.es/payment/payment-module)
- [modules/main-file](https://ayudaprestashop.es/modules/main-file)

## Historial de versiones

| Version | Cambio |
| --- | --- |
| 1.5 | Introducido para confirmar pagos |


---

*Fuente: [https://ayudaprestashop.es/hooks/actionPaymentConfirmation](https://ayudaprestashop.es/hooks/actionPaymentConfirmation). Version Markdown generada automaticamente para consumo por LLMs.*
