Para crear una pasarela de pagos en Drupal se debe crear un método de pago específico. Se debe desarrollar un módulo genérico que pueda ser contribuido de forma que no dependa de información sensible ni específica del proyecto para el cual pertenece inicialmente.
Cómo crear un módulo para pasarela y método de pago – PSE
Inicialmente dicho módulo solo deberá incluir PSE, sin embargo deberá aceptar ampliaciones a futuro para otros métodos de pagos y aceptar varios tipos que se agregaran por fases según las necesidades del proyecto o proyectos que puedan usar dicho sistema.
Elementos básicos del sistema
Tipo de método de pago y pasarela de pago PSE
Se deberá crear inicialmente un tipo de método de pago llamado “Commerce Redeban” (id del plugin: commerce_redeban) que deberá ser un plugin de anotación: CommercePaymentMethodType.
El método de pago anteriormente descrito deberá ser capaz de almacenar la información necesaria para la comunicación con Redeban, es decir, urls de comunicación, claves privadas, claves públicas u otras informaciones que se requieran y se deban consultar.
También se tendrá que crear la pasarela de pago PSE en base al método de pago previamente definido. La pasarela implementará el método de pago previamente definido y será un plugin de anotación: “CommercePaymentGateway”. Dicho plugin se llamará: “Commerce Redeban” (id del plugin: commerce_bredeban).
La entidad de transacciones
Se propone la creación de una entidad interna para el módulo, dicha entidad puede ser de nombre “Redeban Transaction” (redeban_transaction). Se deberá generar dicha entidad con los campos mínimos indispensables para almacenar información de la transacción, que pueda ser consultada posteriormente para validaciones, como lo son datos básicos para generar tokens así como otros datos del pedido, del pago o del usuario que se requieran.
Servicios del sistema
Se propone la creación de dos servicios para el módulo:
- Servicio de consulta de transacciones. Dicho servicio debe ser capaz de devolver entidades de tipo “Redeban Transaction” según diversos elementos de búsqueda, por ejemplo por ID de pedido, por ID de transacción etc. de forma ágil y sencilla, además de ser capaz de almacenar elementos de dicho tipo de forma autónoma simplificando el manejo de dicha entidad permitiendo a los demás elementos del sistema la creación, búsqueda, consulta y tratamiento de dichas transacciones de forma transparente.
- Servicio de comunicación con pasarela de pagos Redeban y generación de claves, tokens u otros datos que se deban generar en tiempo de ejecución por parte del módulo. Se deberá tener especial cuidado en la forma del desarrollo de dicho módulo para que todas las llamadas internas a la pasarela de pagos Redeban se hagan en dicho servicio y no directamente en otros objetos o ficheros debiendo siempre pasar por dicho servicio.
Inicialmente dicho servicio solo contendrá los métodos de cálculo de tokens y las llamadas a los métodos de consulta de bancos de la pasarela de pagos así como de cálculo de la url de redirección a PSE. También se deberá incluir un método el cual se deberá llamar desde la url de notificación (web hook) donde se confirmará el pago.
Integración en la plataforma
La integración de la plataforma deberá tener varias fases las cuales se detallarán a continuación de forma superficial pero teniendo en cuenta que es la parte más sensible y que afecta directamente al flujo y funcionamiento de las compras en el sitio
Pasos para la integración
Habilitar el método de pago
El paso de habilitar el método de pago es quizás el que menor riesgo conlleva, siempre que el módulo previamente definido funcione de forma correcta, se desarrollará de forma sencilla.
Para este paso es importante en un módulo “personalizado” sobre-escribir el objeto del tipo de pago para poder sobreescribir el método “getDisplayLabel” puesto que si el proyecto tiene la selección del método de pago tiene una maquetación especial.
Capturar la notificación o confirmación del pago
Otro de los puntos importantes es capturar la confirmación que se produce mediante “web hook” y que permitirá proceder a crear un elemento en la cola de recargas.
Realizar el sistema de verificación de pagos
Al permitir verificar el estado de los pagos, se podrá aprovechar una cola para realizar la verificación de estado individual de cada pago en la pasarela y así mantener confirmados los estados de pago de las transacciones.