Configurando Webhooks
Passo a passo para configurar webhooks na sua conta.
Pelo painel
- Acesse app.pix2bit.net e faca login
- No menu lateral, clique em API e Webhooks
- Selecione a aba Webhooks
- Clique em Novo Webhook
- Preencha os campos:
- Nome: um nome para identificar o webhook
- URL: a URL que recebera as notificacoes (deve aceitar POST)
- Evento: selecione o evento que deseja monitorar
- Authorization: (opcional) um token para validar as requisicoes
- Clique em Criar
WARNING
A URL do webhook sera testada com uma requisicao POST durante a criacao. Sua URL precisa estar acessivel e retornar um status HTTP 2xx para que o webhook seja criado com sucesso.
Validacao da URL
Durante a criacao, o Pix2bit envia uma requisicao de teste para sua URL:
json
{
"event": "WEBHOOK_TEST",
"data": {
"test": true,
"message": "Webhook test delivery",
"timestamp": "2026-02-16T12:00:00.000Z"
}
}Sua URL deve:
- Aceitar requisicoes
POST - Retornar status HTTP
200-299 - Responder em ate 10 segundos
Se a validacao falhar, o webhook nao sera criado. Erros comuns:
| Erro | Causa |
|---|---|
ENOTFOUND | Dominio nao encontrado |
ECONNREFUSED | Servidor recusou a conexao |
Status 4xx/5xx | Servidor retornou erro |
| Timeout | Servidor nao respondeu em 10s |
Exemplo de servidor para receber webhooks
javascript
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhook/pix2bit', (req, res) => {
const { event, data } = req.body;
// Validar o header de autorizacao
const authHeader = req.headers['authorization'];
if (authHeader !== 'Bearer meu-token-secreto') {
return res.status(401).json({ error: 'Unauthorized' });
}
switch (event) {
case 'DEPOSIT_ASSET_SUCCESS':
console.log('Deposito confirmado:', data.transactionId);
console.log('Valor creditado:', data.creditedValue / 100, 'BRL');
// Processar deposito...
break;
case 'PAYOUT_SUCCESSFUL':
console.log('Pagamento realizado:', data.invoice);
// Processar pagamento...
break;
case 'PAYOUT_FAILED':
console.log('Pagamento falhou:', data.error);
// Tratar falha...
break;
case 'WEBHOOK_TEST':
console.log('Teste de webhook recebido');
break;
}
res.status(200).json({ received: true });
});
app.listen(3000);python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook/pix2bit', methods=['POST'])
def webhook():
# Validar autorizacao
auth = request.headers.get('Authorization')
if auth != 'Bearer meu-token-secreto':
return jsonify({'error': 'Unauthorized'}), 401
payload = request.json
event = payload.get('event')
data = payload.get('data')
if event == 'DEPOSIT_ASSET_SUCCESS':
print(f"Deposito confirmado: {data['transactionId']}")
print(f"Valor creditado: R$ {data['creditedValue'] / 100:.2f}")
elif event == 'PAYOUT_SUCCESSFUL':
print(f"Pagamento realizado: {data['invoice']}")
elif event == 'PAYOUT_FAILED':
print(f"Pagamento falhou: {data.get('error')}")
return jsonify({'received': True}), 200
if __name__ == '__main__':
app.run(port=3000)