nodev/mutaku

Package for getting mutations from OrderKuota QRIS Transactions (Unofficial)

Installs: 5

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 0

Forks: 1

Open Issues: 0

pkg:composer/nodev/mutaku

2.0.0 2025-07-11 01:07 UTC

This package is not auto-updated.

Last update: 2025-12-12 03:21:01 UTC


README

PHP Version License Laravel PHP Native Downloads

Package PHP untuk mengambil data mutasi, saldo, dan gambar QRIS dari OrderKuota secara mudah (Non-Resmi). Mendukung Laravel dan PHP Native.

✨ Fitur

  • 🏦 Ambil Data Mutasi - Riwayat transaksi QRIS dengan filter tanggal
  • 💰 Cek Saldo - Saldo QRIS real-time
  • 📱 Gambar QRIS - URL gambar QRIS untuk ditampilkan
  • 🚀 Multi Environment - Support Laravel dan PHP Native
  • 📅 Filter Tanggal - Filter transaksi berdasarkan range tanggal
  • 💳 Filter Status Transaksi - Filter status transaksi incoming atau outgoing
  • 📄 Pagination - Support pagination untuk data yang banyak
  • 🔧 Easy Setup - Instalasi dan konfigurasi yang mudah

📄 Requirements

  • PHP >= 7.4
  • ext-curl
  • ext-json
  • ext-openssl
  • vlucas/phpdotenv

🔑 Cara Mendapatkan Auth Token

Untuk mendapatkan Auth Token, silakan mengikuti tutorial berikut.

📦 Instalasi

Via Composer

composer require nodev/mutaku

⚙️ Konfigurasi

1. Laravel

Publish Config

php artisan vendor:publish --tag=mutaku-config

Set Environment Variables

Tambahkan ke file .env:

ORDERKUOTA_AUTH_TOKEN=your_auth_token_here
ORDERKUOTA_ACCOUNT_USERNAME=your_username_here

2. PHP Native

Buat file .env atau set environment variables

ORDERKUOTA_AUTH_TOKEN=your_auth_token_here
ORDERKUOTA_ACCOUNT_USERNAME=your_username_herr

Atau konfigurasi manual

<?php
require_once 'vendor/autoload.php';

use Nodev\Mutaku\Config;

Config::initialize(); // Load dari .env
// atau
Config::load([
    'authToken' => 'your_auth_token_here',
    'accountUsername' => 'your_username_here',
]);

🚀 Penggunaan

1. Ambil Data Mutasi

Method Core::getMutations() menerima parameter berikut secara berurutan:

  1. fromDate Tanggal mulai filter mutasi (default: 30 hari terakhir).
  2. toDate Tanggal akhir filter mutasi (default: hari ini).
  3. page Untuk pagination, default halaman 1.
  4. filterOut Jika true, hanya menampilkan transaksi masuk (IN). Jika false atau tidak diisi, menampilkan semua status transaksi.

Semua parameter bersifat opsional, Anda tidak perlu mengisi semuanya.

Contoh penggunaan:

use Nodev\Mutaku\Core;

$result = Core::getMutations([
  'fromDate' => '01-01-2025', // Tanggal awal mutasi
  'toDate' => '31-01-2025', // Tanggal akhir mutasi
  'page' => 1, // Page
  'filterOut' => true // Hanya menampilkan status transaksi IN
]);

if ($result['error']) {
   echo "Error: " . $result['message'];
} else {
   echo "Data: " . json_encode($result['data']);
}

2. Cek Saldo QRIS

use Nodev\Mutaku\Core;

$result = Core::getBalance();

if ($result['error']) {
    echo "Error: " . $result['message'];
} else {
    echo "Saldo: " . $result['balance'];
}

3. Ambil Gambar QRIS

use Nodev\Mutaku\Core;

$result = Core::getImage();

if ($result['error']) {
    echo "Error: " . $result['message'];
} else {
    echo "URL Gambar: " . $result['image_url'];
}

📅 Format Tanggal

Package ini menggunakan format tanggal d-m-Y (contoh: 31-12-2024).

// ✅ Benar
$result = Core::getMutations('01-01-2025', '31-01-2025');

