LogoLogo
API ReferenceChangelog
  • Comenzar
    • Guía de implementación
    • Flujos de trabajo
    • Clientes y personas
    • Migración
    • Glosario Piriod Tech
  • Suscripciones
    • Trabajando con suscripciones
    • Productos
    • Planes
    • Complementos
    • Cupones de descuento
  • Facturación
    • Facturas
    • Notas de crédito
    • Órdenes
  • Ingresos
    • Pagos
    • Tarjetas
    • Pagos externos / offline
    • Transferencias
    • Cuentas por cobrar
  • Reportes
    • Trabajando con los dashboards
    • Colección de métricas
  • Integraciones
    • Procesadores de facturación
      • 🇨🇱Bsale
      • 🇨🇱Defontana
      • 🇨🇱Facturación incorporada
        • Administrar folios
        • Administrar certificado digital
        • Administrador de Compras
        • Importación de facturas históricas
      • 🇲🇽FacturAPI
      • 🇧🇷NFE.io
    • Procesadores de pagos
      • Stripe
      • PayPal
      • 2checkout
      • Webpay (Transbank)
      • OneClick (Transbank)
      • Getnet Click
      • Getnet Checkout
      • Mercado Pago
      • Khipu
      • Pagos por transferencia
    • Banca como servicio
      • Santander Brasil
    • Zapier
  • Componentes
    • Customer Base
    • Signup Forms
    • Links
  • Configuración de la organización
    • Cuenta
    • Branding
    • Facturación
    • Banco
    • Correos electrónicos
    • Importación
      • Clientes
    • Exportación
    • Cuenta de usuario
  • Desarrolladores
    • Webhooks
      • Crear un webhook
      • Registrar un webhook
      • Verificar firma
  • Colecciones
    • Países
    • Estados
    • Monedas
    • Tipos de documentos
  • Condiciones de uso
Con tecnología de GitBook
En esta página
  • Consideraciones
  • Respuesta HTTP y desactivación automática
  • Código de ejemplo

¿Te fue útil?

  1. Desarrolladores
  2. Webhooks

Crear un webhook

Conoce cómo escribir el código para manejar las notificaciones al webhook.

AnteriorWebhooksSiguienteRegistrar un webhook

Última actualización hace 4 años

¿Te fue útil?

Para agregar webhooks a tu integración debes crear un endpoint para exponerlo en internet a través de una URL (por ejemplo, https://myproduct.com/webhooks). Crear un endpoint de webhook en tu servidor no es tan diferente a crear cualquier página en su sitio web o aplicación. Puede estar escrito en Ruby, PHP, NodeJS, Python usando o no un framework de Python como Flask.

Consideraciones

  • En cada activación de un evento, Piriod envía los datos del webhook a su endpoint en formato JSON.

  • Se incluyen dos datos:

    • event corresponde al .

    • object_id corresponde al id del objeto que activó el evento.

Por lo tanto, como mínimo, el endpoint del webhook debe esperar datos a través de una solicitud POST y confirmar la recepción exitosa de esos datos.

Respuesta HTTP y desactivación automática

Tu endpoint debe devolver un código de estado HTTP 2xx a Piriod. Todos los códigos de respuesta fuera de este rango, incluidos los códigos 3xx, le indican a Piriod que la recepción del evento fue fallida. Si tu endpoint retorna el mismo código de estado fallido repetido en las 3 últimas llamadas el webhook se deshabilitará automáticamente, lo que implica que debas volver a habilitar el webhook manualmente desde Piriod. Debido a que es muy importante que la notificación de webhook se reciba exitosamente, tu endpoint debe devolver un código de estado HTTP 2xx antes de que cualquier lógica de negocio compleja que pueda causar un error o la finalización del tiempo de espera que es de 6 segundos.

Código de ejemplo

import requests
from flask import Flask

app = Flask(__name__)

PIRIOD_API = 'https://api.piriod.com'

credentials = {
    'Authorization': f'Token {your_piriod_token}',
    'x-simple-workspace': 'your_piriod_organization_id'
}

# using Flask
@app.route('/webhooks', methods=['POST'])
def webhooks():
    payload = request.json
    if not payload:
        abort(400)
    if payload.get('event') == 'payment.created':
        payment = _get_payment(payload.get('id'))
        ##
        # do anything with your new payment
        ##
    return True

def _get_payment(id):
    r = requests.get(f'{PIRIOD_API}/payments/{id}/', headers=credentials)
    if not r.status_code == requests.codes.ok:
        abort(r.status_code)
    return r.json()

if __name__ == '__main__':
    app.run(debug=True)
nombre del evento