Semua kategori
Panduan Pembayaran

Pembayaran: QRIS, voucher, dan tunai di kiosk plus setup merchant.

Halaman ini hanya berisi kategori Pembayaran (2 panduan). Untuk kategori lain, pakai tombol Berikutnya di bawah atau navigasi kiri.

PembayaranCustomer dan operator booth

Cara Bayar di Kiosk

QRIS, voucher, dan tunai. Termasuk cara baca total, masa berlaku QR, dan apa yang terjadi saat reload.

6 menit · 4 bagian · 11 langkah

Perlu disiapkan

  • Paket sudah dipilih dan order summary tampil.
01/04

Ringkasan

Kiosk mendukung QRIS via gateway merchant owner: Pakasir, Midtrans, atau Tripay. Dana masuk langsung ke rekening owner, bukan ke perantara. Kiosk menampilkan metode dari credential direct aktif: QRIS, VA, dan metode redirect yang didukung adapter.

Bila booth belum mengaktifkan credential gateway, kiosk hanya menawarkan voucher dan tunai. Ini normal dan bukan error. Semua nominal Rupiah integer. Backend menghitung ulang total, frontend tidak pernah dipercaya untuk harga.

02/04

Bayar dengan QRIS

Setelah tekan Bayar dengan QRIS, backend membuat transaksi provider lalu menampilkan QR beserta total yang harus dibayar. Untuk Pakasir v2: POST create transaction dengan header X Api Key, response berisi order id, txn id, amount, total payment (amount plus fee), qr string, dan expired at. Tampilkan total payment ke pembeli, bukan nominal dasar.

Verifikasi memakai webhook plus polling. Webhook Pakasir memakai header X Secret lalu status server to server sebelum paid. Kiosk polling tiap 3 detik. Satu booth hanya punya satu QR hidup: checkout baru menghanguskan checkout open plus payment creating atau pending sebelumnya. Payment pending yang masih hidup dicek dulu ke provider: bila ternyata sudah dibayar maka transisi paid, bukan di void. QR yang sudah di void tapi tetap dibayar tetap diakui paid bila amount valid.

  1. 1

    Tekan Bayar dengan QRIS.

  2. 2

    Scan kode dan bayar sebesar total yang tampil termasuk kode unik.

  3. 3

    Perhatikan timer kedaluwarsa di bawah QR. Default 3 menit, rentang setting 1 sampai 60 menit. Efektif memakai yang tercepat antara setting booth dan provider.

  4. 4

    Tunggu status paid. Jangan tutup halaman.

  5. 5

    Jika reload atau putus: status dipulihkan dari server via payment reference.

ProviderMetode kioskVerifikasi webhook
PakasirQRIS dinamis plus kode unikHeader X Secret plus status server to server
MidtransQRIS, GoPay, ShopeePay, VASHA512 order id plus status code plus gross amount plus server key
TripayQRIS, VA, gerai retailHMAC SHA256 raw body via private key
03/04

Pakai voucher

Masukkan kode huruf besar lalu Apply. Valid menampilkan voucher applied plus diskon. Invalid menampilkan invalid atau expired.

Validasi server: voucher ada, business cocok, active true, tanggal berlaku, usage limit total, usage per customer, min transaction, max discount, package eligibility, outlet eligibility. Voucher 100 persen membuat payment paid sintetik tanpa gateway. Voucher parsial kembali ke method picker untuk sisa.

  1. 1

    Masukkan kode voucher, tekan Apply.

  2. 2

    Periksa diskon dan total akhir.

  3. 3

    Lunasi sisa bila voucher parsial.

04/04

Bayar tunai

Pilih Tunai dan serahkan uang ke operator. Kiosk membuat payment pending yang menunggu konfirmasi operator terautentikasi. Customer tidak bisa self confirm. Hanya operator dengan sesi login plus membership payment confirm yang bisa mengonfirmasi.

Transaksi tunai tercatat untuk reporting tetapi tidak mengkredit saldo owner. Saldo hanya dari QRIS. Nominal final dihitung server (gross minus diskon) dan tidak bisa dimanipulasi dari browser.

  1. 1

    Pilih Tunai.

  2. 2

    Serahkan uang ke operator.

  3. 3

    Tunggu operator konfirmasi sampai status paid.

Troubleshooting

