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):
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
cardNumber | string | Condicional | Número de la tarjeta de crédito. Solo se requiere si la tarjeta no está tokenizada. |
cardExpiryDate | string | Condicional | Fecha de expiración de la tarjeta en formato MM/YY . Solo se requiere si la tarjeta no está tokenizada. |
cardCVV | string | Condicional | Código de seguridad (CVV) de la tarjeta. Solo se requiere si la tarjeta no está tokenizada. |
cardName | string | Condicional | Nombre del titular de la tarjeta. Solo se requiere si la tarjeta no está tokenizada. |
webhook | string | Requerido | URL del webhook donde se enviará la notificación de la transacción. |
idExtern | string | Requerido | Referencia única para la transacción, generada utilizando randomUUID . |
thirdBankUUID | string | Condicional | UUID del banco tercero. Requerido en algunos casos para identificaciones. |
thirdUUID | string | Requerido | UUID de la entidad del tercero que está realizando la transacción. |
qr | boolean | Opcional | Indica si la transacción es a través de QR (si es true , se utiliza el QR). |
amount | number | Condicional | El monto de la transacción en la moneda correspondiente, se requiere para ciertas acciones. |
type | string | Requerido | El tipo de transacción: "IN" para ingreso y "OUT" para salida. |
isReusable | boolean | Condicional | Permite definir si la solicitud se puede reutilizar o si es de un solo uso. |
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 6)
- 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"
}
7. Tokenización de tarjetas
- Sirve para el registro de tarjetas hacia los terceros
{
"thirdUUID":"...",
"webhook":"https://...",
"type":"CARD_REGISTRATION"
}
8. Open Link para operaciones cross border
- Se usa una tarjeta tokenizada y webhook
Nota: En el caso de Request to Pay, este paso lo realiza directamente el usuario, quien en una etapa posterior ingresa el monto solicitado al remitente. Esta acción es la que convierte la operación en un Request to Pay.
{
"thirdUUID":"...",
"thirdBankUUID":".",
"webhook":"https://...",
"reference":"...",
"isReusable":false,
"type":"OPEN_LINK"
}
Todos los json anteriores deben ir encriptados
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"
}