A continuación se especificará como implementar el servicio de pagos con el funcionamiento básico, existen personalizaciones para el comportamiento del servicio de pago las cuales se detallan en Características de personalización adicionales.

<aside> ⚠️ Esto solo disponible para el flujo de Pago de Personas.

</aside>

Resumen del proceso


Al momento que un cliente decide pagar mediante ETpay, se gatilla un flujo que se resume de la siguiente forma:

  1. DESPLEGAR BOTONES POR CADA BANCO ****Despliega un botón por cada banco que desees mosrtrar, la API y las credenciales serán las mismas para cada botón solo cambiará el campo “user_bank_code” que añadirás en la creación de sesión inicial.
  2. **CREAR SESIÓN** Desde la página web del merchant, se genera una señal POST a nuestra API para obtener el session_token que permite al usuario iniciar su sesión de pago.
  3. **INICIAR FUNNEL** Desde la página web del merchant, se redirecciona al link de sesión del usuario con el token que se obtiene en el paso anterior.
  4. SESIÓN DEL CLIENTE (FUNNEL) Proceso que realiza el usuario pagador seleccionando banco, ingresando credenciales y aprobando su transferencia

Definiciones:

Parámetro Descripción
merchant_code Código único de identificación de comercio, variará entre ambientes sandbox y pre-productivo/productivo. Se entrega al inicio del proceso una vez completados los ‣.
merchant_api_token Token de autenticación para el uso de la api, variará entre ambientes sandbox y pre-productivo/productivo. Se entrega al inicio del proceso una vez completados los ‣.
api_url URL de la api de servicios y creación de sesión, variará entre ambientes sandbox y pre-productivo/productivo. Se entrega al inicio del proceso una vez completados los ‣.
pmt_url URL del funnel de pagos, se utiliza en conjunto al session_token para iniciar el flujo de pago de un usuario final, variará entre ambientes sandbox y pre-productivo/productivo. Se entrega al inicio del proceso una vez completados los ‣.
merchant_order_id Identificador de orden propio del comercio, se utiliza al momento de crear una sesión de pago, es de formato alfanumérico de largo máximo 64. Usualmente se utiliza el número de orden de compra.
order_amount Monto de la compra, se utiliza en la creación de sesión.
session_token Token de sesión único, es retornado como respuesta de la API al momento de crear una sesión. Se utiliza en conjunto con pmt_url para iniciar el flujo de pago de un usuario final.
signature_token Token de firma, es retornado como respuesta de la API al momento de crear una sesión. ****Se utiliza para validar las notificaciones de información de los JWT
JWT Los JWT son una forma segura y fácil de transmitir información a través de la web. Estos vienen encriptados y poseen una “firma” que garantiza que el contenido no ha cambiado. En nuestro caso, la firma de los JWT que enviamos es el signature_token.
Si el contenido del JWT cambia, podremos saber que no es verídico ya que al intentar validar el contenido usando el signature_token obtendremos valores diferentes.
payment_token Identificador de intento de pago, este identificador se retorna una vez ya ocurrida la sesión de pago y permite identificar dentro de nuestro sistema los pasos y logs que ocurrieron durante el pago.

Desarrollo de cada etapa


Desplegar botones por cada banco

El primer paso del proceso comienza de tu lado, desplegando un botón por cada opción de banco que desees habilitar. Esto lo puedes realizar mediante HTML o lenguajes de programación, lo importante es que tengas programado como diferenciar cada botón de pago al ser seleccionado.

Los bancos y códigos asociados disponibles para ser pre-seleccionados son:

banco user_bank_code
para inicializar con Banco Estado cl_estado
para inicializar con Banco Santander cl_santander
para inicializar con Banco de Chile/Edwards cl_bch
para inicializar con BCI cl_bci
para inicializar con Banco Itaú cl_itau
para inicializar con Banco Scotiabank cl_scotiabank
para inicializar con Banco Falabella cl_falabella
para inicializar con el banco de pruebas (únicamente en sandbox) cl_test