API Multicaja (Alpha) API Reference
Bienvenido a la API de Multicaja (Alpha)
Este es un proyecto alpha y por lo tanto sufrirá muchos cambios
Todos los requests son autenticados usando un api-key
.
Existen dos ambientes: qa
y producción
. El host
de qa
es apiqa.multicaja.cl
.
API Endpoint
http://api.multicaja.cl/v0.5-alpha/
Request Content-Types: application/json
Response Content-Types: application/json
Version: 0.5
clientes
Operaciones directamente con relacionadas un cliente
Crear
Registra a un nuevo cliente, el que puede ser persona natural (rut.value < 50000000
) o empresa (rut.value >= 50000000
).
Notas
- Requiere al menos los campos mínimos de User: rut y correo.
- Si es una empresa, debe incluir
company_data
. - El servicio también funcionará con el
rut
de un cliente existente conglobalStatus
"pre-registro"
. - Si se intenta crear un usuario con un
rut
o unemail
que ya ha sido usado y conglobalStatus
distinto de"pre-registro"
, el servicio retornará405
. clave
debe ser númérica, de 4 dígitos, no consecutivos, no iguales, y que no correspondan a ninguna parte derut.value
- Si se incluye el campo
clave
,globalStatus
cambiará a"activo"
- Si se incluye
rut.serial_number
, se invocará al SRCeI para validar la cédula. Si esa validación fuera exitosa,rut.status
pasará a "validado". Si la validación no fuera exitosa,rut.status
cambiará a (o seguirá siendo) "no validado". Esta llamada se hará de manera síncrona, por lo que el servicio no retornará hasta que el SRCeI responda.
Recomendaciones
- Dado que el servicio no funciona si el
rut
o elemail
ya han sido usados (a menos que pertenezcan a un cliente conglobalStatus
"pre-registro"
), debería buscarlo primero porrut
y luego poremail
usando el método/users/find
Parámetros del usuario a crear
Request Example
{
"rut": {
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"value": "912345678"
},
"email": {
"value": "pepito@gmail.com"
},
"company_data": {
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"clave": 8922,
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
OK
El usuario ya existe
El Cliente contiene datos inválidos
Response Example (201 Created)
{
"id": 7783834,
"rut": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
},
"email": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
},
"company_data": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"globalStatus": "string",
"has_clave": "true",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Leer
Lee los datos de un cliente.
Notas
- Incluye los objetos
rut
,email
ycellphone
ID del usuario
OK
Cliente no existe
Response Example (200 OK)
{
"id": 7783834,
"rut": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
},
"email": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
},
"company_data": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"globalStatus": "string",
"has_clave": "true",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
Actualizar
Modifica los datos de un cliente, el que puede ser persona natural (rut.value < 50000000
) o empresa (rut.value >= 50000000
).
Notas
- Pese a que el rut es requerido, no es modificable. Si se proporciona un RUT distinto al del cliente
{user_id}
, el servicio retornará422
- Si es una empresa, debe incluir
company_data
. clave
debe ser númérica, de 4 dígitos, no consecutivos, no iguales, y que no correspondan a ninguna parte derut.value
- Si se incluye el campo
clave
yglobalStatus
era"pre-registro"
,globalStatus
cambiará a"activo"
- No se podrá modificar
email.value
si cliente no tiene clave. Si se intenta modificar un email de un cliente que no tiene clave, el servicio retornará422
. - No se podrá modificar
email.value
siemail.status == "validado"
. Si se intenta modificar un email validado a través de este método, el servicio retornará422
. Para modificar un correo validado, se debe usar los métodos de la URL/user/{user_id}/mail
. La excepción a esta regla son los clientes conglobalStatus == "pre-registro"
. Si se intenta modificar un email validado de un cliente "pre-registro", la modificación tendrá éxito yemail.status
pasará a ser"no validado"
. - No se podrá modificar
cellphone.value
sicelular.status == "validado"
. Si se intenta modificar un celular validado a través de este método, el servicio retornará422
. Para modificar un celular validado, se debe usar los métodos de la URL/user/{user_id}/sms
. La excepción a esta regla son los clientes conglobalStatus == "pre-registro"
. Si se intenta modificar un celular validado de un cliente "pre-registro", la modificación tendrá éxito ycelular.status
pasará a ser"no validado"
. - Si se incluye
rut.serial_number
, se invocará al SRCeI para validar la cédula. Si esa validación fuera exitosa,rut.status
pasará a "validado". Si la validación no fuera exitosa,rut.status
cambiará a (o seguirá siendo) "no validado". Esta llamada se hará de manera síncrona, por lo que el servicio no retornará hasta que el SRCeI responda. - Los campos
gender
,birthday
,name
,lastname_1
ylastname_2
no tienen restricciones de modificación
Recomendaciones
- Sólo envíe los campos mínimos y los que se desee modificar. Por ejemplo, para cambiar el nombre, sólo incluya
rut.value
,email.value
yname
. Para validar la cédula contra el SRCeI, sólo incluyarut.value
,email.value
yrut.status
. - Si se desea cambiar la clave del cliente, valide la clave anterior en primer lugar
Parámetros a modificar
ID del usuario
Request Example
{
"rut": {
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"value": "912345678"
},
"email": {
"value": "pepito@gmail.com"
},
"company_data": {
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"clave": 8922,
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
OK
Cliente no existe
El Cliente contiene datos inválidos
Response Example (200 OK)
{
"id": 7783834,
"rut": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
},
"email": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
},
"company_data": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"globalStatus": "string",
"has_clave": "true",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Buscar
Busca a un cliente por rut, por email o por celular
Rut sin puntos ni dígito verificador
Celular (9 dígitos)
OK
Cliente no existe
Response Example (200 OK)
{
"id": 7783834,
"rut": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
},
"email": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
},
"company_data": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"globalStatus": "string",
"has_clave": "true",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
Buscar por ID y clave
Busca a un cliente por (rut y clave) o por (email y clave)
Rut sin puntos ni dígito verificador
Clave de 4 dígitos
OK
Cliente no existe (puede representar clave inválida)
Response Example (200 OK)
{
"id": 7783834,
"rut": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
},
"email": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
},
"company_data": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"globalStatus": "string",
"has_clave": "true",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
contacto
Para contactar a un cliente y validar datos de contacto
Enviar correo
Envía una comunicación o correo de validación al cliente
Notas
template_data
debe incluirse si eltemplate
requiere datos mínimos. Los datos deben ir en formato JSON. En caso contrario, el servicio retornará422
.user_callback_uri
debe incluirse si eltemplate
incluye un link para que el usuario haga click. En caso contrario, el servicio retornará422
.- Si se incluye
user_callback_uri
, no se incluyeaddress
, y el usuario hace clic en el link que indica el correo, el sistema actualizará automáticamente avalidado
el campoemail.status
del Cliente. Esto se logra incluyendo en el correo un link a una URI temporal que realiza el cambio y luego redirige auser_callback_uri
. address
permite cambiar el correo electrónico cuando el cliente tiene un correo validado. Si se incluye tantouser_callback_uri
comoaddress
, y el usuario hace clic en el link que indica el correo, el sistema cambiará automáticamente el correo del cliente a la dirección que indicaaddress
y lo dejará comovalidado
.- La validación de correos se logra incluyendo en el correo un link a una URI temporal que realiza el cambio de estatus y luego redirige a
user_callback_uri
.
Correo electrónico a enviar
- template: string
-
Tipo de correo electrónico a enviar
- template_data: string
-
JSON con tantos pares llave-valor como requiera el template del correo a enviar
- user_callback_uri: string
-
Link que incluirá el correo si el
template
lo soporta - address: string
-
Correo electrónico al que se enviará este mensaje. Si no se incluye este campo, se usará el campo
email.value
del Cliente.
ID del usuario
Request Example
{
"template": "Prepago/ValidacionCorreo",
"template_data": "{'saludo': 'Estimado Pepito', 'despedida': 'Chao!'}",
"user_callback_uri": "https://www.multicaja.cl/prepago/registro?u=3242343",
"address": "pepito@gmail.com"
}
OK
Cliente no existe
El mail contiene datos inválidos
Response Example (201 Created)
"boolean"
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Enviar sms
Permite mandar un mensaje por sms al cliente
Notas
- Sólo incluir
cellphone
si el usuario ya tiene celular e intenta cambiarlo - Si el
template
requiere datos mínimos, debe incluirse estos datos en formato JSON mediante el campotemplate_data
- Si el cliente indica no haber recibido el sms, reintente el envío cambiando
gateway
por"secondary"
- No intente enviar códigos de validación a mano. Use un
template
que lo soporte.
SMS a enviar
- template: string
-
Tipo de sms a enviar
- gateway: string primary, secondary
-
Gateway por el que se enviará el SMS
- primary: Gateway primaria (default)
- secondary: Gateway secundaria, usar sólo si el cliente dice no haber recibido el SMS
- cellphone: string
-
Celular al que se enviará este mensaje. Corresponde a los 9 números que siguen a '+56'. Si no se incluye este campo, se usará el campo
cellphone.value
del Cliente.
ID del usuario
Request Example
{
"template": "Prepago/ValidacionCelular",
"gateway": "string",
"cellphone": "912345678"
}
OK
Cliente no existe
El sms contiene datos inválidos
Response Example (201 Created)
"boolean"
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Validar código sms
Valida un código enviado mediante POST a /users/{user_id}/sms
Notas
- Sólo invocar este método para validar celular si se ha enviado previamente un código por SMS haciendo POST a
/users/{user_id}/sms
- Dependiendo del template usado en el POST a
/users/{user_id}/sms
, esta llamada podría cambiarcellphone.status
a"validado"
. Esto ocurrirá sólo si el código proporcionado corresponde al que fue enviado al celular`. - Si el código ingresado no corresponde al que fue enviado al cliente, el servicio retornará
422
.
Código ingresado por el cliente
ID del usuario
Request Example
"123456"
OK
Cliente no existe
El código ingresado no es válido
Response Example (201 Created)
"boolean"
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
cuentas
Operaciones relacionadas con las cuentas bancarias de un cliente
Listar
ID del usuario
OK
Cliente no existe
Response Example (201 Created)
[
{
"id": 7783834,
"bank_id": 4,
"acc_type": "string",
"acc_number": "string",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
]
Crear
Crea una nueva cuenta bancaria para este cliente
- La terna (
account.bank_id
,account.acc_type
,account.acc_number
) debe ser única para este usuario. De lo contrario, el servicio retornará405
Cuenta bancaria
ID del usuario
Request Example
{
"bank_id": 4,
"acc_type": "string",
"acc_number": "string"
}
OK
Cliente no existe
La cuenta ya existe
La cuenta contiene datos inválidos
Response Example (201 Created)
[
{
"id": 7783834,
"bank_id": 4,
"acc_type": "string",
"acc_number": "string",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
]
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Eliminar
ID del usuario
ID de la cuenta
OK
Cliente o Cuenta no existen
direcciones
Operaciones relacionadas con la dirección física de un cliente
Listar
ID del usuario
OK
Cliente no existe
Response Example (201 Created)
[
{
"id": 7783834,
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"alias": "Casa",
"line_1": "Suecia 1414",
"line_2": "Depto 502",
"region_id": 13,
"commune_id": 230,
"postal_code": 7710787
}
]
Crear
Crea una nueva dirección para este cliente
- La terna (
address.line_1
,address.commune
,address.region
) debe ser única para este usuario. De lo contrario, el servicio retornará405
Dirección
ID del usuario
Request Example
{
"alias": "Casa",
"line_1": "Suecia 1414",
"line_2": "Depto 502",
"region_id": 13,
"commune_id": 230,
"postal_code": 7710787
}
OK
Cliente no existe
La dirección ya existe
La dirección contiene datos inválidos
Response Example (201 Created)
[
{
"id": 7783834,
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"alias": "Casa",
"line_1": "Suecia 1414",
"line_2": "Depto 502",
"region_id": 13,
"commune_id": 230,
"postal_code": 7710787
}
]
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Eliminar
ID del usuario
ID de la dirección
OK
Cliente o Dirección no existen
parámetros
Listas de parámetros inmutables
Lista bancos
OK
Response Example (200 OK)
[
{
"id": "integer",
"value": "string",
"desc": "string"
}
]
Lista comunas
id de region para busqueda
OK
Response Example (200 OK)
[
{
"id": "integer",
"value": "string",
"desc": "string"
}
]
Lista regiones
OK
Response Example (200 OK)
[
{
"id": "integer",
"value": "string",
"desc": "string"
}
]
Lista giros comerciales
OK
Response Example (200 OK)
[
{
"id": "integer",
"value": "string",
"desc": "string"
}
]
prepago
Operaciones relacionadas con Prepago Multicaja
Consultar
Indica si el cliente tiene un Prepago Multicaja. En caso afirmativo, retorna la tarjeta truncada.
- Si el cliente tiene Prepago Multicaja,
has_prepaid_account
serátrue
. card.timestamps.created_at
indicará la fecha en la que este cliente obtuvo su primera tarjeta de prepagocard.timestamps.updated_at
indicará la fecha de la última acción de bloqueo, desbloqueo y reemisión.
ID del usuario
OK
Cliente no existe o no tiene un Prepago Multicaja
Response Example (200 OK)
{
"has_prepaid_card": true,
"card": {
"id": 7783834,
"processor_user_id": "2231-9892-781283049685",
"pan": "123456******1234",
"expiration": "11/22",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
}
Emitir
Asigna una tarjeta Prepago Multicaja a este cliente.
Como requisito para invocar este servicio, el cliente debe tener name
y lastname_1
no vacíos, y además cumplir que (rut.status == "validado_srcei" || rut.status == "validado_tef") && email.status == "validado" && cellphone.stauts == "validado"
initial_balance
: Saldo inicial de la tarjeta- Si el cliente ya tiene un Prepago Multicaja, este servicio retornará
405
Saldo inicial de la tarjeta en pesos
ID del usuario
Request Example
5000
OK
Cliente no existe
Cliente ya cuenta con un Prepago Multicaja. Si quiere reemitir la tarjeta, use el método reissue.
Hubo un error de validación
Response Example (200 OK)
{
"id": 7783834,
"processor_user_id": "2231-9892-781283049685",
"pan": "123456******1234",
"expiration": "11/22",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Ver saldo
Retorna el saldo de la tarjeta
ID del usuario
OK
Cliente no existe o no tiene un Prepago Multicaja
Response Example (200 OK)
3250
Aumentar saldo
Aumenta el saldo
Retorna el nuevo saldo de la tarjeta y un movimiento con un código de autorización
topup_amount
corresponde al monto en pesos que se desea recargarmerchant_transaction_id
corresponde a un identificador de la recarga en el canal. El servicio es idempotente para recargas con el mismo identificador y con idénticotopup_amount
.
- merchant_transaction_id: string
-
Identificador único de la recarga en el canal
- topup_amount: integer
-
Monto de la recarga
ID del usuario
Request Example
{
"merchant_transaction_id": "20180315-77685-12",
"topup_amount": 5000
}
OK
Cliente no existe o no tiene un Prepago Multicaja
La recarga contiene datos inválidos
Response Example (201 Created)
{
"balance": 3250,
"transaction": {
"auth_code": "88457",
"amount": 45737,
"desc": "Abono sucursal Web"
}
}
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Retirar
Disminuye el saldo de la tarjeta
Retorna el nuevo saldo de la tarjeta y un movimiento con un código de autorización
withdrawal_amount
corresponde al monto en pesos que se desea retirarmerchant_transaction_id
corresponde a un identificador del retiro en el canal. El servicio es idempotente para retiros con el mismo identificador y con idénticowithdrawal_amount
.
- merchant_transaction_id: string
-
Identificador único del retiro en el canal
- withdrawal_amount: integer
-
Monto del retiro
ID del usuario
Request Example
{
"merchant_transaction_id": "20180315-77685-12",
"withdrawal_amount": 5000
}
OK
Cliente no existe o no tiene un Prepago Multicaja
El retiro contiene datos inválidos
Response Example (201 Created)
{
"balance": 3250,
"transaction": {
"auth_code": "88457",
"amount": 45737,
"desc": "Abono sucursal Web"
}
}
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Reemitir
Bloquea la tarjeta activa y emite una tarjeta Prepago Multicaja a este cliente.
Para invocar este servicio, el cliente ya debe tener un Prepago Multicaja
La nueva tarjeta es retornada por el servicio. Si el cliente no tiene Prepago Multicaja, el servicio retornará 422
ID del usuario
OK
Cliente no existe
Cliente no cuenta con un Prepago Multicaja
Response Example (201 Created)
{
"id": 7783834,
"processor_user_id": "2231-9892-781283049685",
"pan": "123456******1234",
"expiration": "11/22",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
Bloquear
Bloquea la tarjeta. Si la tarjeta ya está bloqueada, no hace nada.
Para invocar este servicio, el cliente ya debe tener un Prepago Multicaja
Si el cliente no tiene Prepago Multicaja, el servicio retornará 405
ID del usuario
OK
Cliente no existe
Cliente no cuenta con un Prepago Multicaja
Response Example (201 Created)
{
"id": 7783834,
"processor_user_id": "2231-9892-781283049685",
"pan": "123456******1234",
"expiration": "11/22",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
Desbloquear
Desbloquea la tarjeta. Si la tarjeta ya está activa o expirada, no hace nada.
Para invocar este servicio, el cliente ya debe tener un Prepago Multicaja
Si el cliente no tiene Prepago Multicaja, el servicio retornará 405
ID del usuario
OK
Cliente no existe
Cliente no cuenta con un Prepago Multicaja
Response Example (201 Created)
{
"id": 7783834,
"processor_user_id": "2231-9892-781283049685",
"pan": "123456******1234",
"expiration": "11/22",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
Buscar transacciones
ID del usuario
OK
Cliente no existe
Response Example (200 OK)
[
{
"auth_code": "88457",
"amount": 45737,
"desc": "Abono sucursal Web"
}
]
Notificación (Callback)
Notifica una transacción ocurrida en una tarjeta de prepago
Mensaje invocado por el procesador emisor
- Si el mensaje de entrada no corresponde an un
ISO8583Transaction
, el servicio responderá422
Transacción
Request Example
{
"entidad_codigo": "9603",
"cliente": {
"centro_alta": "0001",
"cuenta": "000000012345",
"tipo_documento": "RUT",
"numero_documento": "14569484"
},
"tarjeta": {
"pan": "4111111111111111",
"expiracion": "03/22",
"bloqueo_codigo": "010",
"bloqueo_descripcion": "MORA GRAVE",
"saldo": {
"codigo_moneda": "CLP",
"saldo_dispuesto_antes": "1983000",
"saldo_autorizado_antes": "100000",
"saldo_dispuesto_despues": "1882900",
"saldo_autorizado_despues": "200100"
}
},
"mensaje_entrada": {
"codigo_moneda_local": "CLP",
"monto_local": "100100",
"codigo_moneda_origen": "EUR",
"monto_origen": "154",
"comercio_nombre": "AMAZON UK",
"comercio_pais": "GBR",
"timestamp": "2018-01-14T15:27:42.669Z"
},
"mensaje_respuesta": {
"factura_codigo": "TF491",
"factura_descripcion": "COMPRA EN CUOTAS",
"codigo_autorizacion": "100100",
"respuesta_tipo_codigo": "110",
"respuesta_tipo_descripcion": "APROBADO",
"respuesta_codigo_autorizacion": "123456",
"timestamp": "2018-01-14T15:27:42.669Z"
},
"raw_iso_8583_request": "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvS4=",
"raw_iso_8583_response": "vdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c="
}
OK
El mensaje ISO8583Transaction
tiene errores
Response Example (422 Unprocessable Entity)
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
Schema Definitions
NewUser: object
Cliente (Request)
- Si el RUT es inferior a 50.000.000, corresponde a Persona Natural y
company_data
deberá sernull
. - Si el RUT es igual o superior a 50.000.000, corresponde a Empresa y
company_data
debe existir.
- rut: NewRut
- cellphone: NewCellPhone
- email: NewEmail
- company_data: NewCompanyData
- clave: string
-
Clave de autenticación de 4 dígitos. Campo write-only.
Example
{
"rut": {
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"value": "912345678"
},
"email": {
"value": "pepito@gmail.com"
},
"company_data": {
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"clave": 8922,
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
User: object
Cliente (Response)
- Este objeto representa tanto a una persona natural como a una empresa
- Si el RUT es inferior a 50.000.000, corresponde a Persona Natural y
company_data
deberá sernull
. - Si el RUT es igual o superior a 50.000.000, corresponde a Empresa y
company_data
es obligatorio
- id: integer
-
Identificador interno. Campo read-only.
- rut: Rut
- cellphone: CellPhone
- email: Email
- company_data: CompanyData
- globalStatus: string pre-registro, activo, bloqueado, borrado
-
Estado del cliente. Campo read-only.
- "pre-registro": cliente no posee clave
- "activo": cliente con clave que puede transar
- "bloqueado": cuenta temporalmente congelada
- "borrado": eliminación lógica del cliente, no admite ningún cambio
- has_clave: string
-
"true"
si el usuario tieneclave
;"false"
en otro caso - timestamps: Timestamps
Example
{
"id": 7783834,
"rut": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
},
"cellphone": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
},
"email": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
},
"company_data": {
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
},
"globalStatus": "string",
"has_clave": "true",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
UserBasicFields: object
Nombre, Sexo, y Fecha de nacimiento de una persona Padre de User
y NewUser
No se usa de manera independiente en la API
- name: string
-
Nombre o nombres de pila
- lastname_1: string
-
Apellido paterno
- lastname_2: string
-
Apellido materno
- gender: string M, F, N
-
Sexo de la persona
- M: Masculino
- F: Femenino
- N: Otro / prefiere no responder
- birthday: string (date)
-
Fecha de nacimiento
Example
{
"name": "Juan Carlos",
"lastname_1": "López",
"lastname_2": "Carrasco",
"gender": "string",
"birthday": "1977-1-14"
}
NewRut: object
Identificador Chileno (Request)
No se usa de manera independiente en la API
- value: integer
-
El rut sin puntos, guión, ni dígito verificador
- serial_number: string
-
Número de serie o número de documento. Éste es un campo write-only, por lo que nunca vendrá como respuesta de la API
- dv: string
-
digito verificador
Example
{
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
}
Rut: object
Identificador Chileno (Response)
No se usa de manera independiente en la API
- status: string no_validado, validado_srcei, validado_tef
-
Estado de validación del rut
- no_validado: el rut no ha sido validado o las validaciones no han sido exitosas
- validado_srcei: el rut fue validado exitosamente contra el registro civil
- validado_tef: la validación más fuerte, ya que el usuario ha realizado un aviso de depósito seguido de una transferencia desde una cuenta correspondiente a su rut
- timestamps: Timestamps
Example
{
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": 14569484,
"serial_number": "A026582309",
"dv": "K"
}
NewEmail: object
Correo Electrónico (Request)
No se usa de manera independiente en la API
- value: string (email)
Example
{
"value": "pepito@gmail.com"
}
Email: object
Correo Electrónico (Response)
No se usa de manera independiente en la API
- status: string no_validado, en_proceso_de_validacion, validado
-
Estado de validación del email
- no_validado: el email no ha sido validado
- en_proceso_de_validacion: se ha enviado al menos un correo de validación, pero el usuario no ha hecho clic en el link
- validado: el usuario demostró tener acceso a la casilla haciendo clic en un link enviado a ésta
- timestamps: Timestamps
Example
{
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "pepito@gmail.com"
}
NewCellPhone: object
Teléfono Celular (Request)
No se usa de manera independiente en la API
- value: string
-
Los 9 números que siguen a '+56'
Example
{
"value": "912345678"
}
CellPhone: object
Teléfono Celular (Response)
No se usa de manera independiente en la API
- status: string no_validado, en_proceso_de_validacion, validado
-
Estado de validación del celular
- no_validado: el celular no ha sido validado
- en_proceso_de_validacion: se ha enviado al menos un sms de validación, pero el usuario no ha usado el código
- validado: el usuario demostró tener acceso al celular usando el código enviado a éste
- timestamps: Timestamps
Example
{
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"value": "912345678"
}
NewCompanyData: object
Datos de la empresa a la que corresponde este Cliente (Request)
No se usa de manera independiente en la API
- razon_social: string
-
Nombre legal de la empresa
- giro: integer
-
ID del giro (ver /params/giros)
Example
{
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
}
CompanyData: object
Datos de la empresa a la que corresponde este Cliente (Response)
No se usa de manera independiente en la API
- status: string no_validado, validado_sii
-
Estado de validación de la razón social
- no_validado: la razón social no ha sido validada
- validado_sii: la razón social fue validada mediante el SII
- timestamps: Timestamps
Example
{
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"razon_social": "Reparaciones Joselito Ltda.",
"giro": 772
}
Timestamps: object
Fecha de creación y de última modificación. Campo read-only. Componente de Address
, User
, Rut
, CellPhone
, Email
, BankAccount
y CompanyData
No se usa de manera independiente en la API
- created_at: string (date-time)
- updated_at: string (date-time)
Example
{
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
NewAddress: object
Dirección física (Request)
- alias: string
-
Nombre que el usuario le da a esta dirección
- line_1: string
-
Lo que se une a región y comuna para determinar el código postal
- line_2: string
-
Información adicional como número de departamento. No afecta el código postal.
- region_id: integer
-
ID de la comuna (ver /params/regions)
- commune_id: integer
-
ID de la comuna (ver /params/communes)
- postal_code: string
-
Identificador de (
address.line_1
,address.commune
,address.region
)
Example
{
"alias": "Casa",
"line_1": "Suecia 1414",
"line_2": "Depto 502",
"region_id": 13,
"commune_id": 230,
"postal_code": 7710787
}
Address: object
Dirección física (Response)
- id: integer
-
Identificador interno. Campo read-only.
- timestamps: Timestamps
Example
{
"id": 7783834,
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
},
"alias": "Casa",
"line_1": "Suecia 1414",
"line_2": "Depto 502",
"region_id": 13,
"commune_id": 230,
"postal_code": 7710787
}
NewBankAccount: object
Cuenta bancaria personal (Request)
- bank_id: integer
-
ID del banco (revisar /params/banks)
- acc_type: string vista, corriente, ahorro
-
Tipo de cuenta
- acc_number: string
-
Número de cuenta sin puntos, guiones, ni ceros a la izquierda
Example
{
"bank_id": 4,
"acc_type": "string",
"acc_number": "string"
}
BankAccount: object
Cuenta bancaria personal (Response)
- id: integer
-
Identificador interno. Campo read-only.
- bank_id: integer
-
ID del banco (revisar /params/banks)
- acc_type: string vista, corriente, ahorro
-
Tipo de cuenta
- acc_number: string
-
Número de cuenta sin puntos, guiones, ni ceros a la izquierda
- status: string no_validada, validada
-
Estado de validación de la cuenta
- no_validada: estado por defecto
- validada: el usuario hizo una aviso de depósito seguido de una transferencia desde esta cuenta
- timestamps: Timestamps
Example
{
"id": 7783834,
"bank_id": 4,
"acc_type": "string",
"acc_number": "string",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
ISO8583Transaction: object
Request y response en formato ISO 8583
- entidad_codigo: string
-
Código de entidad en el procesador
- cliente: object
-
cliente afectado por la transacción
- tarjeta: object
-
tarjeta afectada por la transacción
- mensaje_entrada: object
-
Mensaje que llegó al procesador
- mensaje_respuesta: object
-
Mensaje que respondió el procesador
- raw_iso_8583_request: string
-
Mensaje de entrada ISO 8583 codificado en base64
- raw_iso_8583_response: string
-
Mensaje de respuesta ISO 8583 codificado en base64
Example
{
"entidad_codigo": "9603",
"cliente": {
"centro_alta": "0001",
"cuenta": "000000012345",
"tipo_documento": "RUT",
"numero_documento": "14569484"
},
"tarjeta": {
"pan": "4111111111111111",
"expiracion": "03/22",
"bloqueo_codigo": "010",
"bloqueo_descripcion": "MORA GRAVE",
"saldo": {
"codigo_moneda": "CLP",
"saldo_dispuesto_antes": "1983000",
"saldo_autorizado_antes": "100000",
"saldo_dispuesto_despues": "1882900",
"saldo_autorizado_despues": "200100"
}
},
"mensaje_entrada": {
"codigo_moneda_local": "CLP",
"monto_local": "100100",
"codigo_moneda_origen": "EUR",
"monto_origen": "154",
"comercio_nombre": "AMAZON UK",
"comercio_pais": "GBR",
"timestamp": "2018-01-14T15:27:42.669Z"
},
"mensaje_respuesta": {
"factura_codigo": "TF491",
"factura_descripcion": "COMPRA EN CUOTAS",
"codigo_autorizacion": "100100",
"respuesta_tipo_codigo": "110",
"respuesta_tipo_descripcion": "APROBADO",
"respuesta_codigo_autorizacion": "123456",
"timestamp": "2018-01-14T15:27:42.669Z"
},
"raw_iso_8583_request": "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvS4=",
"raw_iso_8583_response": "vdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c="
}
PrepaidTransaction: object
Transacción realizada con la tarjeta de prepago (Response)
- auth_code: string
-
Identificador del movimiento en el procesador
- amount: integer
-
Monto del movimiento
- desc: string
-
Glosa
Example
{
"auth_code": "88457",
"amount": 45737,
"desc": "Abono sucursal Web"
}
PrepaidCard: object
Tarjeta de prepago Visa o Mastercard (Response)
- id: integer
-
Identificador interno. Campo read-only.
- processor_user_id: string
-
Identificador del cliente en el procesador
- pan: string
-
PAN de la tarjeta
- expiration: string
-
Fecha de expiración de la tarjeta
- status: string activa, bloqueada, expirada
-
Estado de la tarjeta
- activa: permite comprar
- bloqueada: la tarjeta fue bloqueada por el cliente
- expirada: la tarjeta expiró
- timestamps: Timestamps
Example
{
"id": 7783834,
"processor_user_id": "2231-9892-781283049685",
"pan": "123456******1234",
"expiration": "11/22",
"status": "string",
"timestamps": {
"created_at": "2018-01-14T15:27:42.669Z",
"updated_at": "2018-03-02T10:03:12.123Z"
}
}
Param: object
Parámetro básico (Response)
- id: integer
-
identificador del parámetro
- value: string
-
nombre del parámetro
- desc: string
-
descripción del parámetro
Example
{
"id": "integer",
"value": "string",
"desc": "string"
}
ErrorObj: object
Error que devuelve la api ante un HTTP 422
(Response)
- code: integer (int32)
-
Código que representa el error. No será igual al código HTTP.
- message: string
-
Descripción corta del error
- details: ErrorObjDetail
Example
{
"code": 1024,
"message": "El cliente no pasó la validación",
"details": [
{
"code": 227,
"message": "El nombre no puede estar vacío"
}
]
}
ErrorObjDetail: object
Cuando un error está compuesto por una lista de sub-errores, vendrán en este objeto Componente de ErrorObj
No se usa de manera independiente en la API
- code: integer (int32)
-
Código que representa el sub-error
- message: string
-
Descripción del sub-error
Example
{
"code": 227,
"message": "El nombre no puede estar vacío"
}