API Tarjeta de Fidelización

Encuentra aquí toda la información necesaria para la integración de tu tarjeta de fidelización con el TPV de tu local.

Índice

  1. Definición Tarjeta de Fidelización

    1. Parámetros

    2. Contenido

    3. Ejemplo

  2. Definición servicio Web

    1. Asignación de un ticket a un usuario en Cheerfy

1. Definición Tarjeta de Fidelización

1.1. Parámetros

Una tarjeta de fidelización deberá contener obligatoriamente 1 parámetro:

user_id : Identificador único que identifica al cliente (en Cheerfy).

El formato del user_id es un campo alfanumérico con un número variable de caracteres.

1.2. Contenido

El QR code contendrá el parámetro definido en la sección "Parámetros" sin saltos de línea.

El contenido al escanear un código QR (o de barras) de una tarjeta de fidelización debería ser algo parecido a esto (es un mero ejemplo):

7a49cvbg2740mnr3

1.3. Ejemplo

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

2. Definición servicios Web

Las llamadas desde el 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:

1. El contenido tiene formato JSON

Content-Type: application/json

2. Los datos de autenticación de la llamada

Authorization: Token replace_by_your_token_code_here

2.1. Asignación de un ticket a un usuario en Cheerfy

Una vez el TPV escanea un código de tarjeta de fidelización (user_id), se lo tiene que comunicar a Cheerfy conjuntamente con el ticket de su transacción. Y, para ello, necesita llamar a un servicio Web REST.

La respuesta en el caso de error, por ahora no contendrá datos del estado de la tarjeta de fidelización (ej. cancelada), ya que Cheerfy muestra esa información en la tarjeta de fidelización, no obstante, es un dato que podría incluirse en próximas versiones.

  • URL

https://backend.cheerfy.com/ticket/
  • Método HTTP

POST
  • Parámetros de la cabecera:

  • Parámetros de la llamada:

  • Ejemplo llamada:

