¿Cómo creo un webhook?
El equipo de Bsale ha puesto a disposición de la comunidad de desarrolladores un conjunto de notificaciones o Webhooks, la cual permite que puedas estar informado cuando en Bsale se ejecuten determinadas acciones, como la creación de un documento, la creación de un producto, la actualización del stock etc.. Esto evitará que tengas que estar preguntando cada cierto tiempo si algo ha cambiado en Bsale. Estas notificaciones o "callback", son informadas mediante webhooks o también conocidos como "user-defined HTTP callbacks", a mediante un POST a una URL que configures para ello. De esta manera por ejemplo cada vez que en Bsale se cree un nuevo documento, te avisaremos mediante una llamada POST a la URL que definiste, con una estructura JSON que contiene la información que te permitirá obtener el documento creado.
Si te has preguntado cómo implementar una url para almacenar los requests que Bsale puede notificar, te muestra de forma muy simple, un ejemplo en PHP
En un archivo .php, copia lo siguiente:
En donde:
- php: // input : es un flujo de sólo lectura que permite leer datos del cuerpo solicitado.
- file_get_contents () : esta función en PHP se usa para leer un archivo en un string.
- print_r : Para imprimir información, que la capturamos para depositarla en un archivo anexo .log
- file_put_contents : Función que nos sirve para tomar los datos y escribirlos en 'requests.log'
Supongamos que el archivo se encuentra en una ruta como: https://www.tusitio.com/webhooks.php, en donde 'webhooks.php' será el encargado de leer las peticiones que Bsale te notifique. Posteriormente puedes "hacer algo" con la información que queda almacenada.
Si deseas usar webhooks en una instancia Bsale, sólo debes enviarnos la url que recibirá peticiones y el rut de empresa al mail ayuda@bsale.app.
Cada estructura JSON contendrá al menos:
cpnID => Identificador único de la instancia en la cual se generó la acción (La empresa cliente)
resource => Endpoint donde podrás obtener el recurso modificado.
resourceID => Identificador único del recurso modificado.
Topic => Información respecto del tipo de recurso modificado (Documentos, Productos, variantes, stock y precios)
acction => Acción ejecutada sobre el recurso. para ello se utiliza RESTful como estándar (POST, PUT o DELETE)
send => fecha en formato de entero (Unix Time)
Algunas notificaciones contendrán estructuras JSON con campos extras com por ejemplo "officeId", en el caso de creación de documentos.
Se solicita que la notificación POS sea sobre SSL.
Se usan sustantivos, no verbos.
Se utilizan dos urls base por recurso "/clients.json", "clients/1.json"
Siempre se usa el nombre del recurso en plural.
Se envía la url del recurso.
Manejo de versiones en la url.
Las fechas se trabaja como enteros, por ejemplo 1388545200 corresponde a la fecha 2014-01-01, la conversión es realizada utilizando el [Tiempo Unix].
Webhooks disponibles
Notificación RCOF
Notificación documentos de compra
