Endpoint: Buat Transaksi
Gunakan endpoint ini untuk membuat transaksi pembayaran QRIS baru.
POST http://pay.zannstore.com/v1/
Body Parameters (x-www-form-urlencoded):
merchant: Berisi Merchant AndaCth : ZNxxxxtrx_id: Berisi trx_id unik dari Sistem AndaCth : TX-2609FFKJrequest: Berisi datanewuntuk membuat transaksi barupayment: Berisi Jenis PembayaranQRIS.amount: Berisi jumlah amount. Contoh:10000note: Berisi Catatan Transaksi (opsionalexpired_time: Berisi data waktu menggunakan format m dan j1j(1 jam),30m(30 menit).type_fee: Berisi data type fee ada dua typeuserataumerchantsignature: Berisi Formula SHA256 darimerchant + secret_key + trx_id
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:
merchant: Berisi Merchant Andatrx_id: Berisi trx_id yang ingin di periksarequest: Berisi datastatus.signature: Berisi Formula SHA256 darimerchant + secret_key + trx_id
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:
merchant: Berisi Merchant Andapin: PIN rahasia merchantrequest: Berisi dataprofilesignature: Berisi Formula SHA256 darimerchant + secret_key + pin
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:
- E-wallet (DANA, GOPAY, SHOPEEPAY): Rp1.500 Lihat kode
- Bank (Semua Bank): Rp3.000 Lihat kode
POST https://pay.zannstore.com/v1/
Body Parameters (x-www-form-urlencoded):
merchant: Kode Merchant Anda (misal:ZNXXXX)pin: PIN rahasia merchantrequest: Gunakan nilaiwithdraw_autoamount: Jumlah penarikan (contoh:50000)type_bank:bankatauemoneybank_code: Kode bank/emoney (contoh:002untuk BRI,DANA,GOPAY)tujuan: Nomor rekening atau nomor HP penerimasignature: SHA256 darimerchant + pin
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:
merchant: Berisi Merchant Andapin: PIN rahasia merchantrequest: Berisi datawithdrawamount: Berisi Jumlah Uang Ingin ditariktujuan: Berisi Data Rekening PenerimaFormat: OVO | 085174667722signature: Berisi Formula SHA256 darimerchant + pin
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:
- Anda membuat transaksi QRIS dengan endpoint
request = new. - Setelah transaksi dibayar, ZANNPAY akan mengirim
POSTke callback_url Anda. - Server Anda menerima JSON dan memprosesnya (misalnya: update database, kirim notifikasi ke user).
- 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:
trx_svr: ID unik transaksi dari ZANNPAYtrx_id: ID transaksi dari sisi Anda (merchant)status: Status transaksi — Success berarti pembayaran berhasilamount: Nominal transaksifee: Biaya transaksiditerima: Jumlah bersih setelah dikurangi feetype_fee: Siapa yang menanggung biaya (user atau merchant)issuer_bank: Nama e-wallet/bank pelangganrrn: Reference number transaksipaid_at: Waktu transaksi dinyatakan berhasil
✅ 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
- Atur URL callback Anda di dashboard ZANNPAY atau hubungi admin
- Pastikan server Anda menerima HTTP POST dan merespon dengan JSON
⚠️ Penting: Pastikan server Anda online, aman, dan memiliki log callback agar tidak kehilangan data pembayaran.