Credibanco gateway.
Es el servicio que se encarga de comunicarse con el api Rest de Credibanco. Este microservicio está hecho con la base de Microservicio Gateway que se debe usar para los gateways implementados por microservicios.
Flujo de comunicación con credibanco.
En el siguiente diagrama se muestra la comunicación del microservicio con openpay y la API de credibanco.
1. Preautorizar con API Openpay
Consideraciones para el API Openpay
Siempre que se quiera utilizar el API Openpay se deberá contar con la llave privada la cual debe estar vigente y viajar en el Header de la solicitud, este valor sirve para realizar Basic Authentication y así poder consumir el API.
Las llaves se pueden consultar desde Dashboard al ingresar en la parte superior derecha dando clic en el icono de engranaje,entrando a la opción “Mi cuenta” misma en la que encontrarás la sección Llaves de acceso o bien en la opción Credenciales de acceso para el API.
Endpoints API Openpay
Endpoints disponibles para la generación de cargos con credibanco V2 desde la API para los diferentes ambientes para comercio y cliente:
Método: POST
Sandbox
- https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
- https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/ customers/{CUSTOMER_ID}/charges
- https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/ charges/{ID_TRANSACTION}/capture
Producción
- https://api.openpay.co/v1/{MERCHANT_ID}/charges
- https://api.openpay.co/v1/{MERCHANT_ID}/ customers/{CUSTOMER_ID}/charges
- https://api.openpay.co/v1/{MERCHANT_ID}/ charges/{ID_TRANSACTION}/capture
Códigos de respuesta API
Código HTTP | Descripción |
200 | Ok |
400 | Bad Request |
401 | Unauthorized |
422 | Unprocessable Entity |
500 | Internal Server Error |
503 | Service Unavailable |
Crear transacción con Token
Para utilizar este servicio se debe tener un Token, el cual puede ser obtenido de las siguientes maneras:
- Creación de nuevo Token. – Si no se cuenta con un token previo, se debe utilizar el servicio de creación de token para crear uno.
Una vez que tengas un token este deberá ser usado la propiedad source_id, descrito en la siguiente tabla que especifica los campos que se pueden enviar en la petición del API:
Propiedad | Descripción |
method | string(requerido) Debe contener el valor card para indicar que el cargo se hará de una tarjeta. |
source_id | string (requerido, longitud = 45) ID de la tarjeta guardada o el id del token creado de donde se retirarán los fondos. |
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales. |
currency | string (opcional) Tipo de moneda del cargo. Se soportan los siguientes tipos de monedas: Pesos Colombianos (COP) y Dólares Americanos (USD) |
description | string (requerido, longitud = 250) Una descripción asociada al cargo. |
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
device_session_id | string (requerido, longitud = 32) Identificador del dispositivo generado con la herramienta antifraudes |
capture | boolean (opcional, default = true) Indica si el cargo se hace o no inmediatamente, cuando el valor es false el cargo se maneja como una autorización (o preautorización) y solo se reserva el monto para ser confirmado o cancelado en una segunda llamada. |
customer | Objeto (Opcional) Información del cliente al que se le realiza el cargo. Ver objeto Customer. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente. Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio Si desea crear un cliente y llevar un historial de sus cargos consulte cómo crear un cliente y realice el cargo a nivel cliente. |
payment_plan | objeto (opcional) Datos del plan de meses sin intereses que se desea utilizar en el cargo. Ver Objeto PaymentPlan. |
metadata | list(key, value) (opcional) Listado de campos personalizados de antifraude, estos campos deben de apegarse a las reglas para creación de campos personalizados de antifraude |
send_email | boolean (opcional) Usado para cargos de tipo redirect. Indica si se desea enviar un email que direccione al formulario de pago de Openpay. |
redirect_url | string (requerido) Usado para cargos de tipo redirect. Indica la url a la que redireccionar despues de una transaccion exitosa en el fomulario de pago de openpay. Nota: Este parámetro solo se puede utilizar si se especifica el manejo de 3D Secure. |
use_3d_secure | string (opcional) Se debe especificar este parámetro en true para manejar 3D Secure. |
iva | numeric (opcional) Monto de iva . Debe ser una cantidad igual o mayor a cero. |
Ejemplo de petición para pre-autorización:
Header: Basic {llave privada vigente}
{ "source_id" : "kauf2lhqt1ttwzfqtzmz", "method" : "card", "amount" : 10, "iva": 1, "currency":"COP", "description" : "Test de pago con iva en credibanco", "order_id" : "id-{{$timestamp}}", "device_session_id" : "{{$timestamp}}", "customer" : { "name" : "Aaron Hernandez", "phone_number" : "5526927856", "email" : "joseaaron.hernandez@openpay.mx" }, "capture": false }
El campo “capture” será la bandera que identifique al momento de crear el cargo si la transacción es una preautorización.
Envío de URL de autenticación
La respuesta a la petición de creación de cargo será un JSON con la información de la transacción a pagar por el usuario. Se debe poner especial atención en los siguientes parámetros:
- id – ID único de la transacción creada, debe ser almacenado ya que será por medio de este ID que se envíe la respuesta una vez que el usuario realice la autenticación 3D Secure.
Ejemplo de la respuesta (Pre-autorización):
{ "id": "trvha4oojf43oolp4b1q", "authorization": "144338", "operation_type": "in", "transaction_type": "charge", "status": "in_progress", "conciliated": true, "iva": "1", "creation_date": "2024-07-24T13:43:31-06:00", "operation_date": "2024-07-24T13:43:39-06:00", "description": "test de pago con iva credibanco", "error_message": null, "order_id": "id-1721850211", "card": { "type": "credit", "brand": "visa", "address": null, "card_number": "455986XXXXXX6643", "holder_name": "Aaron Hernandez", "expiration_year": "28", "expiration_month": "07", "allows_charges": true, "allows_payouts": false, "bank_name": "BANCO DAVIVIENDA", "bank_code": "000" }, "gateway_card_present": "CREDIBANCO", "amount": 10.00, "currency": "COP", "customer": { "name": "Aaron Hernandez", "last_name": null, "email": "joseaaron.hernandez@openpay.mx", "phone_number": "5526927856", "address": null, "creation_date": "2024-07-24T13:43:31-06:00", "external_id": null, "clabe": null }, "method": "card" }
Petición para la captura (confirmación) en API:
Para confirmar la transacción es necesario de 2 datos importantes:- Identificador del comercio (ID): mutdljy8gcsskp0ghx5t
- Identificador de la transacción inicial (ID): tregvvvmifx4u5jigq9j
Ejemplo de la respuesta (Captura):
{ "id": "tregvvvmifx4u5jigq9j", "authorization": "CF7421", "operation_type": "in", "transaction_type": "charge", "status": "completed", "conciliated": true, "creation_date": "2024-05-24T15:08:20-06:00", "operation_date": "2024-05-24T15:33:35-06:00", "description": "pagando una playera con iva", "error_message": null, "order_id": "id-1716584900", "card": { "type": "credit", "brand": "visa", "address": null, "card_number": "400558XXXXXX1886", "holder_name": "Aaron Hernandez", "expiration_year": "24", "expiration_month": "12", "allows_charges": true, "allows_payouts": false, "bank_name": "BANXICO", "bank_code": "001" }, "amount": 10.00, "customer": { "name": "Bruno Rivera Piña", "last_name": null, "email": "joseaaron.hernandez@openpay.mx", "phone_number": "5526927856", "address": null, "creation_date": "2024-05-24T15:08:21-06:00", "external_id": null, "clabe": null }, "fee": { "amount": 900.28, "tax": 171.05, "currency": "COP" }, "currency": "COP", "method": "card" }
2. Preautorizar Cobro Con Link
El link de cobro se debe generar desde el API
POST: https://api.openpay.co/v1/myvogimhs93x3nbifdj5/checkouts
{ "amount": 200, "iva": "0", "origin": "DASHBOARD", "description": "ocean mall", "currency": "COP", "expiration_date": "2025-07-31 18:31", "order_id": "order_44444444", "redirect_url": "", "plan_id_public": "", "capture": false, "customer" : { "name" : "Daniela", "last_name" : "Caro", "phone_number" : "4423456723", "email" : "daniela.caro@test.co" } }
Al ingresar en link devuelto se mostrar la pantalla para seleccionar el método de pago.
En la cual se deberá seleccionar la opción Pago con tarjeta, después se mostrará la siguiente pantalla:
En la pantalla anterior se deberán de ingresar los datos requeridos para poder completar los pagos, al completar el pago se retorna la siguiente pantalla, mostrando que la transacción aún no se encuentra completada:
Al ingresar al dashboard a la opción de tarjetas -> Pagos la transacción se debe mostrar con estatus pendiente: como se muestra a continuación:
Este estatus indica que aún no se ha confirmado por parte del comercio.
Tarjetas de prueba para realizar transacciones:
No. tarjeta | Mes | Año | CVV | Marca | Flujo | Ventana de Prueba |
4559860096524495 | 05 | 24 | 480 | VISA | Charge | SI |
4916479186327004 | 02 | 25 | 994 | VISA | Charge | SI |
4111111111111110 | 08 | 24 | 123 | VISA | Charge | NO |