Crear módulos de pago en Prestashop 1.7

Creación de un módulo de pago en Prestashop 1.7

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;
Indicar que usamos la clase PaymentOption
Indicar que usamos la clase PaymentOption

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

 Clase del módulo hereda de PaymentModule
Clase del módulo hereda de PaymentModule

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

Registrando módulo en hooks

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)

    Listado de los métodos de pago en Prestashop 1.7
  • 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.

hookPaymentOptions

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

    Mostrando el 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

    Logo método de pago
  • 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

    Campos
  • setModuleName : Nombre del módulo (interno) / Obligatorio

    Nombre interno del módulo
  • 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.

    Formulario dentro de método de pago
  • 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.

Un comentario sobre “Creación de un módulo de pago en Prestashop 1.7”

  1. 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

Los comentarios están cerrados.