API Cupones

Encuentra aquí toda la información necesaria para la integración del canjeo de cupones con el TPV de tu local.

Índice

  1. Definición código QR

    1. Parámetros

    2. Contenido

    3. Ejemplo

  2. Definición servicio Web

    1. Comprobación validez de un código de cupón

    2. Confirmación uso de un código de cupón

1. Definición código QR

1.1. Parámetros

Un código QR deberá contener obligatoriamente 2 parámetros:

  • promotion_id: Código promoción único y existente en el sistema de Proveedor de TPV.

Con este identificador, el Proveedor de TPV debe reconocer que promoción tiene que aplicar sobre el ticket actual y mostrar un mensaje de información al empleado si la promoción no se puede aplicar (en el caso que el producto promocionado no esté incluido en el ticket actual).

El formato del promotion_id es un campo numérico de hasta 9 caracteres.

  • voucher_id: Identificador del código de descuento, es un identificador único y estará asociado a un único cliente (en el sistema de Cheerfy).

Este parámetro es el que se va a utilizar desde Proveedor de TPV para:

  1. Saber si el código es válido

  2. Confirmar su uso una vez aplicada la promoción y confirmado el ticket por parte del empleado

El formato del voucher_id es un campo alfanumérico de hasta 32 caracteres de longitud.

1.2. Contenido

El QR code contendrá los 2 parámetros definidos en la sección "Parámetros" sin saltos de línea, ni otros caracteres adicionales. Existe un separador definido como $$$$$ para separar los 2 campos.

El contenido al escanear un código QR debería ser algo parecido a esto (los identificadores de promoción y voucher son un ejemplo):

123456789$$$$$gh9d46cafafd4b6bad604762ab87caa6

1.3. Ejemplo

Adjuntamos un código QR, con el código de ejemplo anterior, por si es necesario hacer una prueba por parte de Proveedor de TPV.

2. Definición servicio WEB

Las llamadas desde el sistema Proveedor de TPV a Cheerfy se harán mediante servicios Web de tipo REST y con contenido definido en formato JSON.

Cada llamada deberá contener una serie de parámetros obligatorios en la cabecera (además de los propios parámetros del servicio que se invoque), estos parámetros de la cabecera indicarán:

  • El contenido tiene formato JSON:

Content-Type: application/json
  • Los datos de autenticación de la llamada:

Authorization: Token replace_by_your_token_code_here

2.1. Comprobación validez de un código de cupón

Una vez el Proveedor de TPV escanea un código de cupón (voucher_id), tiene que confirmar con Cheerfy que ese código es válido, para ello, necesita consultar un servicio Web REST.

La respuesta en el caso de error, por ahora no contendrá datos del estado del cupón (expirado o redimido), ya que Cheerfy muestra esa información en la landing page del código, no obstante, es un dato que podría incluirse en próximas versiones.

  • URL:

https://backend.cheerfy.com/gift-promotion/:id/
  • Método HTTP:

PUT
  • Parámetros de la cabecera:

  • Parámetros de la llamada:

  • Ejemplo llamada:

curl -X PUT https://backend.cheerfy.com/gift-promotion/678d46cafafd4b6bad604762ab87caa6/ 
-d '{
	"action": 1,
	"client_data": {
    	"client_type": "Proveedor de TPV",
    	"client_version": "0.1"
	},
	"promotion_id": "123456789"
    }' 
-H "Content-Type: application/json" 
-H "Authorization: Token 18bb308a19064d869734f8"
  • Parámetros de la respuesta (código 200 OK):

  • Ejemplo respuesta (200 OK):

HTTP/1.1 200 OK 
{
   “user”: “01234567”,
   "public_profile": 
    {
        "id": "01234567".
        "avatar": "http://images.com/my_image.png",
        "name": "Carlos Gomez",
        "first_name": "Carlos",
        "surname": "Gomez",
        "birthdate": 1419992910,
        "language": "es",
    }
}

  • Parámetros respuesta (código 400 Invalid Request):

  • Ejemplo respuesta (400 Invalid data):

HTTP/1.1 400 Bad Request
{
    "error": "Invalid request"
}
  • Parámetros respuesta (código 400 Invalid Request):

  • Ejemplo respuesta (400 Invalid promotion):

HTTP/1.1 400 Bad Request
{
    “errors”: “Invalid promotion”
}
  • Parámetros respuesta (código 400 Invalid promotion):

  • Ejemplo respuesta (400 Expired promotion):

HTTP/1.1 400 Bad Request
{
    "error": "Expired promotion"
}
  • Parámetros respuesta (código 400 Expired promotion):

  • Ejemplo respuesta (400 Used promotion):

HTTP/1.1 400 Bad Request
{
    "error": "Used promotion"
}
  • Parámetros respuesta (código 400 Used promotion):

  • Parámetros respuesta (código 500 Internal Error):

  • Ejemplo respuesta (500 Internal Error):

HTTP/1.1 500 Internal Server Error
{
    "errors": "Internal server error"
}

2.2. Confirmación uso de un código de cupón

Una vez Proveedor de TPV aplica una promoción sobre un ticket válido, tiene que confirmar con Cheerfy que ese código ha sido usado, para ello, necesita consultar un servicio Web REST.

  • En caso de error 500 (recibiendo anteriormente un 200 de la llamada de chequeo), Proveedor de TPV internamente intentará volver a llamar 3 veces (una vez cada 1 segundo), en caso de seguir recibiendo error 500, Proveedor de TPV dará por bueno el cupón, y Cheerfy tendrá que recuperar esa información de uso por otro mecanismo (a definir como).

  • En caso de error 400, el código ha expirado o se ha usado en ese momento, (recibiendo anteriormente un 200 de la llamada de chequeo), Proveedor de TPV dará por bueno el código, asumiendo que se ha podido usar 2 veces o ya expiró.

  • URL:

https://backend.cheerfy.com/gift-promotion/:id/
  • Método HTTP:

PUT
  • Parámetros de la cabecera:

  • Parámetros de la llamada:

  • Ejemplo de llamada:

curl -X PUT https://backend.cheerfy.com/gift-promotion/678d46cafafd4b6bad604762ab87caa6/ 
-d '{
“action”: 2,
"client_data":{"client_type":"Proveedor de TPV", "client_version":"0.1"},
    }' 
-H "Content-Type: application/json" 
-H "Authorization: Token 18bb308a19064d869734f8b"
  • Parámetros de la respuesta (código 200 OK):

  • Ejemplo respuesta (200 OK):

HTTP/1.1 200 OK 
{
   “user”: “01234567”,
   "public_profile": 
    {
        "id": "01234567".
        "avatar": "http://images.com/my_image.png",
        "name": "Carlos Gomez",
        "first_name": "Carlos",
        "surname": "Gomez",
        "birthdate": 1419992910,
        "language": "es",
    }
}
  • Parámetros respuesta (código 400 Invalid Request):

  • Ejemplo respuesta (400 Invalid data):

HTTP/1.1 400 Bad Request
{
    "error": "Invalid request"
}
  • Parámetros respuesta (código 500 Internal Error):

  • Ejemplo respuesta (500 Internal Error):

HTTP/1.1 500 Internal Server Error
{
    "errors": "Internal server error"
}

Última actualización