Documentation Index
Fetch the complete documentation index at: https://piriod-d406ac55.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Piriod firma cada solicitud de webhook que envía, lo que permite confirmar que la solicitud es auténtica y no ha sido falsificada por un tercero. La verificación es opcional, pero se recomienda encarecidamente para los endpoints de producción.
Obtén tu secreto de webhook
Cada webhook registrado tiene su propio secreto único.
Abre tu webhook
Ve a Configuración de la organización → Webhooks y haz clic en el webhook que deseas verificar.
Copia el secreto
Busca la sección Secreto y haz clic en Copiar secreto. Guarda este valor de forma segura en tu servidor; nunca lo expongas en el código del cliente.
Cada webhook tiene una clave secreta diferente. Si utilizas varios webhooks, recupera y almacena una clave secreta para cada uno por separado.
Verificar la firma
Piriod incluye la firma en el encabezado HTTP x-piriod-signature de cada solicitud. Para verificarla, calcula un HMAC-SHA256 sobre los valores del payload de forma concatenada utilizando tu secreto de webhook y, a continuación, compara el resultado con el valor del encabezado.
import hashlib
import hmac
from flask import Flask, request, abort
app = Flask(__name__)
WH_SECRET = 'whsecret_g9En7rfNBZBYFr968pLqPDQ6O302Q1DAI3TXi3aky1eAcUqgJg3EjBP'
@app.route('/webhooks', methods=['POST'])
def webhooks():
payload = request.json
piriod_signature = request.headers.get('x-piriod-signature')
if not _signature_is_valid(payload, piriod_signature):
abort(400)
if not payload:
abort(400)
if payload.get('event') == 'payment.created':
# handle the payment.created event
pass
return '', 200
def _signature_is_valid(payload, piriod_signature):
signature = hmac.new(
WH_SECRET.encode(),
msg=(''.join(map(str, payload.values()))).encode('UTF-8'),
digestmod=hashlib.sha256
).hexdigest()
return signature == piriod_signature
if __name__ == '__main__':
app.run(debug=True)
Si la verificación de la firma falla, devuelve un código de estado 400 y no proceses el evento. Esto protege tu aplicación de solicitudes falsificadas.