Inicio

Guías

Referencia

Plugins

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 3Ds 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

 

Producción

  • https://api.openpay.co/v1/{MERCHANT_ID}/charges

  • https://api.openpay.co/v1/{MERCHANT_ID}/ customers/{CUSTOMER_ID}/charges

 

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 3D Secure con Token

Para utilizar este servicio se debe tener un Token, el cual puede ser obtenido de las siguientes maneras:

  1. Token de cargo previo. – Si previamente se realizó un intento de cobro a la tarjeta siguiendo la guía de Pagos con tarjeta y el resultado fue un código de error 3005 (Rechazo por riesgo), se puede usar el mismo token creado para 3D Secure.

  2. 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:

 

Header: Basic {llave privada vigente}

 

{

   “method”: “card”,

   “amount”: 832,

   “currency”: “COP”,

   “description”: “Prueba con 3DS”,

   “order_id”: “orden123456789”,

   “redirect_url”: “https://www.openpay.mx/index.html”,

   “device_session_id”: “device12234567s8”,

   “use_3d_secure”: “true”,

   “confirm”:“true”,

   “source_id”: “k81aoifelkna2efguzle”,

   “customer”: {

       “name”: “Alonso”,

       “last_name”: “Test”,

       “phone_number”: “8884444444”,

       “email”: “test2@openpay.mx”

   }

 

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. 

  • payment_method.url – URL a donde se debe redirigir al usuario para iniciar el proceso.

 

Ejemplo de la respuesta:

 

{

   “id”: “trjd5i68lurpekpg15hb”,

   “authorization”: “000000”,

   “operation_type”: “in”,

   “transaction_type”: “charge”,

   “status”: “charge_pending”,

   “conciliated”: true,

   “iva”: “0”,

   “creation_date”: “2024-04-01T17:50:32-06:00”,

   “operation_date”: “2024-04-01T17:50:32-06:00”,

   “description”: “Prueba con 3DS”,

   “error_message”: null,

   “order_id”: “orden123456789”,

   “card”: {

       “type”: “credit”,

       “brand”: “visa”,

       “address”: {

           “line1”: “Av 5 de Febrero”,

           “line2”: “Roble 207”,

           “line3”: “Col Carrillo”,

           “state”: “Colombia”,

           “city”: “Colombia”,

           “postal_code”: “76900”,

           “country_code”: “CO”

       },

       “card_number”: “400558XXXXXX1886”,

       “holder_name”: “Hectorito Alonso Test”,

       “expiration_year”: “27”,

       “expiration_month”: “01”,

       “allows_charges”: true,

       “allows_payouts”: false,

       “bank_name”: “BANXICO”,

       “bank_code”: “001”

   },

   “gateway_card_present”: “CREDIBANCO”,

   “payment_method”: {

       “type”: “redirect”,

       “url”: “https://dev-api.openpay.co/v1/m1c3xff4vje0ratdi93g/charges/trjd5i68lurpekpg15hb/redirect/”

   },

   “amount”: 832.00,

   “currency”: “COP”,

   “customer”: {

       “name”: “Alonso”,

       “last_name”: “Test”,

       “email”: “test2@openpay.mx”,

       “phone_number”: “8884444444”,

       “address”: null,

       “creation_date”: “2024-04-01T17:50:31-06:00”,

       “external_id”: null,

       “clabe”: null

   },

   “method”: “card”

}

 

La URL contenida en la propiedad payment_method.url inicia el proceso, cuando el servicio de autenticación no logra autenticar al cliente se realiza el flujo Challenge y le solicita ingresar un código en la siguiente pantalla.

 

Cuando el cliente es autenticado exitosamente se realiza el flujo Frictionless, es decir que este paso no se realiza.

Redireccionamiento a URL de respuesta

 

Una vez completa la autenticación del usuario en el sistema 3D Secure y recibida la respuesta en Openpay, se re-direccionará al usuario a la URL definida en el paso 2 (redirect_url) usando el ID de la transacción que se envió en el paso 5. Ejemplo: http://www.openpay.co/index.html?id=treqwygvw0hrjuvwbsf5

 

Notas:

  • Puedes simular diferentes resultados usando las tarjetas de Pruebas

  • Implementa las Notificaciones para conocer el estado de los pagos en tiempo real