Introducción
El presente documento describe los endpoints de la API de TotalCoin para la registración de pagos desde sistemas externos.
Nota sobre los Dominios de Totalcoin
Totalcoin posee 2 dominios, uno para pruebas y otro para producción.
https://apicobranzastest.totalcoin.com test
https://apicobranzas.totalcoin.com prod
Por favor, utilice el dominio correspondiente a su etapa de integracion.
Autenticación
El control de acceso a la API se realiza a través del estándar OAuth 2.0 con Bearer Tokens.
Endpoint
POST
api/auth/login
Request
{
"username": "",
"password": ""
}
Campo |
Tipo |
Descripción |
Requerido |
company |
String |
Nombre de la empresa |
Sí |
username |
String |
Nombre de usuario |
Sí |
password |
String |
Contraseña |
Sí |
Response (HTTP 200)
{
"token": "",
"expires_in": 3600
}
Campo |
Tipo |
Descripción |
token |
String |
Token de autenticación |
expires_in |
Number |
Validez del token en segundos |
Errores Comunes
Código |
Descripción |
401 |
Credenciales incorrectas o inexistentes |
403 |
No se cuenta con permisos para acceder a la API |
Realizar Pago
Llamando a este endpoint es posible realizar un pago a un CBU, CVU o un Alias del sistema bancario Argentino.
Endpoint
POST
api/payments/transactions
Headers
Header |
Valor |
Authorization |
Bearer JWT Token |
Request
{
"alias": "",
"cbucvu": "",
"cuitcuil": "",
"amount": 0,
"reference": "",
"notificationUrl": ""
}
Campo |
Tipo |
Descripción |
Requerido |
alias |
String |
Alias del destinatario de la transacción (se utiliza en vez de CBU / CVU) |
No |
cbucvu |
String |
Número de CBU / CVU del destinatario de la transacción (22 caracteres) se utiliza en caso de que el alias no esté disponible |
No |
cuitcuil |
String |
Número de CUIT / CUIL del destinatario de la transacción (11 caracteres) |
Sí |
amount |
Number |
Importe de la transacción |
Sí |
reference |
String |
Número o código de referencia del sistema que origina la transacción |
Sí |
notificationUrl |
String |
URL a la cual se notificará el resultado de la transacción |
Sí |
Response (HTTP 200)
Campo |
Tipo |
Descripción |
id |
String |
Identificador de la transacción generada para esta transferencia |
Nota
En la transaccion debe estar especificado el alias o el cbu/cvu del destinatario.
Errores Comunes
Código |
Descripción |
400 |
Datos no válidos para procesar la transacción. Con detalle de la validación |
401 |
No autorizado a realizar la transacción |
409 |
Duplicada. Ya existe una transacción con el mismo número o código de referencia |
500 |
Error al procesar la transacción |
Notificación de Resultado (Callback)
Una vez realizada la transacción, se notificará el resultado a la URL informada en el request de Realizar Pago (campo notificationUrl).
Cabe aclarar que solo se notificaran estados finales (los mismos seran listados en esta seccion).
Headers
Clave |
Valor |
Authorization |
SHA256 Hash |
Body
{
"body": {
"id": "",
"status": ""
},
"securityKey": ""
}
Campo |
Tipo |
Descripción |
body |
Object |
Objeto con los datos de la transacción |
id |
String |
Identificador de la transacción |
status |
String |
Descripción del estado actual de la transacción |
securityKey |
String |
Campo vacío que deberá completarse con la clave privada proporcionada |
ACLARACIÓN SOBRE EL ESTADO INFORMADO (propiedad status del objeto body)
Como se anticipo al principio , solo se notificara estados finales los cuales son:
Processed: Transacción procesada correctamente.
Failed: Transacción rechazada.
Invalid: Transacción invalida.
Seguridad en la llamada al webhook. Cálculo del Hash
Adicionalmente a los mecanismos de seguridad propuestos por el Cliente (por ejemplo IP Whitelisting)
Como metodo de Seguridad extra Totalcoin envia un Authentication header con un SHA256 Hash, el mismo es usado para verificar que el mensaje fue enviado por Totalcoin
y se lo utiliza de la siguiente forma:
- Al JSON recibido, agregar al campo securityKey la clave privada proporcionada por Totalcoin usando un canal seguro
- Convertir el JSON completo a minúsculas
- Calcular el hash con SHA256
Ejemplo:
Request recibido en el webhook:
Authorization: 4e36de37b87010d301e4b3a9046befe24ef253a98746f1d43998f29c31e188d4
{"Body":{"Id":"E6451028-84CE-4FA4-B3BC-335972BEBF0A","Status":"Failed"},"Securitykey":""}
Clave privada: 09B4ET8C4EB24S8ABTA8B8A (otorgada por Totalcoin)
JSON con el campo SecurityKey:
{
"Body":{
"Id":"E6451028-84CE-4FA4-B3BC-335972BEBF0A",
"Status":"Failed"
},
"Securitykey":"09B4ET8C4EB24S8ABTA8B8A"
}
JSON convertido a minúsculas:
{"body":{"id":"e6451028-84ce-4fa4-b3bc-335972bebf0a","status":"failed"},"securitykey":"09b4et8c4eb24s8abta8b8a"}
Hash calculado:
4e36de37b87010d301e4b3a9046befe24ef253a98746f1d43998f29c31e188d4
Este hash calculado se debe comparar con el hash recibido en el header de la notificacion.
Envio de SecurityKey
El equipo tecnico de totalcoin enviara la SecurityKey por un canal seguro.
Consultar Pago
Consultar el estado de un pago específico.
Endpoint
GET
api/payments/transactions/{id}
Request
api/payments/transactions/00000000-0000-0000-0000-000000000000
Campo |
Tipo |
Descripción |
Requerido |
id |
String |
Identificador de la transacción |
Sí |
Response (HTTP 200)
{
id: "",
status: "",
amount: 0.00,
date: "",
reference: ""
}
Campo |
Tipo |
Descripción |
id |
String |
Identificador de la transacción recibida correctamente |
status |
String |
Descripción del estado actual de la transacción |
amount |
decimal |
Importe de la transacción |
date |
String |
Fecha de la transacción |
reference |
String |
Número o código de referencia del sistema que origina la transacción |
Errores Comunes
Código |
Descripción |
400 |
Datos no válidos para procesar la consulta |
401 |
No autorizado a realizar la consulta |
404 |
Transacción no encontrada |
500 |
Error al procesar la consulta |
Estados de la Transacción
Estado |
Descripción |
Processed |
Transacción procesada correctamente. Estado Final. |
Failed |
Transacción rechazada. Estado Final. |
Processing |
Transacción validada y en proceso. Deberá consultarse nuevamente. |
Pending |
Transacción recibida y pendiente de procesamiento. Deberá consultarse nuevamente. |
Consultar Pago por Id Externo
Consultar el estado de un pago específico a partir del identificador externo.
Endpoint
GET
api/payments/transactions/{id}/external
Request
api/payments/transactions/0000000/external
Campo |
Tipo |
Descripción |
Requerido |
id |
String |
Identificador de la transacción |
Sí |
Response (HTTP 200)
{
id: "",
status: "",
amount: 0.00,
date: "",
reference: ""
}
Campo |
Tipo |
Descripción |
id |
String |
Identificador de la transacción recibida correctamente |
status |
String |
Descripción del estado actual de la transacción |
amount |
decimal |
Importe de la transacción |
date |
String |
Fecha de la transacción |
reference |
String |
Número o código de referencia del sistema que origina la transacción |
Errores Comunes
Código |
Descripción |
400 |
Datos no válidos para procesar la consulta |
401 |
No autorizado a realizar la consulta |
404 |
Transacción no encontrada |
500 |
Error al procesar la consulta |