Cuando puse en mi post anterior:
On 6/1/2021 at 11:31 AM, w3bsolutions said:El código que pusiste en tu primer post es la URL a donde se redirige cuando hay algún problema con el módulo del pago. Cada módulo de pago tiene que implementar su propia vista de confirmación de pedido.
con "algún problema con el módulo de pago" me refería a esto dentro de /controllers/front/OrderConfirmationController.php :
if (!$this->id_order || !$this->id_module || !$this->secure_key || empty($this->secure_key)) { Tools::redirect($redirectLink . (Tools::isSubmit('slowvalidation') ? '&slowvalidation' : '')); } $this->reference = $order->reference; if (!Validate::isLoadedObject($order) || $order->id_customer != $this->context->customer->id || $this->secure_key != $order->secure_key) { Tools::redirect($redirectLink); } $module = Module::getInstanceById((int) ($this->id_module)); if ($order->module != $module->name) { Tools::redirect($redirectLink); }
Ves que sólo se redirige al historial si el pedido no tiene un ID, o el módulo de pago no tiene nombre, o el id del cliente no coincide con el que está iniciado sesión... en fin, cosas que normalmente NO deberían pasar.
Cada módulo de pago debe engancharse en los hooks a continuación:
/** * Execute the hook displayPaymentReturn. */ public function displayPaymentReturn($order) { if (!Validate::isUnsignedId($this->id_module)) { return false; } return Hook::exec('displayPaymentReturn', ['order' => $order], $this->id_module); } /** * Execute the hook displayOrderConfirmation. */ public function displayOrderConfirmation($order) { return Hook::exec('displayOrderConfirmation', ['order' => $order]); }
Y ahí es donde deben mostrar su vista de confirmación de pedido, ya sea OK o KO. No hay URLs OK y KO "de Prestashop" genéricas. Cada módulo tiene las suyas.
Espero haberlo aclarado. Yo mismo he implementado varios módulos de pago y no es tan complicado la verdad.