API Reference

Init SDK

Este endpoint permite inicializar un token para lanzar un SDK móvil. Recibe los datos de una transacción inicial que puede ser con una tarjeta no tokenizada o una tarjeta previamente tokenizada junto con un webcode y otros parámetros necesarios para inicializar el proceso de pago.

Parámetros de Entrada (Body):

CampoTipoRequeridoDescripción
cardNumberstringCondicionalNúmero de la tarjeta de crédito. Solo se requiere si la tarjeta no está tokenizada.
cardExpiryDatestringCondicionalFecha de expiración de la tarjeta en formato MM/YY. Solo se requiere si la tarjeta no está tokenizada.
cardCVVstringCondicionalCódigo de seguridad (CVV) de la tarjeta. Solo se requiere si la tarjeta no está tokenizada.
cardNamestringCondicionalNombre del titular de la tarjeta. Solo se requiere si la tarjeta no está tokenizada.
webhookstringRequeridoURL del webhook donde se enviará la notificación de la transacción.
referencestringRequeridoReferencia única para la transacción, generada utilizando randomUUID.
thirdBankUUIDstringCondicionalUUID del banco tercero. Requerido en algunos casos para identificaciones.
thirdUUIDstringRequeridoUUID de la entidad del tercero que está realizando la transacción.
qrbooleanOpcionalIndica si la transacción es a través de QR (si es true, se utiliza el QR).
amountnumberCondicionalEl monto de la transacción en la moneda correspondiente, se requiere para ciertas acciones.
typestringRequeridoEl tipo de transacción: "IN" para ingreso y "OUT" para salida.

Casos de uso

1. QR - Tarjeta Tokenizada (Caso 1)

  • Si la tarjeta está tokenizada, se requiere el cardToken.
  • Se incluye el QR y el monto.
{
  "thirdBankUUID": "uuid_of_third_bank",
  "thirdUUID": "uuid",
  "qr": true,
  "amount": 125,
  "webhook": "https://webhook-test.com/5f1a3ef2b2090773083e90128919cd6a",
  "idExtern": "random-uuid-generated",
  "type": "IN"
}

2. QR - Tarjeta Manual (Caso 2)

  • Se envía una tarjeta no tokenizada con los datos completos como cardNumber, cardExpiryDate, cardCVV, etc.
  • Se incluye el QR y el monto.
{
  "card": {
    "cardNumber": "4000056655665556",
    "cardExpiryDate": "12/26",
    "cardCVV": "123",
    "cardName": "Camilo Santander"
  },
  "thirdUUID": "uuid",
  "qr": true,
  "amount": 125,
  "webhook": "https://webhook-test.com/5f1a3ef2b2090773083e90128919cd6a",
  "idExtern": "random-uuid-generated",
  "type": "IN"
}

3. Recarga Manual (Caso 3)

  • No se utiliza tarjeta tokenizada, pero se necesita la referencia y webhook.
{
  "card": {
    "cardNumber": "4000056655665556",
    "cardExpiryDate": "12/26",
    "cardCVV": "123",
    "cardName": "Camilo Santander"
  },
  "thirdUUID": "uuid",
  "webhook": "https://webhook-test.com/5f1a3ef2b2090773083e90128919cd6a",
  "idExtern": "random-uuid-generated",
  "type": "IN"
}

4. Recarga Tokenizada (Caso 4)

  • Aquí se usa una tarjeta tokenizada, y no se incluye un monto.
{
  "thirdBankUUID": "uuid_of_third_bank",
  "thirdUUID": "uuid",
  "webhook": "https://webhook-test.com/5f1a3ef2b2090773083e90128919cd6a",
  "idExtern": "random-uuid-generated",
  "type": "IN"
}

5. Transferencia Manual (Caso 5)

  • Se realiza una transferencia manual sin monto y usando el webhook.
{
  "card": {
    "cardNumber": "4000056655665556",
    "cardExpiryDate": "12/26",
    "cardCVV": "123",
    "cardName": "Camilo Santander"
  },
  "thirdUUID": "uuid",
  "webhook": "https://webhook-test.com/5f1a3ef2b2090773083e90128919cd6a",
  "amount": 100000,
  "idExtern": "random-uuid-generated",
  "type": "OUT"
}

6. Transferencia Tokenizada (Caso 7)

  • Se usa una tarjeta tokenizada, y se incluye monto y webhook.
{
  "thirdBankUUID": "uuid_of_third_bank",
  "thirdUUID": "uuid",
  "webhook": "https://webhook-test.com/5f1a3ef2b2090773083e90128919cd6a",
  "amount": 100000,
  "idExtern": "random-uuid-generated",
  "type": "OUT"
}

📘

Todos los json anteriores deben ir encryptados

Ejemplo de una request

const axios = require('axios');
let data = JSON.stringify({
  "data": "data encriptada"
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://payment-backend-sandbox.milio.com.co/sdk-mobile',
  headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer eyJhbGciOiJI...'
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

Respueta

{
    "error": 0,
    "code": "ML000",
    "category": "GENERAL",
    "message": "Transacción creada",
    "data": {
        "transferId": "ae6ea30d-7d6f-4956-8f2c-7e4770d7bb3c"
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb21wYW55SWQiOjI3LCJ0cmFuc2ZlcklkIjoiYWU2ZWEzMGQtN2Q2Zi00OTU2LThmMmMtN2U0NzcwZDdiYjNjIiwiaWF0IjoxNzQ2Nzk4NjI4LCJleHAiOjE3NDY4ODUwMjh9.Xi9Qq9Oomv-sa3reRb-AIXG_Dd7--dZJ1lomC9WW8GI"
}
Language
Credentials
OAuth2
Click Try It! to start a request and see the response here!