Generator & Konversi QRIS Statis ke Dinamis
Suntikkan nominal bayar dan biaya transaksi secara real-time ke payload QRIS standar Bank Indonesia & ASPI dengan generator visual modern beresolusi tinggi.
Pengaturan Transaksi
Auto UpdateLive Preview QRIS
Siap ScanDekoder & Inspeksi Tag EMVCo QRIS
Hasil pembacaan struktur Tag-Length-Value (TLV) dari string QRIS dinamis yang sedang aktif.
| Tag | Deskripsi Tag EMVCo | Panjang | Nilai Data (Value) |
|---|---|---|---|
| 00 | Payload Format Indicator | 2 | 01 |
| 01 | Point of Initiation Method (11: Static, 12: Dynamic) | 2 | 12 |
| 26 | Merchant Account Information (National) | 74 | 0025ID.CO.BANKNEOCOMMERCE.WWW011893600490594025951702120005600601850303UMI |
| 51 | Merchant Account Information (Domestic/Global) | 55 | 0025ID.CO.BANKNEOCOMMERCE.WWW0215ID10232875503140303UMI |
| 52 | Merchant Category Code (MCC) | 4 | 5411 |
| 53 | Transaction Currency (360: IDR) | 3 | 360 |
| 58 | Country Code (ID) | 2 | ID |
| 59 | Merchant Name | 5 | ULHEM |
| 60 | Merchant City | 6 | KENDAL |
| 61 | Postal Code | 5 | 51355 |
| 62 | Additional Data Field Template | 33 | 052230017018004145344348160703T01 |
| 54 | Transaction Amount | 5 | 25000 |
| 63 | CRC Checksum (CRC-16 CCITT) | 4 | 10B6 |
Contoh Kode & Integrasi Lengkap
Pilihan implementasi kode PHP mulai dari konversi instan 3 baris hingga kustomisasi visual lanjutan dan integrasi API.
Cara paling cepat dan ringkas untuk mengonversi QRIS statis menjadi dinamis dan merendernya ke HTML:
<?php
require_once __DIR__ . '/autoload.php';
use Fajsenug\Qris\QrisConverter;
use Fajsenug\Qris\QrRenderer;
$qrisStatis = '00020101021126740025ID.CO.BANKNEOCOMMERCE.WWW011893600490594025951702120005600601850303UMI51550025ID.CO.BANKNEOCOMMERCE.WWW0215ID10232875503140303UMI5204541153033605802ID5905ULHEM6006KENDAL6105513556233052230017018004145344348160703T0163043A5F';
$nominal = 25000; // Rp 25.000
// 1. Konversi payload ke dinamis (menyisipkan Tag 54 & hitung ulang CRC-16)
$qrisDinamis = QrisConverter::convert($qrisStatis, $nominal);
// 2. Dapatkan Data URI Base64 PNG siap pakai pada tag <img>
$base64Image = QrRenderer::toBase64($qrisDinamis, 300, 10, 'M');
// 3. Tampilkan di browser
echo '<img src="' . $base64Image . '" alt="QRIS Dinamis Rp 25.000">';
Menyisipkan biaya layanan (Convenience Fee Tag 56/57) dan menyimpan gambar langsung ke file server:
<?php
require_once __DIR__ . '/autoload.php';
use Fajsenug\Qris\QrisConverter;
use Fajsenug\Qris\QrRenderer;
$qrisStatis = '00020101021126740025ID.CO.BANKNEOCOMMERCE.WWW011893600490594025951702120005600601850303UMI51550025ID.CO.BANKNEOCOMMERCE.WWW0215ID10232875503140303UMI5204541153033605802ID5905ULHEM6006KENDAL6105513556233052230017018004145344348160703T0163043A5F';
$nominal = 150000;
// Opsi 1: Biaya Tetap Rp 2.500 (Tag 55=02 & Tag 56=2500)
$payloadTetap = QrisConverter::convert($qrisStatis, $nominal, [
'fee_fixed' => 2500
]);
// Opsi 2: Biaya Persentase 0.7% (Tag 55=03 & Tag 57=0.70)
$payloadPersen = QrisConverter::convert($qrisStatis, $nominal, [
'fee_percentage' => 0.7
]);
// Simpan gambar QR Code ke disk server
$filePath = __DIR__ . '/output_qris_150k.png';
QrRenderer::toFile($payloadTetap, $filePath, 350, 15, 'M');
echo "File berhasil disimpan di: " . $filePath;
Kustomisasi visual penuh (warna hex kustom, quiet zone margin, resolusi, vektor SVG, dan direct HTTP stream):
<?php
require_once __DIR__ . '/autoload.php';
use Fajsenug\Qris\QrisConverter;
use Fajsenug\Qris\QrRenderer;
$qrisStatis = '00020101021126740025ID.CO.BANKNEOCOMMERCE.WWW011893600490594025951702120005600601850303UMI51550025ID.CO.BANKNEOCOMMERCE.WWW0215ID10232875503140303UMI5204541153033605802ID5905ULHEM6006KENDAL6105513556233052230017018004145344348160703T0163043A5F';
$nominal = 500000;
// 1. Dapatkan string dinamis
$payload = QrisConverter::convert($qrisStatis, $nominal);
// 2. Render ke Vektor SVG Murni (Ultra tajam, tak terbatas resolusi)
$svgData = QrRenderer::toSvg($payload, 400, 15, 'H', '#0F172A', '#FFFFFF');
// 3. Dapatkan Data URI SVG siap pakai pada tag <img>
$svgDataUri = QrRenderer::toSvgDataUri($payload, 400, 15, 'H', '#0F172A', '#FFFFFF');
// 4. Atau Stream langsung sebagai Response Image PNG di Controller/API
// QrRenderer::streamPng($payload, 400, 15, 'M');
// exit;
Contoh pemanggilan endpoint REST API (api.php) menggunakan JavaScript Modern (Fetch API):
// Request POST JSON ke api.php
fetch('api.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: 'convert',
qris: '00020101021126740025ID.CO.BANKNEOCOMMERCE.WWW011893600490594025951702120005600601850303UMI51550025ID.CO.BANKNEOCOMMERCE.WWW0215ID10232875503140303UMI5204541153033605802ID5905ULHEM6006KENDAL6105513556233052230017018004145344348160703T0163043A5F',
amount: 75000,
fee_fixed: 1000, // Opsional
qr_size: 350, // Resolusi gambar
qr_margin: 10, // Margin quiet zone
qr_ecc: 'M', // Error correction level (L, M, Q, H)
qr_fg: '#000000', // Warna QR
qr_bg: '#ffffff', // Warna Background
qr_format: 'png' // Format output ('png' atau 'svg')
})
})
.then(res => res.json())
.then(res => {
if (res.status === 'success') {
console.log('Payload Dinamis:', res.data.dynamic_payload);
console.log('Merchant:', res.data.merchant.merchant_name);
console.log('Total Bayar:', res.data.total_amount_formatted);
// Pasang langsung ke elemen gambar
document.getElementById('qr-img').src = res.data.qr_image;
}
});
Penggunaan baris perintah terminal (CLI) untuk otomasi dan skrip batch:
# 1. Konversi instan dengan nominal Rp 50.000
php cli.php --amount=50000
# 2. Konversi dengan biaya tetap Rp 1.500 dan simpan gambar ke file PNG
php cli.php --amount=75000 --fee-fixed=1500 --output=invoice_75k.png
# 3. Konversi dengan biaya persentase 0.7%
php cli.php --amount=100000 --fee-percent=0.7
# 4. Parsing dan inspeksi rincian tag EMVCo TLV
php cli.php --parse --qris="00020101021126..."
Ekosistem Alat Pembayaran & Pemindai Kode
Koleksi aplikasi open-source pelengkap dari DAWN WEBDEV untuk integrasi pembayaran dan decoding kode batang.
Generator & konversi QRIS statis ke dinamis dengan injeksi nominal, biaya admin, dan render Endroid PNG/SVG/WebP.
Scanner gambar QRIS, pembaca payload mentah, validasi checksum CRC-16, dan inspeksi rincian tag EMVCo TLV.
Universal scanner QR Code untuk membaca link URL, konfigurasi Wi-Fi, kontak vCard, chat WhatsApp, dan teks.
Multi-format barcode decoder untuk kode batang 1D (EAN-13, Code 128, UPC, Code 39) dan 2D matrix.