Dokumentasi API Integrasi

Dokumentasi API Publik Eza Pedia

Panduan integrasi teknis untuk developer PPOB, Web Kasir, atau Website E-Commerce.

Dokumentasi ini bersifat publik. Untuk mendapatkan API Key & Secret Key transaksi Anda, silakan masuk ke portal merchant lalu buka menu Kunci API.
Masuk ke Portal →

1 Autentikasi Header API

Setiap request ke API publik Eza Pedia wajib menyertakan dua header HTTP berikut:

Content-Type: application/json
X-Api-Key: ez_live_xxxxxxxxxxxxxxxxxxxxxxxx
X-Secret-Key: ez_sec_xxxxxxxxxxxxxxxxxxxxxxxx

2 Cek Koneksi Gateway & Data Channel Aktif (Ping)

GET /api/v1/ping atau POST /api/v1/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)

GET /api/v1/payment-methods alias GET /api/v1/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
Jaminan Keamanan Mutasi: Hanya metode pembayaran yang aktif dan siap menerima mutasi di akun merchant yang akan ditampilkan. Jika channel dinonaktifkan di panel gateway, channel tersebut otomatis tidak muncul di web eksternal.

4 Pembuatan Transaksi Baru (Create Transaction)

POST /api/v1/transaction/create

Digunakan 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/receiver

Endpoint 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:

X-Eza-Signature: sha256=abcdef123456...
X-Eza-Timestamp: 1760000000
X-Eza-Event: payment.paid

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);
?>
9

Dokumentasi API WhatsApp Gateway (WACS)

Official Endpoint

Integrasi pengiriman pesan WhatsApp otomatis, notifikasi invoice, broadcast struk pembayaran, dan status koneksi bot WhatsApp.

Base URL & Domain Dokumentasi WACS: Sesuai Pengaturan Sistem
https://wacs.my.id/docs

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:

POST /api/send

Kirim pesan WhatsApp (Teks biasa, Tombol interaktif BUTTONS!, Media gambar/video, Dokumen PDF, Polling POLLVOTE!, atau vCard kontak).

GET /api/session/status

Periksa status koneksi, kesiapan sesi WhatsApp, dan informasi nomor bot yang terhubung.

GET /api/groups

Ambil seluruh daftar grup WhatsApp yang diikuti bot untuk pengiriman broadcast komunitas.

POST /api/session/restart

Restart koneksi session WhatsApp socket jika bot mengalami kendala pending atau reconnecting.

Format Pesan Tombol Interaktif (Interactive Buttons):

Untuk mengirim pesan dengan tombol interaktif, gunakan awalan BUTTONS! pada parameter text, lalu pisahkan komponen tombol dengan tanda pipa (|).

BUTTONS! Pesan teks utama di sini | footer: Teks footer info | url: Buka Tautan:https://link.com | copy: Salin Kode:TRX123 | reply: Quick Reply:klik_disini
Untuk melihat spesifikasi parameter JSON lengkap, kode contoh Python, Node.js, cURL, serta webhook pesan masuk, silakan buka:
https://wacs.my.id/docs →