Webhooks

Aprenda a configurar webhooks para receber notificações de pagamentos.

Webhooks permitem que sua aplicação receba notificações em tempo real sobre eventos importantes de pagamento da BS PAY. Você pode usar os webhooks para acionar reações assíncronas em seu sistema, como atualizar o status de um pagamento, enviar notificações aos usuários ou iniciar processos de entrega de um produto.

Exemplo de endpoint

No exemplo abaixo você pode conferir rapidamente como criar um webhook para atualizar o status de uma compra no seu banco de dados quando você receber uma confirmação de pagamento.

Node.js
Laravel
import express from 'express';

const app = express();
app.use(express.json());

app.post('/webhook/callback', async (req, res) => {
  if (req.body.status !== 'PAID') {
    return res.status(200).send('Received'); // Ignora notificações que não são de pagamento
  }

  try {
    const id = req.body.external_id;
    const order = await Order.find(id);

    await order.update({
      status: 'PAID',
    });

    return res.status(200).send('OK');
  }
  catch (err) {
    console.error('Erro ao gerar QR Code:', err);
    return res.status(500).send('Erro ao gerar QR Code');
  }
});

app.listen(3000, () => console.log('🚀 Servidor rodando na porta 3000'));

Agora utilize este endpoint no parâmetro postbackUrl quando for gerar um novo QR Code Pix.

Node.js
Laravel
app.post('/payment', async (req, res) => {
  try {
    const order = await Order.create({ ... });

    const response = await axios.post('https://api.bspay.co/v2/pix/qrcode', {
      amount: 100.00,
      external_id: order.id,
      postbackUrl: 'https://yourdomain.com/webhook/callback',     }, {
      headers: {
        Authorization: 'Basic ' + process.env.BSPAY_TOKEN,
        'Content-Type': 'application/json',
      },
    });

    return res.status(200).send('OK');
  }
  catch (err) {
    console.error('Erro ao gerar QR Code:', err);
    return res.status(500).send('Erro ao gerar QR Code');
  }
});

Relacionado