Napse CRM Cash - Guía de Integración




CONTENIDO


Servicio de autenticación para obtener el token.

Servicio de seguridad que permite a un cliente ser autorizado para utilizar el restos de los servicios del sistema.

Este servicio requiere que se brinden las claves de acceso (un id y un secret), que serán proporcionados en forma privada.

Retornará un token, el cual es requerido al invocar los servicios de negocio.

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/auth/login

POST - REQUEST

BODY:

  • clientId - código de cliente proporcionado
  • clientSecret - código secreto de clave proporcionado.

EJEMPLO:

{
    "clientId":"vcn5keiiw0zf",
    "clientSecret":"g23n2tlt3fmap0ymaosv"
}

RESPONSE OK

ElementoTipoDetalle
tokenStringToken de seguridad devuelto por el sistema.
expiresInNumber

Tiempo de expiración del token medido en unidad de expiración.

expUnit

StringUnidad de expiración.

Ejemplo:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNWU5NDczZGU4YTk2NDI5MzlkMzVkYzhiIn0sImlhdCI6MTU5NTk0NzkyOSwiZXhwIjoxNTk1OTUxNTI5fQ.yrMsmYgyPtii59moYgujKE96ZeFNhHuZnwt3OeE59fM",
  "expiresIn": 3600000,
  "expUnit": "milliseconds"
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  • 0: operación exitosa.
  • 2002: clientId o clientSecret inválidos, inhabilitados o vencidos.
  • 9999: error desconocido, error de la aplicación.
messageStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""User not found"
}

Servicio: Creación de un cupón

Este servicio se utiliza para crear un cupón en PROMO basado en la identificación del cliente.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo:

[post] http://[dirección-ip]:[puerto]/coupon/create

PRE-REQUISITO

Para el uso del servicio es necesario informar en el header de la petición el token obtenido a través del servicio "login" con el parámetro x-access-token 

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

  • couponType - codigo del tipo de cupón existente en PROMO.
  • customerCode - Código de identificación del cliente, normalmente es el numero de documento, pero podría ser que se identifique de otras formas.
  • couponAmount - Si el tipo de cupón es de tipo calculado (con un monto asociado) se deberá indicar el monto. Si, en caso de no corresponder a un cupón calculado, informar 0.
  • couponCode - OPCIONAL. Permite definir externamente el código de identificación del cupón. Si no es informado, creará uno de acuerdo a reglas definidas utilizando el número de identificación del cliente.


EJEMPLO:

{
    "couponType": "0002",
    "customerCode": "24314537",
    "couponAmount": 0,
    "couponCode": ""
}

RESPONSE OK

ElementoTipoDetalle
ackNumber

Valor "0"
Operación exitosa.

messageObjeto JSONCódigo de cupón creado.


Ejemplo:

