Cómo importar datos de ventas de forma automatizada
Aprenda a autenticarse en la API de importación y luego aprenda a enviar información automatizada.
El end point de Importación
El API importación de tbRetail tiene 2 end points, uno para realizar las llamadas de test y otro para realizar las llamadas de producción:
End Point de test: https://pipelinetest.tbretail.com/data/import/sales
End Point de producción: https://pipeline.tbretail.com/data/import/sales
Autenticarse
Para comunicarse con el servidor, necesitará un token OAuth con los alcances (scopes) correctos.
Obtener un token de usuario: Este token de acceso estará asociado al usuario y permitirá obtener los datos que el usuario tiene acceso en la aplicación.
Obtención del token de acceso temporal: Una vez obtenido en el paso 1 un token de usuario, se podrá realizar una petición al servidor para obtener un token temporal de acceso. Este token temporal tiene una validez de 24 horas. Transcurrido dicho periodo deberá solicitarse un nuevo token temporal para poder solicitar los datos. La url de autentificación en la fase de pruebas:
Acceso TEST:: Haga clic aquí para obtener token
Los valores de las variables para realizar la petición de datos son las siguientes:
Variables | Valor |
---|---|
client_id para test | 14fuos4vd8u14utepgl46fhjob |
client_id para producción | 63h4jubc7qvrg9f65c36vjp3bq |
redirect_uri en test | |
redirect_uri en producción | |
refresh_token | Token obtenido en el paso 1 |
Código de ejemplo en python con la autentificación
import requests
import json
import datetime
refresh_token = "<inserte token obtenido en paso 1>"
client_id = '<inserte client id>'
redirect_uri = '<inserte redirect uri'
# realizar la peticion de autenticacion para obtener el token temporal de acceso
token_url = 'https://auth.tbretail.com/oauth2/token'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'grant_type': 'refresh_token', 'client_id': client_id, 'redirect_uri': redirect_uri, 'refresh_token': refresh_token}
token_response = requests.post(token_url, data=data, verify=False, allow_redirects=False, headers=headers)
access_token = token_response.json()['access_token']
Esta petición devolverá el access_token que podrá ser usado para realizar las peticiones al servidor.
Petición para enviar el fichero csv al servidor
La petición se debe realizar haciendo un POST al end point de pruebas o de producción.
Los campos que debe contener el fichero separados por coma “,” son los siguientes:
Campo | Descripción |
---|---|
Sensor | Deberá contener la MacAdress del sensor al que se le quieren asignar los datos. No es Case Sensitive. |
Zone | Zona del sensor al que se le quieren asignar los datos. Debe coincidir con una de las zonas contenidas en el sensor al que se hace referencia. |
Metric | Debe contener fijo |
Base | Importe de la venta sin IVA. |
Taxes | Importe de IVA d ela compra |
Total | Base + Taxes |
Products | Número de productos dentro del/los tickets |
Tickets | Número de tickets que se incluyen en el envío de la línea |
Currency | Moneda en la que vienen los importes en formato ISO: EUR, USD, PEM, GBP, NOK, NZD, ARS, CLF, COP, MXN, SVC, etc. Si se desconoce ver tabla en el siguiente link: https://es.wikipedia.org/wiki/ISO_4217 |
Date | Fecha a la que hace referencia el conteo en formato AAAA-MM-DD HH:MM:SS |
El fichero con la información anterior debe contener el siguiente formato:
sensor,zone,metric,base,taxes,total,products,tickets,currency,date
AA:BB:CC:DD:EE:FF,TPV1234,sales,1000,210,1210,5,1,EUR,2021-01-01 10:00:00
AA:BB:CC:DD:EE:FF,TPV0098,sales,1000,170,1170,5,1,PEN,2021-01-01 10:00:00
Seguidamente les presentamos un código de Ejemplo Python para importar el fichero:
# obtenido el token temporal (access_token) podremos realizar llamadas al api
api_url = 'https://pipeline.tbretail.com/data/import/sales'
headers = {
'Authorization': access_token
}
# abrir el fichero datos y leerlo
data = open('datos.csv','rb').read().decode('utf-8')
response = requests.post(api_url, data=data.encode('utf-8'), headers=headers)
print (response)
Puede enviar los tickets en tiempo real o peridificados durante el día como le interese. También puede enviar ticket a ticket o bien agrupar los tickets en una línea cuando realiza el envío. Recuerde que si envía las ventas desglosadas como mínimo por horas podrá obtener el ratio de conversión también para ese período de tiempo.
Ejemplo de petición con POSTMAN
Primero informar el content-type
El segundo paso informar los datos del body
Con esto obtendremos el access_token para realizar el envío de los datos y podremos realizar la petición al servidor para enviar los datos.
Ejemplo del json recibido:
{
"id_token": "eyJraWQiOiJiVVwvRm9OZzA0bXVsSF.....",
"access_token": "eyJraWQiOiJcL1ZpYmpJMGs5UUFkWFdMRDRjQktFNGs1MEdoeFJ.....",
"expires_in": 86400,
"token_type": "Bearer"
}
Realizaremos la petiación al servidor, primero informando la autorización con el token obtenido
y en el body informaremos los datos a enviar
Se puede descargar este ejemplo de postamn con la siguiente Colección: