Tempo real

Webhooks assinados e com retentativas

Cadastre uma URL HTTPS pública para receber o evento pedido_compra.emitido. A SoftBuy registra cada entrega e tenta novamente em caso de falha.

Payload

json
{
  "id": "d4bb36f6-0f8e-4c7a-8ba0-0123456789ab",
  "evento": "pedido_compra.emitido",
  "criado_em": "2026-08-19T16:30:00.000Z",
  "tentativa": 1,
  "data": {
    "pedido": {
      "id": "91513a3e-0b60-43dc-abdf-55611083b387",
      "numero_sequencial": 5,
      "numero_sc": "8",
      "status": "EMITIDO",
      "fornecedor_nome": "Fornecedor Exemplo",
      "valor_total": 1250.50,
      "itens": []
    }
  }
}

Validar assinatura

typescript
import { createHmac, timingSafeEqual } from "node:crypto";

const timestamp = request.headers.get("x-softbuy-timestamp") ?? "";
const received = request.headers.get("x-softbuy-signature") ?? "";
const rawBody = await request.text();

const expected = "v1=" + createHmac("sha256", process.env.SOFTBUY_WEBHOOK_SECRET!)
  .update(timestamp + "." + rawBody)
  .digest("hex");

const valid = received.length === expected.length &&
  timingSafeEqual(Buffer.from(received), Buffer.from(expected));
X-SoftBuy-Delivery

Identificador único da entrega

X-SoftBuy-Event

Nome do evento enviado

X-SoftBuy-Timestamp

Instante usado na assinatura

X-SoftBuy-Signature

Assinatura v1 em hexadecimal