{
    "ack"0,
    "message":  "000224314537000001"
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber
  1. 2002: token inválido, no existente o expirado.
  2. 2003: el tipo de cupón no existe.
  3. 2004: el código de identificación del cliente no existe.
  4. 2005: el tipo de cupón es calculado y no se informa monto.
  5. 9999: error desconocido, error de la aplicación.
messageStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Servicio: Cambio de cliente asignado a un cupón

Este servicio permite cambiar la titularidad de un cupón, hacia un nuevo cliente

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/coupon/change

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

  • couponCode- Código de cupón (debe existir en PROMO).
  • couponType - Código de identificación del cupón.
  • newCustomerCode - Código de cliente al cual cambiará el cupón.


EJEMPLO:

{
    "couponCode": "000224314537000001",
    "couponType": "0002",
    "newCustomerCode": "24314537"
}

RESPONSE OK

ElementoTipoDetalle
ackNumber

0: operación exitosa.

messageStringValor "OK"

Ejemplo:

{
    "ack"0,
    "message""Ok",
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
  2. 2103: el código de cupón no existe.
  3. 2104: el código de cliente por el cual se desea cambiar no existe.
  4. 9999: error desconocido, error de la aplicación.
messageStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Jornada de Compra - Cashback - Diagrama Conceptual

Diagrama de secuencia técnico

DiagramaSecuenciaPromoPlugin

Paso a paso del uso de servicios: 

  1. El cliente realiza una compra
  2. El punto de venta o pinpad, registra el celular del cliente, para ello, invoca el servicio de registro de teléfono móvil
  3. El punto de venta, valida el token informado con el cliente, invocando el servicio de validación de token.
  4. Al finalizar la venta, se envia un ticket simplificado al servicio de envío de ticket. 
    1. Aqui, podemos utilizar toda la potencia de PROMO para definir las reglas de emisión de cupones, puntos y otros elementos de fidelidad.
    2. Incluso se pueden contemplar otras acciones como el envío de encuestas.
  5. Se envía al cliente por SMS el cupón ganado.
  6. Al restar X días para el vencimiento, se le recuerda al cliente que el cupón se encuentra próximo a vencer.
  7. El cliente, concurre a la tienda a canjear su beneficio y existen 2 opciones: 
    1. Se invoca al servicio que indica el cupón que mas descuento le da al cliente
    2. Se valida un cupón determinado, ingresando un número. Para ello, se invoca al servicio de validación de cupón.


Beneficios por sobre otras soluciones: 

  1. Integración muy sencilla, con mínimo esfuerzo.
  2. Puede utilizarse toda la capacidad de PROMO, solución lider del mercado para definir reglas de otorgamiento del beneficio.
  3. Pueden ejecutarse programas de cashback, segmentos por compras / objetivos, referencia, etc.
  4. El cliente no debe presentar obligatoriamente su voucher, PROMO puede decidir cual es su mejor beneficio.

Servicio: Registro de teléfono móvil 

Este servicio permite registrar el teléfono móvil de un cliente para validarlo contra un token.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/customer/cellphone

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

  • identification - Codigo de identificador del cliente.
  • cellphone - Número de celular, con formato PAIS+AREA+CELULAR . Ejemplo: +5491136637487.

EJEMPLO:

{
    "identification": "24314537",
    "cellphone": "+5491136637487"
}

RESPONSE OK

ElementoTipoDetalle
ackNumber
  1. 0: operación exitosa.
messageStringValor "OK"

Ejemplo:

{
    "ack"0,
    "message""Ok",
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
  2. 3102: Debe informar identificatión y celular.
  3. 9999: error desconocido, error de la aplicación.
messageStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Servicio: Validación de token enviado como validación del número de teléfono 

Este servicio permite validar un token enviado hacia un teléfono móvil, para validar su autencidad.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/customer/token

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

  • cellphone - Número de celular, con formato PAIS+AREA+CELULAR . Ejemplo: +5491136637487.
  • token: Número de 5 cifras informado por el celular.

Ejemplo:

{
    "cellphone": "+5491136637487",
    "token": "89785"
}

RESPONSE OK

ElementoTipoDetalle
ackNumber
  1. 0: operación exitosa.
messageStringValor "OK"

Ejemplo:

{
    "ack"0,
    "message""Ok",
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
  2. 4102: Debe informar celular y token.
  3. 4103: El celular enviado no se registró previamente.
  4. 4104: El token informado es inválido.
  5. 9999: error desconocido, error de la aplicación.
messageStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Servicio: Envío de Ticket 

Este servicio permite enviar un ticket, luego de la venta, lo que permitirá ejecutar acciones tales como envío de cupones, encuestas, y otro tipo de estrategias configuradas.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/sales/ticket

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

CAMPOS

  • order_id - un identificador único de la transacción.
  • delivery_date - fecha de la orden o del envío en caso de ser un canal virtual.
  • client - Información del consumidor.
    • email - Email del cliente.
    • first_name - Primer nombre
    • last_name - Apellido
    • phone_number - Teléfono con formato universal PAIS+AREA+TELEFONO
  • items - Lista de productos
    • id - Identificador único del producto en la tienda.
    • price - Precio unitario del producto.
    • qty - Cantidad llevada
    • name - Nombre del producto.

BODY

{
    "order_id": "123ABC",
    "delivery_date": "21/01/2021",
    "client": {
        "email": "[email protected]",
        "first_name": "Martin",
        "last_name": "Malievac",
        "phone_number": "+5491136637487"
    },
    "items": [
        {
            "id": "15493Abc",
            "price": 100.00,
            "qty": 2.0,
            "name": "Coca Cola"
        },
        {
            "id": "15493Cde",
            "price": 50.00,
            "qty": 1.0,
            "name": "Pepsi"
        }
    ]
}

RESPONSE OK

ElementoTipoDetalle
ackNumber

0: operación exitosa.

messageStringValor "OK"

Ejemplo:

{
    "ack"0,
    "message""Ok",
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
messageStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Servicio: Validación de cupones asociados al cliente. 

Este servicio permite obtener los cupones válidos del cliente, con su importe asociado y fecha de vencimiento, ordenados por fecha de vencimiento mas cercana.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/customer/coupons

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

ElementoDescripciónTipo de datoRequerido
identificationCodigo de identificador del clienteString Si

Ejemplo:

{
    "identification": "24314537"
}

RESPONSE OK

ElementoTipoDetalle
ackNumber

0: operación exitosa.

result: Array

Detalle de cupones asociados al cliente.

messageStringDetalle de cupones con su vencimiento e importe.

Ejemplo:

{
    "ack": 0,
    "result": [
        {
            "id": "123456789",

            "type" : 22222,
            "amount": 1000,
            "expiration_date": "23/12/2022"
        },
        {
            "id": "88888888",
            "amount": 2000,

            "type" : 22222,
            "expiration_date": "23/12/2023"
        }
    ],
    "message": "OK"
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
  2. 3102: Debe informar identificatión y celular.
  3. 9999: error desconocido, error de la aplicación.
resultStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Servicio: Validación de un cupón. 

Este servicio permite obtener sobre un cupón informado, la validez del mismo.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/coupon/validate

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

ElementoDescripciónTipo de datoRequerido
couponCodeCódigo del cupónString Si

Ejemplo:

{
    "couponCode": "0024314537"

}

RESPONSE OK

ElementoTipoDetalle
ackNumber

0: operación exitosa.

result: Object

Detalle del cupón

messageStringDetalle de cupones con su vencimiento e importe.

Ejemplo:

{
    "ack": 0,
    "result": {
                "id": "0024314537",
                "amount": 1000,
                "valid": true,
                "expiration_date": "23/12/2023"
    },
    "message": "OK"
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
  2. 3102: Debe informar identificatión y celular.
  3. 9999: error desconocido, error de la aplicación.
resultStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Servicio: Acreditar puntos en tarjeta fidelidad.

Este servicio permite actualizar los puntos de una tarjeta de fidelidad.

Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "login".

Es un método REST basado en el formato JSON. Ejemplo: 

[post] http://[dirección-ip]:[puerto]/loyalty-card/points

POST - REQUEST

header

ElementoValor
x-access-token
Token obtenido a través del servicio "Authenticate"

Ejemplo:

x-access-token:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE

BODY

ElementoDescripciónTipo de datoRequerido
codeNúmero de tarjetaString Si
typeCódigo del tipo de tarjetaStringSi
amountValor a quitar o agregarNumericoSi
companyCodeCódigo de la compañiaStringSi

Ejemplo:

{
    "code": "0004000200112233",

    "type":"001",

    "amount": 125,

    "companyCode":"napse"
}

RESPONSE OK

ElementoTipoDetalle
ackNumber

0: operación exitosa.

result: Object

Detalle del cupón

messageStringDetalle de cupones con su vencimiento e importe.

Ejemplo:

{
    "ack": 0,
    "result": {
                "id": "0024314537",
            
    },
    "message": "OK"
}

RESPONSE ERROR

ElementoTipoDetalle
ackNumber

Código de error. Siendo los valores posibles:

  1. 2002: token inválido, no existente o expirado.
  2. 4001: No se informo la tarjeta
  3. 4002: No se informo el tipo de tarjeta
  4. 4003: No se informo el amount
  5. 9999: error desconocido, error de la aplicación.
resultStringDetalle del tipo del error.

Ejemplo:

{
    "ack"2002,
    "message""Token inválido, no existente o expirado"
}

Tareas

  1. Flujo de registro de celular y validación de token.
  2. Flujo de acumulación de cashback.
  3. Flujo de alertas configurables.
  4. Informes
  5. Setup simplificado.
  6. Plantilla para definición de programas de cashback en forma simple.
  7. Integración con soluciones de envío de SMS.
  • Sem rótulos