curl -X POST https://backendbeta.cheerfy.com/ticket/ 
-d 
'
{
  "id":"12345ABCDE",
  "ticket_number":12345,
  "rectification_id":"12345AAAAA",
  "created_at":1419992910,
  "channel":1,
  "status":1,
  "name":"lunch meal",
  "additional_data":"here you can place any info you want",
  "summary":{
    "subtotal":1000,
    "service_fee":100,
    "other_fees":0,
    "taxes":110,
    "tip":200,
    "total":1410,
    "due":1410,
    "discount_amount":100,
    "currency":"EUR"
  },
  "delivery":{
    "pick_up_address":"Avenida Ciudad de Barcelona 5, 28007 Madrid",
    "pick_up_at":1419992910,
    "drop_off_address":"Avenida Canillejas a Vicálvaro 15, 28022 Madrid",
    "drop_off_address_latitude":40.4625427,
    "drop_off_address_longitude":-3.6886626,
    "drop_off_at":1419993910,
    "drop_off_notes":"Block 5, 4th floor. Ask Tommy",
    "contact_phone_number":"+33999999888"
  },
  "service":{
    "service_type":1,
    "table_id":"Table 1",
    "ready_at":1419992910,
    "now":true
  },
  "payments":[
    {
      "type":1,
      "card_details":"1234*****5678****",
      "amount":1410,
      "payment_id":"987654321ABCD",
      "summary":"processed with my epayment platform",
      "user":{
        "id":"786GHJKL323",
        "external_id":"external_23434-434kjkdrf",
        "email":"user@email.com",
        "phone":"+33999999888",
        "name":"John",
        "surname":"Smith",
        "address":"Fifth Avenue 123, 34A, New York",
        "city":"Madrid",
        "zipcode":"28006",
        "country":"ES",
        "language":"es",
        "gender":1
      }
    },
    {
      "type":2,
      "card_details":"1234*****5678****",
      "amount":1410,
      "payment_id":"987654321ABCD",
      "summary":"processed with my epayment platform",
      "user":{
        "id":"786GHJKL323",
        "external_id":"external_23434-434kjkdrf",
        "email":"user@email.com",
        "phone":"+33999999888",
        "name":"John",
        "surname":"Smith",
        "address":"Fifth Avenue 123, 34A, New York",
        "city":"Madrid",
        "zipcode":"28006",
        "country":"ES",
        "language":"es",
        "gender":1
      }
    }
  ],
  "items":[
    {
      "item_id":"1",
      "ref_item_id":null,
      "sku_code":"DRINK_001_LIGHT",
      "name":"Pepsi Light 33cl",
      "voucher_code":"123456abcd",
      "quantity":2,
      "subtotal":400,
      "taxes":80,
      "total":480,
      "modifiers":[
        {
          "sku_code":"MODIFIER_ID_001",
          "name":"Extra ice",
          "quantity":1,
          "subtotal":10,
          "taxes":1,
          "total":11
        }
      ]
    },
    {
      "item_id":"2",
      "ref_item_id":null,
      "sku_code":"SANDWICH_047_SALT",
      "name":"Bacon and cheese sandwich",
      "voucher_code":null,
      "quantity":1,
      "subtotal":200,
      "taxes":20,
      "total":220
    }
  ],
  "combos":[
    {
      "item_id":"1",
      "ref_item_id":null,
      "sku_code":"COMBO_001",
      "name":"Daily menu",
      "voucher_code":"123456abcd",
      "quantity":1,
      "subtotal":4000,
      "taxes":800,
      "total":4800,
      "modifiers":[
        {
          "sku_code":"MODIFIER_ID_001",
          "name":"Extra ice",
          "quantity":1,
          "subtotal":10,
          "taxes":1,
          "total":11
        }
      ],
      "items":[
        {
          "item_id":"1",
          "ref_item_id":null,
          "sku_code":"DRINK_001_LIGHT",
          "name":"Pepsi Light 33cl",
          "voucher_code":"123456abcd",
          "quantity":2,
          "subtotal":400,
          "taxes":80,
          "total":480,
          "modifiers":[
            {
              "sku_code":"MODIFIER_ID_001",
              "name":"Extra ice",
              "quantity":1,
              "subtotal":10,
              "taxes":1,
              "total":11
            }
          ]
        },
        {
          "item_id":"2",
          "ref_item_id":null,
          "sku_code":"SANDWICH_047_SALT",
          "name":"Bacon and cheese sandwich",
          "voucher_code":null,
          "quantity":1,
          "subtotal":200,
          "taxes":20,
          "total":220
        }
      ]
    }
  ],
  "ticket_promotion_list":[
    {
      "generated_id":"u2l0DJUs1",
      "code":"50BOGOFF",
      "name":"50% Bogoff",
      "value":"50",
      "promotion_type":2
    }
  ],
  "user":{
    "id":"786GHJKL323",
    "external_id":"external_23434-434kjkdrf",
    "email":"user@email.com",
    "phone":"+33999999888",
    "name":"John",
    "surname":"Smith",
    "address":"Fifth Avenue 123, 34A, New York",
    "city":"Madrid",
    "zipcode":"28006",
    "country":"ES",
    "language":"es",
    "gender":1
  },
  "scope":{
    "organizations":[
      
    ],
    "locations":[
      6
    ],
    "areas":[
      
    ]
  },
  "client_data":{
    "client_type":"TPV-001",
    "client_version":"0.1-beta"
  }
}
' 
-H "Content-Type: application/json" 
-H "Authorization: Token 18bb308a19064d869734f8be3c84"
  • Parámetros de la respuesta (código 200 OK):

  • Ejemplo respuesta (200 OK):

