Hola @raquel96,
@joaquin_tienda43 tiene razón, el problema no es tanto que getProductsDetail() no funcione, sino que el payment_return.tpl del módulo ps_bankwire en PrestaShop 1.7 (por defecto es bastante minimalista) no está diseñado para mostrar un listado detallado de productos. La variable $order_products que asignas es un array de arrays, y la plantilla necesita saber cómo recorrerlo y qué campos mostrar de cada producto.
Para solucionarlo, necesitas dos cosas:
- Asegurarte de que el
hookPaymentReturn del módulo ps_bankwire (o un override de este) asigna las variables correctas.
- Modificar la plantilla
payment_return.tpl del módulo para que itere sobre esos productos.
Aquí tienes una versión mejorada de tu hookPaymentReturn que asigna los productos de forma más adecuada para la plantilla:
class Ps_Bankwire extends PaymentModule
{
public function hookPaymentReturn($params)
{
if (!$this->active) {
return;
}
$order = $params['order'];
$products = $order->getProducts(); // Usamos getProducts() para facilitar la iteración en Smarty
$this->context->smarty->assign(array(
Una vez hecho esto, deberías copiar modules/ps_bankwire/views/templates/hook/payment_return.tpl a la carpeta de tu tema (themes/classic/modules/ps_bankwire/views/templates/hook/payment_return.tpl si usas Classic) y modificarlo para incluir un bucle foreach que muestre $order_products:
{* ... contenido existente ... *}
{if isset($order_products) && count($order_products) > 0}
<h3>Resumen del pedido:</h3>
<ul>
{foreach from=$order_products item='product'}
<li>{$product.product_name} x {$product.product_quantity} ({Tools::displayPrice($product.unit_price_tax_incl)})</li>
{/foreach}
</ul>
{/if}
{* ... resto del contenido ... *}
Esta solución requiere una modificación manual del código del módulo y de la plantilla, que puede ser delicada con futuras actualizaciones de PrestaShop o del propio módulo. Para tiendas en producción que necesitan una solución más robusta y fácil de mantener, te recomiendo utilizar un módulo preparado para transferencia bancaria con resumen. Estos módulos suelen encargarse de toda la lógica y la integración sin necesidad de tocar código core o overrides.