Webhook Integration

Updated on: 30 September 2024

Halo Sultanku!, pada artikel ini, mimin akan membahas bagaimana cara kamu untuk mengintegrasikan Custom Webhook, sehingga kamu dapat membuat Bagibagi.co dapat berkomunikasi dengan aplikasi yang kamu inginkan.

Mimin akan menjelaskan bagaimana cara kamu mengintegrasikan aplikasi kamu dengan Bagibagi.co, sekaligus melakukan validasi transaksi demi mencegah transaksi palsu yang masuk ke-aplikasi kamu, dibawah ini adalah beberapa sesi integrasi Webhook yang kamu dapat ikuti:

Kamu dapat melakukan integrasi Platform lain Ke-Bagibagi.co dengan memasukkan url Webhook yang ada, pada bagian tabs Integration Page dalam halaman Stream Overlay, dan memasukkan Webhook Url pada bagian Webhook Integration yang kamu inginkan.

Stream Overlay Webhook Url

kamu dapat melakukan integrasi Aplikasi kamu sehingga menerima notifikasi transaksi dari Bagibagi.co dengan memasukkan Custom Webhook Url pada input form Custom Url yang ada pada bagian tabs Integration Page dalam halaman Stream Overkay, dan memasukkan Custom Url aplikasi kamu pada bagian ini. Bagibagi.co akan mengirimkan notifikasi transaksi dengan metode POST dalam bentuk application/json Dengan contoh seperti di-bawah ini:

json
{
  "transaction_id": "bagibagi-965b3d64-1f5e-4361-a01b-5b58df37190c",
  "name": "Seseorang",
  "amount": 10000,
  "message": "Sukses selalu ya om ❤️",
  "mediaShareUrl": "https://www.youtube.com/watch?v=jHonT8q2MOQ",
  "created_at": "8/24/2024 10:30:00 AM"
}

Jika kamu ingin mencegah transaksi palsu yang masuk pada Custom Url yang kamu masukkan, kamu dapat melakukan validasi berdasarkan header X-Bagibagi-Signature yang kami kirimkan pada Custom Url kamu. Signature dapat kamu validasi dengan algoritma SHA-256, dengan signing key sesuai dengan Webhook Token yang kamu dapat lihat pada Tab Integrasi Akun kamu. kamu dapat melakukan validasi seperti contoh skenario yang kami berikan dibawah ini.

Semisal Webhook Token kamu adalah 'secret', dan kamu mendapatkan notifikasi transaksi yang memiliki body seperti dibawah ini:

json
{
  "transaction_id": "bagibagi-965b3d64-1f5e-4361-a01b-5b58df37190c",
  "name": "Seseorang",
  "amount": 10000,
  "message": "Sukses selalu ya om ❤️",
  "mediaShareUrl": "https://www.youtube.com/watch?v=jHonT8q2MOQ",
  "created_at": "8/24/2024 10:30:00 AM"
}

Kami juga akan mengirimkan header X-Bagibagi-Signature yang akan memiliki value '5c46b62f3348b62089671c2ad640e52b91789039339e94bdaaec1e4fd04950c6' dan dapat kamu validasi dengan beberapa contoh bahasa pemrograman dibawah ini:

        
TypeScript
import { createHmac, timingSafeEqual } from "node:crypto" function isValidSignature( value: Object, webhookToken: string, signature: string ): boolean { const generatedSignature = createHmac("sha256", webhookToken) .update(JSON.stringify(value)) .digest("hex") const signatureBuffer = Buffer.from(signature, "hex") const generatedSignatureBuffer = Buffer.from(generatedSignature, "hex") return timingSafeEqual( new Uint8Array(signatureBuffer), new Uint8Array(generatedSignatureBuffer) ) } const body = { "transaction_id": "bagibagi-965b3d64-1f5e-4361-a01b-5b58df37190c", "name": "Seseorang", "amount": 10000, "message": "Sukses selalu ya om ❤️", "mediaShareUrl": "https://www.youtube.com/watch?v=jHonT8q2MOQ", "created_at": "2/17/2025 10:46:21 AM" } const webhookToken = "secret" const signature = "e9b17b5f09e7cfbe09bc677799aa8cb586f3bbe7b1c19a4be2545c16b240d250" console.log(isValidSignature(body, webhookToken, signature));