Dokumentasi API Publik Eza Pedia
Panduan integrasi teknis untuk developer PPOB, Web Kasir, atau Website E-Commerce.
1 Autentikasi Header API
Setiap request ke API publik Eza Pedia wajib menyertakan dua header HTTP berikut:
2 Cek Koneksi Gateway & Data Channel Aktif (Ping)
Dipanggil oleh web eksternal saat inisialisasi atau pengetesan koneksi API (Cek Koneksi). Endpoint ini memvalidasi API Key Anda sekaligus mengembalikan data identitas merchant dan seluruh daftar channel pembayaran aktif (QRIS, rekening Bank, atau E-Wallet) yang sudah dikonfigurasi dan ditetapkan di toko Anda.
Contoh Respon JSON (HTTP 200):
{
"success": true,
"message": "Koneksi ke Eza Pedia Gateway berhasil terhubung.",
"data": {
"status": "connected",
"gateway_name": "Qris Gateway Eza Pedia",
"version": "1.0",
"timestamp": 1760001200,
"merchant": {
"id": 2,
"name": "Toko Berkah Sejahtera",
"email": "merchant@ezapedia.my.id",
"phone": "6285281572308",
"subscription_status": "active"
},
"active_channels_count": 3,
"payment_methods": [
{
"code": "QRIS",
"name": "QRIS Dinamis (Semua Bank & E-Wallet)",
"type": "qris",
"category": "QRIS",
"account_number": "NMID Terdaftar",
"account_name": "Toko Berkah Sejahtera",
"city": "JAKARTA",
"instructions": "Scan kode QRIS menggunakan m-Banking atau E-Wallet apa saja.",
"is_active": true
},
{
"code": "BCA",
"name": "Bank Central Asia (BCA)",
"type": "bank",
"category": "BANK",
"account_number": "1234567890",
"account_name": "Budi Santoso",
"city": null,
"instructions": "Lakukan transfer sesuai total tagihan hingga 3 digit terakhir ke rekening BCA.",
"is_active": true
},
{
"code": "DANA",
"name": "DANA E-Wallet",
"type": "ewallet",
"category": "EWALLET",
"account_number": "085281572308",
"account_name": "Budi Santoso",
"city": null,
"instructions": "Kirim saldo tepat sesuai total tagihan ke nomor akun DANA.",
"is_active": true
}
]
}
}
3 Pengambilan Metode Pembayaran Aktif (Payment Methods / Channels)
Endpoint ini menampilkan seluruh metode pembayaran yang AKTIF dan sudah disetel oleh merchant di panel Eza Pedia Gateway. Web eksternal dapat mengambil semua channel sekaligus atau memilih 1 channel maupun memilih lebih dari 1 channel sesuai preferensi web tersebut.
| Parameter Query | Tipe | Wajib | Contoh & Deskripsi |
|---|---|---|---|
| channel | string / array | Opsional |
Filter kode pembayaran yang diinginkan. Contoh: • Pilih 1 channel saja: ?channel=QRIS atau ?channel=BCA• Pilih lebih dari 1 channel: ?channel=QRIS,BCA,DANA(Alias parameter: channels, code, methods)
|
| type | string / array | Opsional |
Filter berdasarkan kategori pembayaran: qris, bank, atau ewallet.Contoh: ?type=bank,ewallet
|
4 Pembuatan Transaksi Baru (Create Transaction)
POST /api/v1/transaction/createDigunakan oleh website kasir atau PPOB untuk membuat tagihan baru. Sistem otomatis menambahkan 3 digit kode unik verifikasi dan menyematkan nominal ke dalam QRIS atau rincian rekening bank/e-wallet yang dipilih.
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| order_id | string | Ya | ID / Invoice unik dari sistem website Anda (mis. INV-9901). |
| amount | numeric | Ya | Nominal pembayaran (mis. 50000). Minimal Rp1.000. |
| payment_method | string | Opsional |
Kode channel pembayaran (mis. QRIS, BCA, DANA). Default: QRIS.(Alias: channel atau payment_channel)
|
| customer_name | string | Opsional | Nama pembeli / nomor meja pelanggan. |
| customer_phone | string | Opsional | Nomor WhatsApp pembeli (untuk menerima bukti invoice & notifikasi lunas). |
| callback_url | string (url) | Opsional | URL webhook custom khusus untuk transaksi ini. |
| use_unique_code | boolean | Opsional | Default true. Memberikan acak kode unik +Rp1 s/d +Rp999. |
| expired_minutes | integer | Opsional | Waktu kadaluwarsa dalam menit (Default: 60). |
Contoh Request Body (JSON):
{
"order_id": "INV-20261015-001",
"amount": 50000,
"payment_method": "QRIS",
"customer_name": "Budi Santoso",
"customer_phone": "081234567890",
"note": "Pembelian Paket Hemat 1 Bulan",
"use_unique_code": true,
"expired_minutes": 30
}
Contoh Respon Sukses (HTTP 201):
{
"success": true,
"message": "Transaksi berhasil dibuat.",
"data": {
"order_id": "INV-20261015-001",
"trx_code": "EZ-TRZX7B9Q1A",
"amount": 50000,
"unique_code": 142,
"total_amount": 50142,
"status": "pending",
"payment_method": "QRIS",
"payment_channel": "QRIS",
"payment_details": {
"channel": "QRIS",
"name": "QRIS Dinamis (Semua Bank & E-Wallet)",
"type": "qris",
"account_number": "NMID Terdaftar",
"account_name": "Toko Berkah Sejahtera",
"instructions": "Scan QRIS menggunakan BCA, Mandiri, BRI, BNI, BSI, DANA, GoPay, OVO, ShopeePay, atau m-Banking apa saja."
},
"instructions": "Scan QRIS menggunakan BCA, Mandiri, BRI, BNI, BSI, DANA, GoPay, OVO, ShopeePay, atau m-Banking apa saja.",
"qris_payload": "00020101021226600014ID.LINKAJA.WWW...5405501425802ID...63048AC1",
"qr_image_url": "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=...",
"customer_name": "Budi Santoso",
"customer_phone": "081234567890",
"note": "Pembelian Paket Hemat 1 Bulan",
"created_at": "2026-10-15T11:45:00+07:00",
"expires_at": "2026-10-15T12:15:00+07:00",
"paid_at": null
}
}
5 Mengecek Status Pembayaran (Check Status)
GET /api/v1/transaction/status/{order_id}Digunakan untuk memeriksa status mutasi pembayaran transaksi apakah masih pending atau sudah lunas.
Contoh Respon Status Lunas (HTTP 200):
{
"success": true,
"data": {
"order_id": "INV-20261015-001",
"trx_code": "EZ-TRZX7B9Q1A",
"amount": 50000,
"unique_code": 142,
"total_amount": 50142,
"status": "paid",
"payment_method": "QRIS",
"paid_at": "2026-10-15T11:47:15+07:00"
}
}
6 Endpoint Penerima Mutasi (Aplikasi Resmi Android Eza Pedia Gateway)
POST /api/webhook/receiverEndpoint ini dipanggil secara otomatis oleh Aplikasi Resmi Android Eza Pedia Gateway setiap kali mendeteksi ada mutasi saldo dana masuk di m-Banking, QRIS, atau E-Wallet merchant pada smartphone Android.
Payload POST dari Aplikasi Android Resmi (JSON):
{
"amount": 50142,
"sender_name": "BUDI SANTOSO",
"bank_name": "BCA",
"description": "Transfer masuk Rp50.142 dari BUDI SANTOSO via QRIS",
"reference_id": "MUT-99281729"
}
Sistem otomatis mencocokkan mutasi dengan tagihan transaksi pending sebesar total_amount = 50142, menandainya menjadi paid, lalu seketika mengirimkan webhook callback lunas ke website merchant eksternal.
7 Spesifikasi Webhook Callback ke Sistem Anda
Ketika transaksi lunas, server kami akan memanggil URL Callback Anda dengan HTTP POST dan menyertakan header tanda tangan HMAC-SHA256 untuk verifikasi keamanan:
Contoh Kode Verifikasi di PHP / Laravel Anda:
<?php
$rawPayload = file_get_contents('php://input');
$signatureHeader = $_SERVER['HTTP_X_EZA_SIGNATURE'] ?? '';
$timestamp = $_SERVER['HTTP_X_EZA_TIMESTAMP'] ?? '';
$secretKey = 'whsec_xxxxxxxxxxxx'; // Secret key Anda di menu Webhook Eza Pedia
// Hitung tanda tangan HMAC-SHA256
$expectedSignature = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawPayload, $secretKey);
if (!hash_equals($expectedSignature, $signatureHeader)) {
http_response_code(401);
exit('Invalid Webhook Signature');
}
$data = json_decode($rawPayload, true);
if ($data['event'] === 'payment.paid') {
$orderId = $data['order_id'];
$amount = $data['total_amount'];
// TODO: Update status pesanan di database toko Anda menjadi SUKSES / LUNAS!
}
http_response_code(200);
echo json_encode(['status' => 'OK']);
?>
8 Contoh Script Integrasi Web Eksternal (PHP cURL)
Berikut adalah contoh skrip PHP lengkap untuk memanggil Cek Koneksi (Ping) dan membuat transaksi dengan memilih channel pembayaran aktif:
Skrip PHP: Cek Koneksi & Ambil Channel Pembayaran Aktif
<?php
$apiKey = 'ez_live_xxxxxxxxxxxxxxxxxxxxxxxx';
$secretKey = 'ez_sec_xxxxxxxxxxxxxxxxxxxxxxxx';
$gatewayUrl = 'https://gateway.ezapedia.my.id';
// 1. Cek Koneksi (Ping) & Ambil Metode Pembayaran yang Aktif
$ch = curl_init("{$gatewayUrl}/api/v1/ping");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
"X-Api-Key: {$apiKey}",
"X-Secret-Key: {$secretKey}",
]);
$pingResponse = curl_exec($ch);
curl_close($ch);
$pingData = json_decode($pingResponse, true);
if ($pingData['success']) {
echo "Koneksi Terhubung! Merchant: " . $pingData['data']['merchant']['name'] . "\n";
echo "Metode Pembayaran Tersedia:\n";
foreach ($pingData['data']['payment_methods'] as $method) {
echo "- [{$method['code']}] {$method['name']} ({$method['category']})\n";
}
}
// 2. Buat Tagihan Transaksi Baru dengan Channel Spesifik (misal 'QRIS' atau 'BCA')
$orderPayload = [
'order_id' => 'INV-' . time(),
'amount' => 75000,
'payment_method' => 'QRIS', // atau 'BCA', 'DANA' sesuai pilihan user
'customer_name' => 'Ahmad Kasir',
'customer_phone' => '081234567890',
'note' => 'Pembelian Item Kasir #1',
'use_unique_code' => true,
'expired_minutes' => 30
];
$ch = curl_init("{$gatewayUrl}/api/v1/transaction/create");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($orderPayload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
"X-Api-Key: {$apiKey}",
"X-Secret-Key: {$secretKey}",
]);
$createResponse = curl_exec($ch);
curl_close($ch);
$orderData = json_decode($createResponse, true);
print_r($orderData);
?>
Dokumentasi API WhatsApp Gateway (WACS)
Official EndpointIntegrasi pengiriman pesan WhatsApp otomatis, notifikasi invoice, broadcast struk pembayaran, dan status koneksi bot WhatsApp.
Domain utama ini secara otomatis mengikuti alamat server WhatsApp Gateway yang dikonfigurasi pada menu pengaturan sistem (dengan akhiran path /docs).
Ringkasan Endpoint Populer WACS API:
Kirim pesan WhatsApp (Teks biasa, Tombol interaktif BUTTONS!, Media gambar/video, Dokumen PDF, Polling POLLVOTE!, atau vCard kontak).
Periksa status koneksi, kesiapan sesi WhatsApp, dan informasi nomor bot yang terhubung.
Ambil seluruh daftar grup WhatsApp yang diikuti bot untuk pengiriman broadcast komunitas.
Restart koneksi session WhatsApp socket jika bot mengalami kendala pending atau reconnecting.
Untuk mengirim pesan dengan tombol interaktif, gunakan awalan BUTTONS! pada parameter text, lalu pisahkan komponen tombol dengan tanda pipa (|).