TenkaTenka
সাইন ইন

Tenka সহায়তা কেন্দ্র › ডেভেলপার এলাকা › Webhooks

এই বিষয়বস্তুর কিছু অংশ এখনও পর্তুগিজ ভাষায় — আপনার ভাষায় অনুবাদ চলছে।

Webhooks

কিছু ঘটলে Tenka আপনার সিস্টেমকে জানায়।

সেটিংস › Webhooks-এ একটি গোপন কোডসহ URL নিবন্ধন করুন: প্রতিটি ডেলিভারি X-Tenka-Signature-এ স্বাক্ষরিত (বডির HMAC-SHA256) এবং আপনার সিস্টেম 2xx না দিলে পুনরায় পাঠানো হয়। ইভেন্টগুলো:

Os eventos

NomeDescrição
fatura.pagaচালান পরিশোধিত (আদায় নিশ্চিত)
proposta.aceitaবাণিজ্যিক প্রস্তাব গৃহীত (গ্রাহক দ্বারা)
negocio.ganhoচুক্তি জয় → চুক্তিপত্র তৈরি
demanda.criadaচাহিদা (টিকিট) তৈরি
lead.criadoCRM-এ নতুন লিড
remessa.criadaRemessa de rolos aberta para o beneficiador (API)
apontamento.criadoApontamento de produção lançado (API)

Cabeçalhos de cada entrega

CabeçalhoDescrição
X-Tenka-EventO evento (um dos da lista acima).
X-Tenka-DeliveryIdentificador único da entrega: use para não processar duas vezes.
X-Tenka-Signaturesha256= seguido do HMAC-SHA256, em hexadecimal, do corpo cru com o segredo da inscrição.
X-Tenka-Event-VersionOpcional: versão do contrato do corpo do evento.
X-Tenka-Replay-OfOpcional: presente só quando a entrega é um reenvio; traz o id da entrega original.

Como conferir a assinatura

Calcule o HMAC-SHA256 do corpo exatamente como chegou (antes de converter para objeto), com o segredo whsec_ da inscrição, e compare com o cabeçalho em tempo constante. Não bateu: responda 401 e descarte.

Node (SDK)
import crypto from "node:crypto";

// raw = the request body exactly as received (Buffer)
function signatureOk(raw, header, secret) {
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(raw).digest("hex");
  return typeof header === "string" && header.length === expected.length
    && crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}

Responda 2xx em poucos segundos e processe depois; sem 2xx, a entrega é tentada de novo.