HTTP/1.1 200 OK 
{
  "ticket":{
	"id":"12345ABCDE",
	"ticket_number":12345,
	"ticket_id":"1454sdsd45787855sdffbhn",
	"ticket_datetime":1419992910,
	"created":1419992910,
	"channel":1,
	"status":1,
	"name":"lunch meal",
	"notes":"here you can place any info you want",
	"ticket_service":{
  	"service_type":1,
  	"table_id":"Table 1",
  	"ready_at":1419992910,
  	"now":true
	},
	"ticket_delivery":{
  	"pick_up_name":"Restaurante SinBarril",
  	"pick_up_address":"Avenida Ciudad de Barcelona 5, 28007 Madrid",
  	"pick_up_phone":"+3491254578",
  	"pick_up_at":1419992910,
  	"drop_off_address":"Avenida Canillejas a Vicálvaro 15, 28022 Madrid",
  	"drop_off_address_latitude":40.4625427,
  	"drop_off_address_longitude":-3.6886626,
  	"drop_off_at":1419993910,
  	"drop_off_notes":"Block 5, 4th floor. Ask Tommy"
	},
	"ticket_summary":{
  	"subtotal":1000,
  	"service_fee":100,
  	"other_fees":0,
  	"taxes":110,
  	"tip":200,
  	"total":1410,
  	"due":1410,
  	"discount_amount":100,
  	"currency":"EUR"
	},
	"ticket_payment_list":[
  	{
    	"type":1,
    	"card_details":"1234*****5678****",
    	"amount":1410,
    	"payment_id":"987654321ABCD",
    	"summary":"processed with my epayment platform",
    	"user":{
      	"id":"786GHJKL323",
      	"external_id":"external_23434-434kjkdrf",
      	"email":"user@email.com",
      	"phone":"+33999999888",
      	"name":"John",
      	"surname":"Smith",
      	"address":"Fifth Avenue 123, 34A, New York",
      	"city":"Madrid",
      	"zipcode":"28006",
      	"country":"ES",
      	"language":"es",
      	"gender":1
    	}
  	},
  	{
    	"type":2,
    	"card_details":"1234*****5678****",
    	"amount":1410,
    	"payment_id":"987654321ABCD",
    	"summary":"processed with my epayment platform",
    	"user":{
      	"id":"786GHJKL323",
      	"external_id":"external_23434-434kjkdrf",
      	"email":"user@email.com",
      	"phone":"+33999999888",
      	"name":"John",
      	"surname":"Smith",
      	"address":"Fifth Avenue 123, 34A, New York",
      	"city":"Madrid",
      	"zipcode":"28006",
      	"country":"ES",
      	"language":"es",
      	"gender":1
    	}
  	}
	],
	"ticket_item_list":[
  	{
    	"item_id":"1",
    	"ref_item_id":null,
    	"sku_code":"DRINK_001_LIGHT",
    	"name":"Pepsi Light 33cl",
    	"voucher_code":"123456abcd",
    	"quantity":2,
    	"subtotal":400,
    	"taxes":80,
    	"total":480,
    	"modifiers":[
      	{
        	"sku_code":"MODIFIER_ID_001",
        	"name":"Extra ice",
        	"quantity":1,
        	"subtotal":10,
        	"taxes":1,
        	"total":11
      	}
    	]
  	},
  	{
    	"item_id":"2",
    	"ref_item_id":null,
    	"sku_code":"SANDWICH_047_SALT",
    	"name":"Bacon and cheese sandwich",
    	"voucher_code":null,
    	"quantity":1,
    	"subtotal":200,
    	"taxes":20,
    	"total":220
  	}
	],
	"ticket_combo_list":[
  	{
    	"item_id":"1",
    	"ref_item_id":null,
    	"sku_code":"COMBO_001",
    	"name":"Daily menu",
    	"voucher_code":"123456abcd",
    	"quantity":1,
    	"subtotal":4000,
    	"taxes":800,
    	"total":4800,
    	"modifiers":[
      	{
        	"sku_code":"MODIFIER_ID_001",
        	"name":"Extra ice",
        	"quantity":1,
        	"subtotal":10,
        	"taxes":1,
        	"total":11
      	}
    	],
    	"items":[
      	{
        	"item_id":"1",
        	"ref_item_id":null,
        	"sku_code":"DRINK_001_LIGHT",
        	"name":"Pepsi Light 33cl",
        	"voucher_code":"123456abcd",
        	"quantity":2,
        	"subtotal":400,
        	"taxes":80,
        	"total":480,
        	"modifiers":[
          	{
            	"sku_code":"MODIFIER_ID_001",
            	"name":"Extra ice",
            	"quantity":1,
            	"subtotal":10,
            	"taxes":1,
            	"total":11
          	}
        	]
      	},
      	{
        	"item_id":"2",
        	"ref_item_id":null,
        	"sku_code":"SANDWICH_047_SALT",
        	"name":"Bacon and cheese sandwich",
        	"voucher_code":null,
        	"quantity":1,
        	"subtotal":200,
        	"taxes":20,
        	"total":220
      	}
    	]
  	}
	],
	"ticket_promotion_list":[
  	{
    	"generated_id":"u2l0DJUs1",
    	"code":"50BOGOFF",
    	"name":"50% Bogoff",
    	"value":"50",
    	"promotion_type":2
  	}
	]
  },
  "scope":{
	"organizations":[
 	 
	],
	"locations":[
  	6
	],
	"areas":[
 	 
	],
	"additional_data":{
  	"location":[
    	{
      	"id":6,
      	"name":"Charles rue"
    	}
  	]
	}
  }
}
  • 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"
}
  • En caso de error 500, el TPV internamente intentará volver a llamar 3 veces (una vez cada 1 segundo), en caso de seguir recibiendo error 500, el TPV dejará de intentarlo.

  • En caso de error 400, la tarjeta está cancelada o el usuario dado de baja, Cheerfy no realizará ninguna asignación del ticket al usuario en cuestión.

Última actualización