Integración API: Link de Pagos
Esta documentación detalla los pasos necesarios para integrar la funcionalidad de Link de Pagos a través de API. Nuestro Link de Pagos permite a los comercios crear enlaces de pago para sus clientes, lo que facilita y agiliza el proceso de pago a través de la plataforma de DEUNA y reduce drásticamente la necesidad de hacer algún desarrollo. Nuestros Links de Pagos son 100% carta blanca, es decir, pueden personalizarse con el look and feel de tu marca.

Antes de comenzar
- Este documento supone que ya tienes un conocimiento básico de JavaScript y Typescript.
- Debes disponer de las credenciales de DEUNA. Para poder obtener tus credenciales como el Private API Key debes estar registrado y haber solicitado las credenciales de acceso de tu comercio en nuestro panel de administrador.
Configuración
1. Creación de un Link de Pagos
A continuación encontrarás cómo crear un link de pago a través de API.
El siguiente es un ejemplo del body completo que es requerido para la creación:
Consulta la documentación para generar un link de pago [aquí]
{
"order": {
"order_id": "ORD_000123",
"store_code": "all",
"currency": "MXN",
"total_tax_amount": 220,
"items_total_amount": 7000,
"sub_total": 7000,
"total_amount": 7220,
"items": [
{
"id": "789012345",
"name": "Event Ticket",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet.",
"quantity": 1,
"unit_price": {
"amount": 7220,
"currency": "PEN",
"currency_symbol": "S/"
},
"tax_amount": {
"amount": 0,
"currency": "PEN",
"currency_symbol": "S/"
},
"total_amount": {
"amount": 7220,
"discount_amount": 0,
"currency": "PEN",
"currency_symbol": "S/",
"original_amount": 0
},
"image_url": "https://cdn.stg.deuna.io/explore-deuna/assets/ticketevent.png"
}
],
"include_payment_options": [
{
"payment_method": "credit_card",
"processors": [
"KUSHKI"
]
}
],
"redirect_urls": {
"close": "https://www.google.com?q=close",
"success": "https://www.google.com?q=success",
"pending": "https://www.google.com?q=pending",
"error": "https://www.google.com?q=failure",
"fallback": "https://www.google.com?q=fallback"
}
},
"checkout_modules": [
{ "name": "UserInfoPattern" },
{ "name": "OrderDetailPattern" },
{ "name": "LoginPattern" }
],
"configuration": {
"expires_at": "2025-11-07T03:40:11.054707389Z",
"payment_link_name": "creacion template + impuestos",
"max_completed_purchases": 20,
"max_payment_retries": 2
}
}
Descripción de campos
A. Sección order
Campo | Tipo | Obligatorio | Qué ocurre / Para qué sirve |
---|---|---|---|
order_id | string | Si | ID interno para identificar y rastrear la orden. |
store_code | string | Si | Código de tienda (o "all" para todas). |
currency | string | Si | Moneda ISO 4217 (p.ej. "MXN"). |
total_tax_amount | number | Si | Importe total de impuestos de la orden. |
items_total_amount | number | Si | Suma de precios base de todos los ítems (sin impuestos). |
sub_total | number | Si | items_total_amount + total_tax_amount. |
total_amount | number | Si | Monto final a cobrar (sub_total). |
items | array | Si | Lista de ítems; cada uno describe un producto/servicio. |
order.items[].id | string | Si | ID único del ítem. |
order.items[].name | string | Si | Nombre que verá el cliente. |
order.items[].description | string | No | Descripción detallada. |
order.items[].quantity | integer | Si | Cantidad de unidades. |
order.items[].unit_price | object | Si | Precio unitario (se muestra en checkout). |
└─ amount | number | Si | Monto por unidad. |
└─ currency | string | Si | Moneda ISO para el unit_price. |
└─ currency_symbol | string | Si | Símbolo de la moneda. |
order.items[].tax_amount | object | No | Impuesto aplicado al ítem. |
order.items[].total_amount | object | Si | Desglose final del ítem. |
└─ amount | number | Si | Total con impuestos y descuentos. |
└─ discount_amount | number | Si | Descuento aplicado. |
└─ original_amount | number | Si | Precio base sin impuestos. |
order.items[].image_url | string | No | URL de imagen del ítem (mejora conversión). |
redirect_urls | object | No | URLs a las que redirigir tras cada resultado. |
└─ close | string | No | Al cerrar el checkout. |
└─ success | string | No | Tras pago exitoso. |
└─ pending | string | No | Si queda en estado pendiente. |
└─ error | string | No | Si el pago falla. |
└─ fallback | string | No | Botón “Regresar” en vistas de error |
include_payment_options | array | Si | Filtra métodos de pago y procesadores disponibles en el checkout. |
└─ include_payment_options[].payment_method | string | Si | Tipo de método de pago (p.ej. "credit_card", "oxxopay", etc.). |
└─ include_payment_options[].processors | object | Si | Lista de nombres de procesadores a habilitar (p.ej. ["KUSHKI"]). |
B. Sección checkout_modules
Define cuales módulos deseas que se muestren al abrir el Link de pago en tu widget:
Campo | Tipo | Obligatorio | Qué ocurre / Para qué sirve |
---|---|---|---|
checkout_modules | array | No | Lista de módulos de checkout que quieres mostrar. |
└─ name | string | Si | Nombre del módulo (UserInfoPattern , OrderDetailPattern , LoginPattern ). |
Si no envías
checkout_modules
, usaremos los módulos configurados por defecto en tu comercio.
Para ver más información de Personalizaciones de módulos de Link de pagos
C. Sección configuration
Estos campos corresponden a las configuraciones y personalización de Links de pago. Para ver más detalle de cada funcionalidad Ver Enlaces de Pago
Campo | Tipo | Obligatorio | Qué ocurre / Para qué sirve |
---|---|---|---|
expires_at | string | No | Fecha/hora de caducidad (ISO 8601). Sin este campo, no expira. |
payment_link_name | string | No | Nombre descriptivo para tu Link de Pago (máx. 60 caracteres). |
max_completed_purchases | integer | No | Límite de compras exitosas antes de desactivar el enlace. |
max_payment_retries | integer | No | Límite de intentos de pago por usuario (incluye rechazos). |
2. Integrar el Link de Pagos
Una vez se haya configurado el enlace de pago, podrá ser integrado en una aplicación o ser compartido por cualquier medio de comunicación.
Si desea integrarlo en una aplicación, esto implica la creación de una interfaz para que los usuarios puedan hacer uso de sus enlaces de pago, así como la implementación de la lógica de procesamiento de pagos en su aplicación.
Al generar el link de pago, en la respuesta se generará el link de pago en el campo payment_link de la respuesta. Para integrar el link de pago se debe integrar una función en javascript, en dónde se realice un href.location que redireccione al link generado:
function openDeunaPayment() {
const paymentLink = "https://api.deuna.io/payment-links/{payment-link-id}";
window.location.href = paymentLink; // Abre el enlace en la misma ventana
}
<!DOCTYPE html>
<html>
.
.
<body>
<div class="container">
<h1>Realizar Pago</h1>
<p>Haz clic en el botón "Pagar con Deuna" para continuar con el pago.</p>
<button id="payButton" class="pay-button" onclick="openDeunaPayment()">Pagar con Deuna</button>
</div>
<script src="app.ts"></script>
</body>
</html>
Prioridad para mostrar los módulos
Prioridad | Fuente de Configuración | Descripción |
---|---|---|
1 | Módulos pasados al ejecutar la función .initPaymentWidget en el campo checkout_modules | Los módulos se muestran según los que se pasan al iniciar el widget. |
2 | Módulos pasados en el Enlace Pago encheckout_modules | Se revisa la orden para verificar si checkout_modules tiene módulos a mostrar. |
3 | Configuración global del comercio | Si no se pasa en los checkout_modules en la función .initPaymentWidget ni en checkout_modules al momento de crear la order, se toman los checkout_modules configurados a nivel comercio. |
Preguntas Frecuentes
Obtén respuestas a preguntas comunes acerca de nuestro Payment Link
¿Qué es el Link de Pagos DEUNA y cuál es su propósito?
El Link de Pagos DEUNA es una funcionalidad que permite a los comercios crear enlaces de pago para sus clientes. Su propósito es simplificar y agilizar el proceso de pago, además de ofrecer opciones de personalización.¿Puedo personalizar la apariencia del Link de Pagos DEUNA en mi aplicación?
Sí, el Link de Pagos DEUNA permite personalizaciones, como incluir el logo del comercio y cambiar los colores de la barra de estilo y los botones.¿Puedo personalizar la página de agradecimiento (thank you page) después de que se genere el pago a través del Link de Pagos DEUNA?
Sí, una vez que se complete el pago, se mostrará una thank you page que indicará si la transacción fue exitosa o si ocurrió un error. Te permitimos definir una URL de success en la tokenización de la orden, con la redirección a tu propia página de agradecimiento personalizada para procesar información adicional o realizar acciones específicas.¿Se envía OTP (Código de Verificación) para todos los métodos de pago?
El envío de OTP se realiza de acuerdo a ciertos criterios, y no siempre es necesario. Para obtener detalles sobre cuándo se requiere OTP, consulta la documentación proporcionada.¿Pueden mis clientes continuar como invitado a pesar de que estén registrados en la red de DEUNA?
Sí, podrán continuar como invitado desde la pantalla de OTP, pero no podrán acceder a la información de tarjetas guardadas en tu cuenta.¿Qué sucede si intento acceder a un link de pago que ha caducado?
Si intentas acceder a un link de pago que ha caducado, se mostrará una pantalla de error con instrucciones claras sobre cómo proceder.¿Se puede procesar órdenes con diferentes métodos de pago, como tarjetas de crédito/débito, SPEI o OXXO?
Sí, el Link de Pagos DEUNA admite diferentes métodos de pago, incluyendo tarjetas de crédito/débito, SPEI (transferencias) y OXXO (referencia de pago), según estén disponibles en la orden.¿Pueden mis clientes realizar cambios en el monto a pagar dentro del Link de Pagos DEUNA?
No es posible modificar el monto a pagar dentro del Link de Pagos DEUNA. Cualquier cambio en el monto debe realizarse en la sección correspondiente del comercio electrónico, generando un nuevo link de pago.¿Dónde puedo obtener más ayuda o realizar preguntas adicionales sobre el Link de Pagos DEUNA?
Cualquier pregunta adicional o necesidad de asistencia adicional puede ser atendida comunicándote con el equipo de soporte de DEUNA. Puedes enviar un correo electrónico a [email protected] para obtener la asistencia necesaria.Updated 2 days ago