Hace tiempo que no me paso por el blog francés de h-hennes, y a que resaltar que últimamente tiene unos artículos interesantes, donde traduciré parte de unos de los artículos que podéis ver de forma completa en su mismo blog y que me ha parecido que os puede interesar.
En este pequeño TIP rápido que es solo recomendado para aquellas personas que hayan tocado el desarrollo de módulos orientados a métodos de pago en versiones anteriores de Prestashop, comentare algunos aspectos básicos que se introducen como novedad en Prestashop 1.7 respecto a Prestashop 1.6.
A los módulos que gestionan los sistemas de pago, a que indicarles que usan la clase: PaymentOption (antiguamente esto no se hacía)
Es decir, la primera línea de código de la clase de un módulo que gestiona un sistema de pago es:
use PrestaShop\PrestaShop\Core\Payment\PaymentOption;

Por otro lado, la clase del módulo sigue heredando de PaymentModule (esto no ha cambiado)

¿En que hooks queda instalado y registrado un módulo que gestiona un método de pago (transferencia bancaria, cheque, etc..) ?

Habitualmente queda registrado en los siguientes hooks:
- paymentOptions -> Este hook si podemos decir que es nuevo, y es el que vemos cuando estamos viendo los métodos de pago en el proceso de pedido (a la hora de seleccionarlos)
- paymentReturn -> Este hook no tiene sorpresa porque es el mismo que se usaba en versiones anteriores para devolver la confirmación del pedido.
Vayamos a ver el interior de la función del hook -> paymentOptions que tiene por ejemplo la clase principal del módulo de Cheque (modules/ps_checkpayment/ps_checkpayment.php) que lleva Prestashop.

Dentro de la función de este hook, comento la parte más importante (obviando el resto que ya conocéis)
Aquí estamos creando un objeto de la Clase PaymentOption.
$newOption = new PaymentOption();
A través de ese objeto vamos a poder definir dentro del listado de métodos de pago, respecto al método actual los siguientes datos:
- setCallToActionText : Define el texto/título público del método de pago / Obligatorio
Texto del método de pago - setAdditionalInformation : Define información adicional del método de pago / Opcional
Código información adicional del método de pago En el ejemplo del método de pago, lo que hacemos con “setAdditionalInformation” es integrar el fichero TPL payment_infos.tpl. (Fijaros al ampliar el pantallazo)
Información adicional del método de pago en el listado de métodos de pago de Prestashop 1.7 - setLogo : Definir un logo para el método de pago / Opcional
Código logo método de pago en el listado de métodos - setAction : Definimos el controlador que se encarga de la validación de la confirmación del pago (No visible ) / Es obligatorio si hemos usado el método setForm
Controlador validación Estamos haciendo referencia en esta ocasión al controlador Validation.php del módulo que lo podemos encontrar en: ps_checkpayment/controllers/front/validation.php
- setInputs : Permite añadir campos de formulario. Se usa más para campos de tipo oculto (hidden) que para que el cliente introduzca datos / OpcionalPor ejemplo, almacenamos en una variable “2 campos”
$inputs = [ [ 'name' => 'campo1', 'type' => 'hidden', 'value' => '100' ], [ 'name' => 'campo2', 'type' => 'hidden', 'value' => $this->context->customer->id, ], ];
En el campo 1 guardamos el valor 100 y en el campo2 guardamos el ID del cliente.Ahora pasamos esos campos dentro de “setInputs”
- setModuleName : Nombre del módulo (interno) / Obligatorio
- setForm : Permite generar un formulario especifico para el módulo, si se utiliza, las funciones setInputs y setAction no tienen efecto / Opcional
Formulario Dentro del método/función setForm hemos integrado el contenido del TPL: modules/ps_checkpayment/views/templates/hook/formularioprueba.tpl donde hemos preparado el formulario.
- setBinary : Solo es necesario si se utiliza una ejecución binaria. Es necesario también que el módulo este también anclado en el hook -> displayPaymentByBinaries
Como os dije al principio del artículo podéis ver información sobre el artículo en el blog francés: Ver más información (artículo original en francés)
Se me olvidaba comentar que tenemos a disposición un módulo de prueba desarrollado por el mismo h-hennes para que hagáis vuestras pruebas.
Descargar desde fuente original
Descargar alternativa desde el servidor del blog actual.
Intentar siempre descargar desde la fuente original.
Y por esta localizacion de los modulos es posible que un modulo que ha funcionado vien en la version 1.5 y 1.6 no funcione en la 1.7?? no hay manera de modificarlo sin tener que comprar el modulo que apunte al hook correspondiente? Gracias