Pagos 2.0 - Documentación de API

Versión: 1.5.0 | Última modificación: 15/04/2024

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. 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
username String Nombre de usuario
password String Contraseña

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)
amount Number Importe de la transacción
reference String Número o código de referencia del sistema que origina la transacción
notificationUrl String URL a la cual se notificará el resultado de la transacción

Response (HTTP 200)

{
    "id": ""
}
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:

  1. Al JSON recibido, agregar al campo securityKey la clave privada proporcionada por Totalcoin usando un canal seguro
  2. Convertir el JSON completo a minúsculas
  3. 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

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

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