Webhooks¶
Webhooks memungkinkan Anda untuk membuat aplikasi atau program yang dapat berlangganan (subscribe) event tertentu terkait penambahan atau perubahan status transaksi di digiflazz. Ketika salah satu event terjadi, kami akan mengirimkan HTTP POST payload ke URL yang sudah di konfigurasi pada webhook. Webhook dapat di gunakan untuk melakukan update ke sistem Anda secara realtime, memberikan notifikasi, realtime grafik, analisa data dan lain sebagainya.
Webhook dapat Anda konfigurasi pada menu Atur Koneksi > API > Webhook.
Events¶
Ketika Anda melakukan konfigurasi webhook, kami akan mengirimkan Event terkait transaksi (Tambah & Update). Event ini akan berisi sejumlah data (Payload) detail transaksi yang terjadi.
Events yang tersedia adalah sebagai berikut:
Nama | Deskripsi |
---|---|
create |
Terima event saat transaksi baru terjadi |
update |
Terima event saat transaksi yang sudah ada mengalami perubahan status |
Payloads¶
Event yang di kirimkan akan berisi payload atau data yang relevan dengan informasi transaksi.
Delivery headers¶
HTTP POST payloads yang akan di kirimkan ke URL webhook yang sudah di tetapkan akan berisi beberapa spesial header:
Header | Deskripsi |
---|---|
X-Digiflazz-Event | Nama tipe event yang menyebabkan event di kirim |
X-Digiflazz-Delivery | Sebuah ID untuk meng-identifikasi pengiriman |
X-Hub-Signature | Sebuah HMAC hex yang berasal dari response body. Header ini akan di kirimkan jika webhook yang di set menggunakan secret . HMAC hex merupakan hasil dari fungsi hash sha1 dan HMAC key . |
Selain itu, request user-agent
akan memiliki prefix DigiFlazz-Hookshot/
untuk transaksi prepaid.
Contoh pengiriman¶
POST /payload HTTP/1.1
Host: localhost:4567
X-Digiflazz-Delivery: dd320fc3-8dc8-49cb-a0d9-33aadacddc8a
X-Hub-Signature: sha1=7d6f016c23d03b696e76dada91c07f178cc0af4d
User-Agent: Digiflazz-Hookshot
Content-Type: application/json
Content-Length: 445
X-Digiflazz-Event: create
{
"data": {
"trx_id": "5ca22497cc6d0f965d9f84ac",
"ref_id": "30467470",
"customer_no": "081280556115",
"buyer_sku_code": "ovo100",
"message": "Sukses",
"status": "Sukses",
"rc": "00",
"buyer_last_saldo": 326719460,
"sn": "SEPTIAPAR/20190401214753214742",
"price": 199800,
"tele": "@telegram",
"wa": "081234512345"
}
}
Contoh Handle Event¶
Berikut ini Contoh menerima Event di program PHP (Laravel)
<?php
use Illuminate\Http\Request;
Route::post('/webhook', function(Request $request) {
$secret = 'somesecretvalue';
$post_data = file_get_contents('php://input');
$signature = hash_hmac('sha1', $post_data, $secret);
\Log::info($signature);
if ($request->header('X-Hub-Signature') == 'sha1='.$signature) {
\Log::info(json_decode($request->getContent(), true));
}
});
Ping Event¶
Ketika Anda menetapkan sebuah webhook, kami akan mengirimkan ke Anda sebuah event ping
sederhana untuk memberitahukan ke Anda bahwa webhook yang sudah Anda konfigurasi telah benar dan dapat digunakan. Event ini tidak akan di simpan, sehingga tidak dapat di ambil melalui API. Anda dapat memicu sebuah ping
dengan memanggil Ping Endpoint
Ping Event Payload¶
Key | Value |
---|---|
sed | Random string dari Digiflazz sed |
hook_id | ID dari webhook yang memicu ping |
hook | Detail dari konfigurasi webhook Anda |
Ping Endpoint¶
https://api.digiflazz.com/v1/report/hooks/[YOUR-WEBHOOK-ID]/pings
Contoh ping¶
> POST /v1/report/hooks/11aaabbb/pings HTTP/1.1
> Host: localhost:4567
> Accept: */*
> Content-Length: 0
< HTTP/1.1 200 OK
< Content-Length: 155
< Content-Type: application/json
{
"sed": "AgXXtVAHp",
"hook_id": "11aaabbb",
"hook": {
"url": "https://awesomesite.com/webhooks",
"secret": "somesecretkeywords",
"type": "application/json",
"status": 1
}
}