Descripción del producto #
Autenticación de dos factores vía OTP (One-Time Password), con envío y validación. Soporta canales como SMS y email. Útil para verificación segura en transacciones. Basado en los endpoints de OTP del JSON.
Requisitos de autenticación #
- Método: Para Auth OTP: HTTP Basic (concatenar client_id:client_secret, codificar en Base64). Para Send/Validate OTP: Bearer token (JWT).
- Nota: Las credenciales (client_id y client_secret) deben solicitarse al equipo de S.O.F.I.A. para pruebas en el entorno de sandbox. Estas serán proporcionadas una vez que el cliente esté inscrito.
Endpoints #
- Auth OTP: POST
https://qa.bio.credit/api/v3/auth_code(Sandbox). - Send OTP: POST
https://qa.bio.credit/api/v3/send_otp(Sandbox). - Validate OTP: POST
https://qa.bio.credit/api/v3/validate_otp(Sandbox).
Headers #
| Key | Value | Description |
|---|---|---|
| Accept | application/json | Formato de respuesta esperado. |
| Content-Type | application/json | Formato del body (multipart/form-data implícito para archivos). |
| Authorization | Basic [Base64] | Para Auth OTP (concatenar client_id:client_secret). |
| Authorization | Bearer [JWT] | Para Send OTP y Validate OTP (usando token generado). |
Parámetros de entrada (body) #
Usa multipart/form-data para Send OTP y Validate OTP.
Para auth OTP: #
Sin body especificado (vacío).
Para send OTP: #
| Key | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | Sí | ID del crédito/transacción. |
| channel_id | string | Sí | Canal (e.g., “4” para SMS). |
| phone_number | string | Sí | Teléfono. |
| country | string | Sí | Código de país (e.g., “COL”). |
| client_id | string | Sí | ID del cliente. |
| string | No | Email. |
Ejemplo JSON Request (simulado):
{
"transaction_id": "trans-789012",
"channel_id": "4",
"phone_number": "3109876543",
"country": "COL",
"client_id": "123456789",
"email": "user@fake.com"
}
Para validate OTP: #
| Key | Type | Required | Description |
|---|---|---|---|
| otp_code | string | Sí | Código OTP. |
| transaction_id | string | Sí | ID de transacción. |
Ejemplo JSON Request (simulado):
{
"otp_code": "123456",
"transaction_id": "trans-789012"
}
Parámetros de salida (respuesta) #
Para auth OTP: #
| Key | Type | Description |
|---|---|---|
| token_type | string | Tipo de token (e.g., “Bearer”). |
| expires_in | integer | Tiempo de expiración en segundos. |
| access_token | string | Token de acceso JWT. |
Ejemplo JSON Response (falso):
{
"token_type": "Bearer",
"expires_in": 1800,
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0QGZha2UuY29tIiwiaWF0IjoxNzI1NTQ1NTQ5fQ.R2k9L8pM5Q7T3Y6U9I2O5P8K1N4J7L0M3H6V9X2Z4W"
}
Para send OTP: #
| Key | Type | Description |
|---|---|---|
| status | boolean | Éxito en envío. |
| message | string | Mensaje de confirmación. |
| sns_message_id | string | ID del mensaje SNS. |
| expires_at | string | Fecha de expiración del OTP. |
Ejemplo JSON Response (falso):
{
"status": true,
"message": "Código OTP enviado con éxito",
"sns_message_id": "x7y8z9a0-b1c2-d3e4-f5g6-h7i8j9k0l1m2",
"expires_at": "2025-09-05 03:29:00Z"
}
Para validate OTP: #
| Key | Type | Description |
|---|---|---|
| status | boolean | Validación exitosa. |
| message | string | Mensaje de validación. |
Ejemplo JSON Response (falso):
{
"status": true,
"message": "Código OTP validado correctamente"
}
Manejo de errores #
| HTTP Code | Error Code | Description |
|---|---|---|
| 400 | WHK001 | OTP inválido. |
| 401 | WHK002 | Autenticación fallida. |
Notas adicionales #
- Integra con firma de documentos (OTP para validación).
- Bearer tokens son JWT; manejar expiración.
- El endpoint de generación de token es
https://qa.bio.credit/api/v3/auth_code.