majopay/qris

QRIS Dynamic Generator - Konversi QRIS statis ke dinamis dengan nominal

Maintainers

Package info

github.com/rhmdarif/majopay-qris

pkg:composer/majopay/qris

Statistics

Installs: 23

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-01-10 15:49 UTC

This package is auto-updated.

Last update: 2026-03-10 16:09:00 UTC


README

Library PHP untuk mengkonversi QRIS statis menjadi QRIS dinamis dengan nominal transaksi.

Fitur

  • Konversi QRIS statis ke dinamis dengan nominal
  • Generate QR code image dengan template background
  • Parsing QRIS dari gambar QR code
  • Format mata uang Rupiah
  • Validasi CRC16 otomatis

Persyaratan

  • PHP >= 8.1
  • Extension GD
  • Extension mbstring

Instalasi

composer require majopay/qris

Atau clone repository ini:

git clone https://github.com/rhmdarif/majopay-qris.git
cd majopay-qris
composer install

Penggunaan

1. Generate QRIS Dinamis

use MajopayQris\QrisGenerator;

$qrisStatis = "00020101021126570011ID.DANA..."; // QRIS statis Anda

$generator = new QrisGenerator();
$qrisDinamis = $generator
    ->setQrisData($qrisStatis)
    ->setAmount(50000) // Nominal dalam Rupiah
    ->generate();

echo $qrisDinamis;

2. Generate QR Code Image

use MajopayQris\QrisImageGenerator;

$imageGenerator = new QrisImageGenerator('template.jpg');

// Simpan ke file
$imagePath = $imageGenerator
    ->setOutputPath('output/qris.png')
    ->generate($qrisDinamis);

// Atau dapatkan sebagai base64
$base64 = $imageGenerator->generate($qrisDinamis);

3. Parsing QRIS dari Gambar

use MajopayQris\QrisParser;

// Dari file gambar
$qrisData = QrisParser::parseFromImage('qris.jpg');

// Dari base64
$qrisData = QrisParser::parseFromBase64($base64String);

4. Format Rupiah

use MajopayQris\RupiahFormatter;

echo RupiahFormatter::format(50000);           // "50.000"
echo RupiahFormatter::formatWithPrefix(50000); // "Rp 50.000"

$angka = RupiahFormatter::parseToNumber("1.500.000"); // 1500000

Struktur Proyek

majopay-qris/
├── src/
│   ├── CRC16.php              # Kalkulasi checksum CRC16-CCITT
│   ├── QrisGenerator.php      # Generator QRIS dinamis
│   ├── QrisImageGenerator.php # Generator gambar QR code
│   ├── QrisParser.php         # Parser QRIS dari gambar
│   └── RupiahFormatter.php    # Utilitas format Rupiah
├── output/                    # Folder output gambar
├── composer.json
└── example.php                # Contoh penggunaan

Batasan

  • Nominal maksimal: Rp 10.000.000
  • Nominal minimal: Rp 1
  • Format QRIS: EMV-compliant dengan kode negara Indonesia (5802ID)

Cara Kerja

  1. Input: QRIS statis (format 010211)
  2. Proses:
    • Hapus CRC dari QRIS statis
    • Ubah identifier dari 010211 ke 010212
    • Sisipkan tag nominal (54 + panjang + nilai)
    • Hitung ulang CRC16
  3. Output: QRIS dinamis dengan nominal yang valid

Dependencies

Lisensi

MIT License

Kontribusi

Kontribusi sangat diterima! Silakan buat pull request atau laporkan issue.