GejalaPenyebabSolusi
QRIS tidak tampilKoneksi putus atau tanpa credential aktifCek internet kiosk, reload (status dipulihkan otomatis), atau pakai tunai lalu catat manual.
Sudah bayar tapi pendingWebhook tertundaTunggu polling dan webhook. Jangan buat QR baru bila QR masih hidup.
QR expiredMelewati expiry provider atau settingBuat payment baru. Jangan reuse transaksi lama bila provider mensyaratkan baru.
RATE_LIMITED 429Tombol bayar ditekan berulangIkuti retry after di response, kunci tombol sampai waktu habis.

Langkah berikutnya

OwnerOwner

Owner: Atur QRIS dan Credential

Pasang gateway merchant sendiri agar dana kiosk masuk langsung ke rekening Anda.

10 menit · 3 bagian · 7 langkah

Perlu disiapkan

  • Akun merchant Pakasir, Midtrans, atau Tripay.
  • Server key dan merchant id siap disalin.
01/03

Ringkasan

Model dana direct merchant: customer membayar ke project merchant owner. Aggregator platform untuk kiosk dihapus: tanpa credential aktif, kiosk hanya voucher dan tunai. Env Pakasir hanya untuk invoice subscription platform.

Credential disimpan di tabel payment credentials per business, bukan env. Server key dienkripsi AES 256 GCM di app layer. Webhook aktif untuk Pakasir, Midtrans, Tripay dengan verifikasi secret atau signature lalu status server to server sebelum settlement. Lookup webhook hanya memakai order id atau merchant ref terhadap payments order id: business, provider, credential, dan payment id dari webhook tidak dipercaya.

02/03

Tambah credential

Unique per business, provider, dan environment. Kiosk memilih provider dari credential aktif terbaru per provider plus environment. Direct merchant memakai transitionPaymentToPaid dan runPaidSideEffects: transaction payment method gateway, tanpa creditBalance, platform fee menjadi receivable idempotent. Credential null tetap aggregator mode Pakasir untuk invoice.

  1. 1

    Buka Settings Payment, tekan Tambah Payment Gateway.

  2. 2

    Pilih provider Pakasir, Midtrans, atau Tripay.

  3. 3

    Isi label, merchant id, server key, client key bila ada, environment sandbox atau production.

  4. 4

    Tekan Test untuk cek koneksi, lalu aktifkan toggle is active.

ProviderField wajibWebhook route
Pakasirmerchant id, server keyPOST /api/webhooks/payment/pakasir
Midtransmerchant id, server key, client keyPOST /api/webhooks/payment/midtrans
Tripaymerchant code, api key, private keyPOST /api/webhooks/payment/tripay
03/03

Atur expiry dan fallback

QRIS expiry owner configurable via business settings checkout qris expiry minutes: default 3, rentang 1 sampai 60, dari dashboard Settings. Expiry efektif sama dengan min expiry provider dan setting. Selama QR hidup, customer tidak bisa membuat QR baru: satu satunya jalan kembali ke halaman package (QR lama otomatis hangus).

Tanpa credential direct aktif, kiosk otomatis hanya voucher dan tunai. Jelaskan ke operator agar tidak dianggap error. Voucher 100 persen sama dengan paid sintetik. Tunai sama dengan pending menunggu operator server gated non withdrawable.

  1. 1

    Atur qris expiry minutes di Settings Checkout.

  2. 2

    Uji QR hidup dan kedaluwarsa di kiosk.

  3. 3

    Siapkan SOP tunai untuk fallback.

Troubleshooting

GejalaPenyebabSolusi
Test credential gagalKey salah, environment salah, atau project belum liveSalin ulang key, samakan sandbox vs production, cek dashboard provider.
Webhook 401Secret tidak dikenal (fail closed)Samakan webhook secret di provider dan metadata credential.
Amount mismatch, paid ditolakNominal provider tidak sama dengan final amountJangan ubah harga saat QR hidup. Buat payment baru.

Langkah berikutnya

Catatan sumber kebenaran.

Panduan ini disusun dari perilaku kode berjalan SnapyOS. Backend menghitung ulang pembayaran. Dana QRIS masuk langsung ke rekening merchant owner. Hasil foto tersimpan 1 sampai 3 hari mengikuti pengaturan booth.