Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ php-qris Public

Proyek ini menyediakan klien PHP siap pakai untuk terhubung ke REST API InterActive QRIS. Klien ini dibangun di atas ay4t/php-rest-client, dilengkapi retry, timeout, logging, validasi, dan struktur yang mudah diintegrasikan ke aplikasi Anda.

ay4t/php-qris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧾 PHP QRIS Client

Proyek ini menyediakan klien PHP siap pakai untuk terhubung ke REST API InterActive QRIS. Klien ini dibangun di atas ay4t/php-rest-client, dilengkapi retry, timeout, logging, validasi, dan struktur yang mudah diintegrasikan ke aplikasi Anda.

🚀 Deskripsi

Ay4t\QRIS adalah namespace library yang menyediakan:

  • Generate QR (Create Invoice) untuk menampilkan QRIS dinamis.
  • Cek status pembayaran (Check Invoice Status).
  • Utilitas validasi response dan pengecekan expired (30 menit).
  • Konfigurasi aman via .env menggunakan vlucas/phpdotenv.
  • Logging ke berkas logs/qris-client.log.

Arsitektur inti berada pada:

  • src/Config/QrisSettings.php — membaca konfigurasi dari .env.
  • src/Service/QrisClient.php — operasi utama create dan check status.
  • src/Logger/QrisLogger.php — logger sederhana berbasis file.

📦 Instalasi

  1. Tambahkan dependency via Composer:
composer require ay4t/php-rest-client vlucas/phpdotenv
  1. Pastikan composer.json memiliki autoload PSR-4:
{
  "autoload": {
    "psr-4": {
      "Ay4t\\QRIS\\": "src/"
    }
  }
}

Lalu jalankan:

composer dump-autoload
  1. Siapkan file .env di root proyek Anda:
# QRIS base URI (opsional, default sudah di-set)
QRIS_BASE_URI=https://qris.interactive.co.id/restapi/qris

# Kredensial
QRIS_APIKEY=your_api_key_here
QRIS_MID=your_mid_here
# Opsional
QRIS_NMID=your_nmid_here

Catatan: Library juga mendukung fallback nama variabel .env berikut untuk kompatibilitas: api_key, mID, NMID.

🧑‍💻 Contoh Penggunaan (Kode)

<?php
require __DIR__ . '/vendor/autoload.php';

use Ay4t\QRIS\Service\QrisClient;
use Ay4t\RestClient\Exceptions\ApiException;

$client = new QrisClient();

try {
    // 1) Create Invoice (Generate QR)
    $create = $client->createInvoice('INV-20250917-001', 10000, 'no');
    $valid  = $client->validateCreateResponse($create);
    if (!$valid['valid']) {
        // Tangani invalid/expired
        var_dump($valid);
        exit;
    }

    $invoiceId  = (int)$create['data']['qris_invoiceid'];
    $qrisString = $client->getQrisContentFromCreateResponse($create);
    // Tampilkan $qrisString sebagai QR Code (gunakan library QR sesuai UI)

    // 2) Check Status
    $check = $client->checkStatus($invoiceId, 10000, date('Y-m-d'));
    if ($client->isPaid($check)) {
        // Update transaksi -> paid
    } else {
        // unpaid/failed -> lakukan retry sesuai rekomendasi dokumentasi
    }
} catch (ApiException $e) {
    error_log('API Error: ' . $e->getMessage());
} catch (Throwable $e) {
    error_log('Error: ' . $e->getMessage());
}

🖥️ Contoh Penggunaan (CLI)

Skrip CLI disediakan untuk uji cepat:

php bin/qris.php create INV-20250917-001 10000 no
php bin/qris.php status 413255111 10000 2025-09-17
  • Perintah create mengembalikan JSON berisi qris_content, qris_request_date, qris_invoiceid, qris_nmid ketika sukses.
  • Perintah status mengembalikan JSON status paid/unpaid sesuai respons API.

🔒 Praktik Keamanan & Rekomendasi

  • Simpan API key dan mID hanya di .env (jangan commit ke repository publik).
  • Gunakan retry moderat dan ikuti rekomendasi dokumentasi InterActive QRIS:
    • Tombol manual: timeout 15 detik, ulang 3x saat failed.
    • Cron: 60 detik sekali, max 30 kali.
  • Simpan qris_content, qris_request_date, dan qris_invoiceid segera setelah create-invoice.
  • Siapkan endpoint webhook di aplikasi Anda jika suatu saat provider menyediakan callback (saat ini dokumentasi publik InterActive QRIS menekankan polling).

🤝 Panduan Kontribusi

Kontribusi sangat kami hargai!

  • Fork repository ini.
  • Buat branch fitur: git checkout -b feat/nama-fitur.
  • Pastikan code style rapi, tambahkan DocBlock, dan sertakan test bila memungkinkan.
  • Ajukan Pull Request dengan deskripsi jelas tentang perubahan Anda.

Untuk diskusi teknis atau bug report, silakan gunakan issue tracker GitHub.

📄 Lisensi

Dirilis di bawah lisensi MIT. Lihat berkas LICENSE untuk detailnya.

About

Proyek ini menyediakan klien PHP siap pakai untuk terhubung ke REST API InterActive QRIS. Klien ini dibangun di atas ay4t/php-rest-client, dilengkapi retry, timeout, logging, validasi, dan struktur yang mudah diintegrasikan ke aplikasi Anda.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages