Dokumentasi API

Integrasi cepat dan aman untuk menerima pembayaran

Endpoint: Buat Transaksi

Gunakan endpoint ini untuk membuat transaksi pembayaran QRIS baru.

POST http://pay.zannstore.com/v1/

Body Parameters (x-www-form-urlencoded):

Contoh Response :

{ "status": true, "message": "Berhasil membuat transaksi", "data": { "trx_svr": "ZN1751695793", "trx_id": "TRX1751695792", "status": "Pending", "amount": 100, "diterima": 100, "fee": 1, "type_fee": "user", "qr_url": "https://pay.zannstore.com/qris/ZN1751695793.png", "qr_content": "000201...", "expired_at": "2025-07-05 17:09:55" } }

Endpoint: Cek Status Transaksi

Gunakan endpoint ini untuk mengecek status transaksi berdasarkan trx_id.

POST http://pay.zannstore.com/v1/

Body Parameters:

Contoh Response:

{ "status": true, "message": "Status transaksi berhasil diambil.", "data": { "trx_svr": "ZN1751705075", "trx_id": "TRX1751705075", "status": "Success", "amount": "1000", "fee": "7", "type_fee": "merchant", "issuer_bank": "Dana", "rrn": "518649614790", "diterima": "993", "paid_at": "2025-07-05 15:45:13" } }

Endpoint: Profile Merchant

Gunakan endpoint ini untuk mendapatkan data profil merchant.

POST http://pay.zannstore.com/v1/

Body Parameters:

Contoh Response:

{ "status": true, "msg": "Data ditemukan.", "data": { "nama_pemilik": "Zannstore", "merchant": "ZNYWSJ058", "saldo_kliring": "Rp 993", "withdraw": "Rp 2.979", "whatsapp": "6285174279764", "created_at": "2025-07-04 09:49:28" } }

Endpoint: Penarikan Otomatis

Gunakan endpoint ini untuk melakukan penarikan otomatis ke bank atau e-wallet (seperti Dana, Gopay, ShopeePay, dll).

⚠️ Minimal penarikan Rp10.000 dan akan diproses secara instan.

⚠️ Biaya Penarikan:

POST https://pay.zannstore.com/v1/

Body Parameters (x-www-form-urlencoded):

Contoh Response Sukses:

{ "status": "Success", "msg": "Withdraw berhasil diproses.", "trx_id": "WD687271a36121b", "nominal": 10000, "biaya": 3000, "total": 13000, "saldo_awal": 13500, "saldo_akhir": 500, "tujuan": "901341077047", "jenis": "BANK", "bank_code": "535", "account_name": "NI LUH SUKERTHI", "bank_name": "SEABANK INDONESIA" }

Endpoint: Penarikan

Gunakan endpoint ini untuk penarikan.

⚠️ Biaya Penarikan Ewallet 1.000 DANA, GOPAY, SHOPEEPAY Min 15.000

⚠️ Biaya Penarikan Bank 2.000 Semua Bank Min 15.000

⚠️ Untuk Proses sekitar 10-15 menit jika ingin cepat gunakan yang otomatis

POST http://pay.zannstore.com/v1/

Body Parameters:

Contoh Response:

{ "status":true, "msg":"Withdraw berhasil diproses.", "trx_id":"WD68690055300e7" }

Callback Transaksi Success

Setelah pelanggan berhasil melakukan pembayaran melalui QRIS, sistem ZANNPAY akan secara otomatis mengirimkan notifikasi (callback) ke server merchant. Ini memungkinkan sistem Anda langsung memproses pesanan tanpa perlu polling status secara manual.

Alur Kerja Callback:

  1. Anda membuat transaksi QRIS dengan endpoint request = new.
  2. Setelah transaksi dibayar, ZANNPAY akan mengirim POST ke callback_url Anda.
  3. Server Anda menerima JSON dan memprosesnya (misalnya: update database, kirim notifikasi ke user).
  4. Server Anda merespon dengan status sukses agar ZANNPAY tidak mengulang pengiriman callback.

Format Callback yang Dikirim

Berikut adalah struktur JSON yang dikirim ke server Anda:

{ "data": { "trx_svr": "ZN1751705075", "trx_id": "INV-00123", "status": "Success", "amount": "10000", "fee": "500", "diterima": "9500", "type_fee": "user", "issuer_bank": "Dana", "rrn": "123456789012", "paid_at": "2025-07-06 14:15:00" } }

Penjelasan Field:

✅ Respon yang Harus Dikirim oleh Server Anda

Server Anda harus merespon dengan HTTP 200 dan JSON berikut:

{ "status": true, "msg": "Callback diterima" }

Jika respon gagal atau kosong, sistem ZANNPAY dapat mengulang pengiriman secara otomatis hingga beberapa kali.

Contoh Implementasi Sederhana (PHP)

<?php $data = json_decode(file_get_contents("php://input"), true); if ($data['data']['status'] === "Success") { // Simpan ke database, update status pesanan, dll http_response_code(200); echo json_encode(["status" => true, "msg" => "Callback diterima"]); } else { http_response_code(400); echo json_encode(["status" => false, "msg" => "Invalid status"]); } ?>

Cara Testing Callback

⚠️ Penting: Pastikan server Anda online, aman, dan memiliki log callback agar tidak kehilangan data pembayaran.