QRIS. Halaman ini membangun QR pembayaran sesuai EMVCo Merchant-Presented Mode —
tag TLV, mata uang 360 (IDR),
NMID merchant, dan penutup CRC16.
Ubah data merchant atau nominal, QR langsung diperbarui. Tombol Simulasi pembayaran
menambah baris transaksi masuk agar riwayat dan ringkasan ikut berubah.
Transaksi hari ini
0
0 berhasil
Volume
Rp 0
total nilai transaksi berhasil
Estimasi MDR
Rp 0
0,7% dari volume (contoh)
Settlement
T+1
masuk rekening besok pagi
Pembangkit QRIS
QRIS Statis
CRC16 —
QR kedaluwarsa — tekan Bangun ulang
KOPI NUSANTARA
JAKARTA · 5814
Nominal
Nominal bebas
Berlaku berlaku terus
Payload EMVCo
0 karakter · tag TLV + CRC16
—
Struktur payload
dibaca ulang dari string QR — bukti payload bisa diparsing| Tag | Arti | Panjang | Nilai |
|---|
Riwayat transaksi QRIS
| ID | Waktu | Penerbit | Metode | Nominal | MDR | Status |
|---|---|---|---|---|---|---|
| Belum ada transaksi. | ||||||
Merchant
Aktif
NamaKOPI NUSANTARA
NMIDID1024351287941
KotaJAKARTA
Kriteria merchantUMI
AcquirerID.CO.QRIS.WWW
NMID, nama, dan kota diambil dari panel kiri lalu dimasukkan ke tag 51 dan 59–61 pada payload QR.
Cara kerja QRIS
-
1. Merchant menerbitkan QR. Statis (tag 01 =
11) untuk nominal bebas, dinamis (tag 01 =12) untuk sekali pakai + nominal pasti. - 2. Data merchant masuk tag 51. Domain acquirer, NMID, dan kriteria merchant (UMI/UKM/UKEA) ditulis berurutan sebagai TLV bersarang.
-
3. Nominal & mata uang. Tag 53 =
360(IDR); tag 54 hanya diisi pada QR dinamis. - 4. CRC16 menutup payload. Empat karakter terakhir dihitung dari seluruh payload — bila satu karakter berubah, CRC tidak lagi cocok.
- 5. Aplikasi pembayar memindai. Penerbit meneruskan ke switching, lalu settlement T+1 ke rekening merchant.
Kode inti
// payload: TLV (tag + panjang + nilai) ala EMVCo
s += Qris.tlv("00", "01"); // versi payload
s += Qris.tlv("01", "12"); // 12 = QR sekali pakai
s += Qris.tlv("51",
Qris.tlv("00", "ID.CO.QRIS.WWW") +
Qris.tlv("02", "ID1024351287941") +
Qris.tlv("03", "UMI"));
s += Qris.tlv("52", "5814"); // MCC
s += Qris.tlv("53", "360"); // IDR
s += Qris.tlv("54", "50000"); // nominal (dinamis)
s += Qris.tlv("58", "ID");
s += Qris.tlv("59", "KOPI NUSANTARA");
s += Qris.tlv("60", "JAKARTA");
s += "6304" + Qris.crc16(s); // CRC16-CCITT
// baca ulang isi payload (untuk audit / log)
Qris.parse(s); // → [{ tag: "51 · 02", arti: "NMID", … }]
Catatan. Nomor QR di halaman ini dibuat untuk demo antarmuka — bukan QRIS
terdaftar. Untuk produksi, NMID dan domain acquirer harus berasal dari PJP
(penyedia jasa pembayaran) yang bekerja sama.