post https://payment-backend-sandbox.milio.com.co/sdk-mobile
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. |
reference | 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. |
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"
}