// ❌ Salah
$result = Core::getMutations('2025-01-01', '2025-01-31');
$result = Core::getMutations('01/01/2025', '31/01/2025');

📊 Format Response

Semua method mengembalikan array dengan format yang konsisten:

Success Response

[
    'error' => false,
    'data' => [...] // atau 'balance' => '...', 'image_url' => '...'
]

Example Success Response

1. Get Mutations

All Transaction

{
  "error": false,
  "date": "10-06-2025 to 10-07-2025",
  "filter_out": false,
  "data": {
    "success": true,
    "qris_history": {
      "success": true,
      "total": 2,
      "page": 1,
      "pages": 1,
      "results": [
        {
          "id": 157XXXXXX,
          "debet": "1.000",
          "kredit": "1.000",
          "saldo_akhir": "1.010",
          "keterangan": "Pencairan Saldo R#20XXX",
          "tanggal": "10/07/2025 16:43",
          "status": "OUT",
          "fee": "",
          "brand": {
            "name": "Orderkuota",
            "logo": "https://app.orderkuota.com/assets/qris/orderkuota.png"
          }
        },
        {
          "id": 156XXXXXX,
          "debet": "0",
          "kredit": "1.000",
          "saldo_akhir": "2.710",
          "keterangan": "NOBU / JOHN DOE      ",
          "tanggal": "08/07/2025 22:33",
          "status": "IN",
          "fee": "",
          "brand": {
            "name": "BCA",
            "logo": "https://app.orderkuota.com/assets/qris/bca.png"
          }
        }
      ]
    }
  }
}

**IN Transaction (filterOut = true)

{
  "error": false,
  "date": "10-06-2025 to 10-07-2025",
  "filter_out": false,
  "data": {
    "success": true,
    "qris_history": {
      "success": true,
      "total": 2,
      "page": 1,
      "pages": 1,
      "results": [
        {
          "id": 156XXXXXX,
          "debet": "0",
          "kredit": "1.000",
          "saldo_akhir": "2.710",
          "keterangan": "NOBU / JOHN DOE      ",
          "tanggal": "08/07/2025 22:33",
          "status": "IN",
          "fee": "",
          "brand": {
            "name": "BCA",
            "logo": "https://app.orderkuota.com/assets/qris/bca.png"
          }
        }
      ]
    }
  }
}

2. Get Balance

{
  "error": false,
  "balance": "Rp 1.010"
}

3. Get Image

{
  "error": false,
  "image_url": "https://qris.orderkuota.com/qrnobu/1554446-29b8594e1aa4c23ac999XXXXXXXXXXXXXXXXXXXX-QR.png"
}

Error Response

[
    'error' => true,
    'message' => 'Error description'
]

🔧 Troubleshooting

1. "Invalid date format"

Pastikan format tanggal benar (d-m-Y)

$result = Core::getMutations('31-12-2024', '01-01-2025');

2. "Config not loaded"

Pastikan telah set environment variables, tambahan khusus PHP Native yaitu initialize config

Config::initialize();

3. "User tidak ditemukan dan/ Token tidak benar"

Pastikan auth token dan username di environment variables berikut sudah tepat

ORDERKUOTA_AUTH_TOKEN=
ORDERKUOTA_ACCOUNT_USERNAME=

4. "Parameter tidak benar"

Pastikan tidak ada kesalahan dalam penulisan environment variables dan tidak kosong

ORDERKUOTA_AUTH_TOKEN=
ORDERKUOTA_ACCOUNT_USERNAME=

🐞 Lapor Issues

Jika Anda menemukan bug, masalah, atau memiliki saran fitur, silakan buat issue baru di GitHub. Sertakan detail troubleshooting yang telah dilakukan, pesan error, dan environment (native/laravel & versi) yang digunakan agar kami dapat membantu lebih cepat.

📝 License

Package ini menggunakan MIT License.

⚠️ Disclaimer

Package ini tidak resmi dan tidak berafiliasi dengan OrderKuota. Gunakan dengan risiko sendiri dan patuhi terms of service OrderKuota.

Di coding oleh Fieza Ghifari & Dio Rizqi