PHPackages                             ardhikaxx/qris-dynamic-gateway - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. ardhikaxx/qris-dynamic-gateway

ActiveLibrary

ardhikaxx/qris-dynamic-gateway
==============================

Enterprise QRIS EMVCo parser and generator for Laravel

v1.1.0(2d ago)02—0%1MITPHPPHP ^8.2CI passing

Since Aug 16Pushed 2d agoCompare

[ Source](https://github.com/ardhikaxx/qris-dynamic-gateway)[ Packagist](https://packagist.org/packages/ardhikaxx/qris-dynamic-gateway)[ RSS](/packages/ardhikaxx-qris-dynamic-gateway/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (4)Versions (3)Used By (0)

QRIS Dynamic Gateway (Laravel Package)
======================================

[](#qris-dynamic-gateway-laravel-package)

[![Tests](https://github.com/ardhikaxx/qris-dynamic-gateway/actions/workflows/tests.yml/badge.svg)](https://github.com/ardhikaxx/qris-dynamic-gateway/actions)[![Latest Version on Packagist](https://camo.githubusercontent.com/ee10225415ab547d202b8de1437387625edc5c30f5ff58d72261a1f0cefe6619/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f61726468696b6178782f717269732d64796e616d69632d676174657761792e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ardhikaxx/qris-dynamic-gateway)[![PHP Version Require](https://camo.githubusercontent.com/37d64d1392715e53dd86887bc0bc2b0e0fbffb9788306be68cc950d92109001d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f61726468696b6178782f717269732d64796e616d69632d676174657761793f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ardhikaxx/qris-dynamic-gateway)[![License](https://camo.githubusercontent.com/f8659cb67a2cd0cf66e60209e90786e36dd78d65fbd8619b9c6048637fd81a4a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f61726468696b6178782f717269732d64796e616d69632d676174657761793f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ardhikaxx/qris-dynamic-gateway)

Laravel Package berskala *Enterprise* yang dirancang khusus untuk memproses, memvalidasi, dan melakukan manipulasi (generate) standar QRIS EMVCo Indonesia.

Library ini sangat berguna untuk mengubah **QRIS Statis** (yang mengharuskan pelanggan mengetik nominal manual) menjadi **QRIS Dinamis** (nominal sudah otomatis terisi saat di-scan) hanya melalui satu baris kode, sehingga mempermudah integrasi sistem kasir (POS), *billing*, dan e-commerce di ekosistem Laravel Anda.

---

🌟 Penjelasan Fitur Lengkap
--------------------------

[](#-penjelasan-fitur-lengkap)

### 1. QRIS EMVCo Parser (Pemecah String QRIS)

[](#1-qris-emvco-parser-pemecah-string-qris)

String QRIS mentah terdiri dari ratusan karakter acak berdasarkan format EMVCo internasional (contoh: `000201010211...`).

- **Fungsi:** Library ini membaca karakter rumit tersebut dan memecahnya menggunakan standar **Tag, Length, Value (TLV)**.
- **Hasil:** String mentah secara instan diterjemahkan menjadi *Array Object PHP*. Anda bisa dengan sangat mudah mengambil informasi rahasia di baliknya seperti **Nama Toko (Merchant Name)**, **Kota**, maupun **ID Merchant** dari QRIS apa pun tanpa perlu melakukan pemotongan string secara manual.

### 2. QRIS Dynamic Generator (Injeksi Nominal Otomatis)

[](#2-qris-dynamic-generator-injeksi-nominal-otomatis)

Ini adalah fungsi sentral (*Core*) dari package ini.

- **Fungsi:** Menyuntikkan nominal tagihan ke dalam QRIS toko Anda. Anda cukup memberikan string QRIS toko biasa (Statis), dan package ini akan:
    1. Menyisipkan **Transaction Amount (Tag 54)**.
    2. Mengubah indikator metode inisiasi (Tag 01) dari `11` (Statis) menjadi `12` (Dinamis).
- **Hasil:** Sebuah string QRIS baru yang siap dibentuk menjadi gambar Barcode/QR Code. Saat pelanggan memindainya lewat M-Banking/E-Wallet, **nominal tagihan akan langsung terisi**.

### 3. Mesin Kriptografi CRC16 CCITT-False (Keamanan)

[](#3-mesin-kriptografi-crc16-ccitt-false-keamanan)

Keamanan adalah nyawa dari transaksi finansial. Di ujung setiap kode QRIS terdapat 4 karakter *checksum* keamanan.

- **Fungsi:** Package ini dibekali kalkulator keamanan bawaan yang diwajibkan oleh Bank Indonesia (Algoritma CRC16 CCITT-False).
- **Hasil:** Saat library ini mengubah nominal, ia akan otomatis **menghitung dan menyematkan 4 digit keamanan baru**. Hal ini memastikan QRIS yang dihasilkan dianggap *Legal* dan valid oleh sistem perbankan. Library ini juga otomatis menolak (*throw Exception*) apabila mencoba memproses QRIS palsu/rusak.

### 4. Integrasi Mulus di Ekosistem Laravel

[](#4-integrasi-mulus-di-ekosistem-laravel)

Dirancang 100% dengan gaya *programming* Laravel yang modern.

- **Fungsi:** Mendukung **Laravel 10, 11, 12, dan 13**. Dilengkapi *Service Provider* dan *Facade* bawaan.
- **Hasil:** Anda tidak perlu memanggil *class* yang panjang. Cukup panggil `Qris::generateDynamic()` di dalam controller manapun, dan library ini bekerja otomatis di latar belakang (*Plug and Play*).

---

📦 Kebutuhan Sistem (Requirements)
---------------------------------

[](#-kebutuhan-sistem-requirements)

- PHP &gt;= 8.2
- Laravel &gt;= 10.0 (Support Laravel 13)

---

🚀 Instalasi
-----------

[](#-instalasi)

Anda dapat menginstal package ini melalui Composer. Buka terminal proyek Laravel Anda dan jalankan:

```
composer require ardhikaxx/qris-dynamic-gateway
```

*(Catatan Pengembang: Jika Anda menghubungkannya ke repositori lokal, pastikan mendaftarkan symlink/path repository di composer.json).*

---

📖 Cara Penggunaan (Usage)
-------------------------

[](#-cara-penggunaan-usage)

Setelah terinstal, *Facade* `Qris` dapat langsung digunakan di mana saja.

### 1. Mengekstrak Data dari QRIS Statis (Parsing)

[](#1-mengekstrak-data-dari-qris-statis-parsing)

Berguna untuk memeriksa validitas QRIS dan mendapatkan data spesifik dari string QRIS hasil scan.

```
use Qris\DynamicGateway\QrisFacade as Qris;
use Qris\DynamicGateway\Exceptions\InvalidQrisException;

try {
    // Contoh string payload QRIS mentah
    $payload = "0002010102115405100005802ID5913MOCK MERCHANT6007JAKARTA6304...";

    // Parser akan mereturn DTO `QrisData` yang kaya fitur
    $qris = Qris::parse($payload);

    echo "Nama Merchant: " . $qris->getMerchantName(); // Output: MOCK MERCHANT
    echo "Kode Negara: " . $qris->getCountryCode();    // Output: ID
    echo "Nominal Tagihan: " . $qris->getTransactionAmount();
    echo "Apakah Dinamis?: " . ($qris->isDynamic() ? 'Ya' : 'Tidak');

} catch (InvalidQrisException $e) {
    // Exception akan terpanggil bila CRC16 salah, atau struktur TLV rusak
    echo "Error: " . $e->getMessage();
}
```

### 2. Mengubah QRIS Statis menjadi Dinamis (Generation)

[](#2-mengubah-qris-statis-menjadi-dinamis-generation)

Sangat ideal digunakan pada aplikasi Kasir/POS atau saat *Checkout* E-commerce, di mana pelanggan harus membayar nilai spesifik yang sudah ditentukan sistem.

```
use Qris\DynamicGateway\QrisFacade as Qris;

// 1. QRIS Statis sumber dari toko Anda
$staticQris = "0002010102115802ID5913MOCK MERCHANT6007JAKARTA6304ABCD";

// 2. Buat QRIS Dinamis dengan nominal tagihan Rp 75.500
$dynamicQris = Qris::generateDynamic($staticQris, 75500);

// 3. (Opsional) Tambahkan biaya Tip/Pajak sebesar Rp 2.000 (Tag 55 & 56)
$dynamicWithTip = Qris::generateDynamic($staticQris, 75500, [
    'tip_indicator' => '02',
    'tip_fixed' => '2000'
]);

echo $dynamicWithTip;
```

*Tip: Gabungkan hasil dari `$dynamicQris` dengan library seperti `simplesoftwareio/simple-qrcode` untuk merendernya menjadi gambar `.png` atau `.svg` di dalam view Blade Anda.*

### 3. Debugging via Terminal (Artisan Command)

[](#3-debugging-via-terminal-artisan-command)

Anda bisa membedah (*analyze*) string QRIS langsung dari terminal untuk keperluan debugging dengan perintah bawaan:

```
php artisan qris:analyze "0002010102115405100005802ID5913MOCK MERCHANT..."
```

Ini akan mencetak tabel rapi yang berisi `Merchant Name`, `Transaction Amount`, dan semua tag yang terekstrak beserta validitas CRC16-nya.

---

🧪 Pengujian (Testing)
---------------------

[](#-pengujian-testing)

Package ini dirancang untuk level *Enterprise* dan telah teruji ketat (Unit Testing) mematuhi kalkulasi perbankan. Untuk menjalankan seluruh *test suite* secara mandiri:

```
composer install
vendor/bin/phpunit
```

---

💖 Dukungan &amp; Donasi
-----------------------

[](#-dukungan--donasi)

Jika *library* ini bermanfaat bagi Anda dan telah menghemat banyak jam kerja Anda, Anda dapat menunjukkan apresiasi dengan memberikan traktiran kopi (donasi) melalui pemindaian kode QRIS di bawah ini:

[![QRIS Donasi](./qris.png)](./qris.png)

---

📝 Lisensi
---------

[](#-lisensi)

Proyek ini bersifat *open-source* dan didistribusikan di bawah [Lisensi MIT](https://opensource.org/licenses/MIT).

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance99

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

2d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1f57dff3149ed99d2e38e7807e7593f3c5974cd040cb512621ba81fd1cdbbef0?d=identicon)[ardhikaxx](/maintainers/ardhikaxx)

---

Top Contributors

[![ardhikaxx](https://avatars.githubusercontent.com/u/124660694?v=4)](https://github.com/ardhikaxx "ardhikaxx (7 commits)")

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/ardhikaxx-qris-dynamic-gateway/health.svg)

```
[![Health](https://phpackages.com/badges/ardhikaxx-qris-dynamic-gateway/health.svg)](https://phpackages.com/packages/ardhikaxx-qris-dynamic-gateway)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
