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

CampoTipoObligatorioQué ocurre / Para qué sirve
order_idstringSiID interno para identificar y rastrear la orden.
store_codestringSiCódigo de tienda (o "all" para todas).
currencystringSiMoneda ISO 4217 (p.ej. "MXN").
total_tax_amountnumberSiImporte total de impuestos de la orden.
items_total_amountnumberSiSuma de precios base de todos los ítems (sin impuestos).
sub_totalnumberSiitems_total_amount + total_tax_amount.
total_amountnumberSiMonto final a cobrar (sub_total).
itemsarraySiLista de ítems; cada uno describe un producto/servicio.
order.items[].idstringSiID único del ítem.
order.items[].namestringSiNombre que verá el cliente.
order.items[].descriptionstringNoDescripción detallada.
order.items[].quantityintegerSiCantidad de unidades.
order.items[].unit_priceobjectSiPrecio unitario (se muestra en checkout).
└─ amountnumberSiMonto por unidad.
└─ currencystringSiMoneda ISO para el unit_price.
└─ currency_symbolstringSiSímbolo de la moneda.
order.items[].tax_amountobjectNoImpuesto aplicado al ítem.
order.items[].total_amountobjectSiDesglose final del ítem.
└─ amountnumberSiTotal con impuestos y descuentos.
└─ discount_amountnumberSiDescuento aplicado.
└─ original_amountnumberSiPrecio base sin impuestos.
order.items[].image_urlstringNoURL de imagen del ítem (mejora conversión).
redirect_urlsobjectNoURLs a las que redirigir tras cada resultado.
└─ closestringNoAl cerrar el checkout.
└─ successstringNoTras pago exitoso.
└─ pendingstringNoSi queda en estado pendiente.
└─ errorstringNoSi el pago falla.
└─ fallbackstringNoBotón “Regresar” en vistas de error
include_payment_optionsarraySiFiltra métodos de pago y procesadores disponibles en el checkout.
└─ include_payment_options[].payment_methodstringSiTipo de método de pago (p.ej. "credit_card", "oxxopay", etc.).
└─ include_payment_options[].processorsobjectSiLista 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:

CampoTipoObligatorioQué ocurre / Para qué sirve
checkout_modulesarrayNoLista de módulos de checkout que quieres mostrar.
└─ namestringSiNombre 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

CampoTipoObligatorioQué ocurre / Para qué sirve
expires_atstringNoFecha/hora de caducidad (ISO 8601). Sin este campo, no expira.
payment_link_namestringNoNombre descriptivo para tu Link de Pago (máx. 60 caracteres).
max_completed_purchasesintegerNoLímite de compras exitosas antes de desactivar el enlace.
max_payment_retriesintegerNoLí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

PrioridadFuente de ConfiguraciónDescripción
1Módulos pasados al ejecutar la función .initPaymentWidgeten el campo checkout_modulesLos módulos se muestran según los que se pasan al iniciar el widget.
2Módulos pasados en el Enlace Pago encheckout_modulesSe revisa la orden para verificar si checkout_modules tiene módulos a mostrar.
3Configuración global del comercioSi 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.