[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93887":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":15,"starSnapshotCount":15,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},93887,"gopay-api-gateaway","ahmadzakiyox\u002Fgopay-api-gateaway","ahmadzakiyox","API Gateway mandiri (Autonomous) berkinerja tinggi untuk memantau mutasi transaksi GoPay Merchant dan men-generate QRIS Dinamis (EMVCo) secara otomatis.","",null,"JavaScript",107,37,101,0,44.74,"MIT License",false,"main",true,[22,23,24,25,26],"gopay","gopay-merchant","gopay-qris","payment-gateway","qris","2026-09-21 04:01:26","# GoPay Merchant Gateway\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-18.x-339933?logo=nodedotjs&logoColor=white\" alt=\"Node.js\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FExpress-4.x-000000?logo=express&logoColor=white\" alt=\"Express\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAuth-OTP%20Based-00AED9\" alt=\"OTP Auth\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FQRIS-EMVCo-red\" alt=\"QRIS\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeploy-VPS%20%7C%20cPanel%20%7C%20Pterodactyl-orange\" alt=\"Deploy Options\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ft.me\u002Fahmadzakiyo\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Chat%20Owner-2CA5E0?logo=telegram&logoColor=white&style=for-the-badge\" alt=\"Chat Owner\" \u002F>\n  \u003C\u002Fa>\n  &nbsp;\n  \u003Ca href=\"https:\u002F\u002Ft.me\u002Fnuxysproject\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Channel%20Updates-2CA5E0?logo=telegram&logoColor=white&style=for-the-badge\" alt=\"Channel\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\nAPI Gateway self-hosted berbasis Node.js untuk otomatisasi cek transaksi dan cetak QRIS dinamis dari akun **GoPay \u002F GoFood Merchant** kamu.\n\n---\n\n> [!NOTE]\n> 💬 **HUBUNGI OWNER & BERGABUNG CHANNEL:**\n> - 👤 **Developer \u002F Owner:** [@ahmadzakiyo](https:\u002F\u002Ft.me\u002Fahmadzakiyo)\n> - 📢 **Channel Update & Project:** [@nuxysproject](https:\u002F\u002Ft.me\u002Fnuxysproject)\n\n> [!TIP]\n> 📣 **PENGUMUMAN & UPDATE TERBARU: Sistem Login OTP Terminal & Auto-Refresh Token**\n> Gateway ini sekarang menggunakan sistem autentikasi **OTP Terminal** (`node login.js`). Kamu tidak perlu lagi copy-paste cookie browser atau memasukkan password. Cukup masukkan nomor HP GoBiz & kode OTP 1 kali saja — token akan tersimpan dan **otomatis di-refresh oleh server di background** setiap 6 jam tanpa perlu login ulang!\n\n> [!CAUTION]\n> 🚨 **PERSYARATAN DEPLOYMENT (VPS \u002F cPanel \u002F Pterodactyl Panel)**\n> Gateway ini **dapat di-deploy di VPS, cPanel Hosting, maupun Pterodactyl Panel (Node.js Egg v18.x\u002Fv20.x)** yang memiliki penyimpanan permanen 24\u002F7.\n> **DILARANG MENGGUNAKAN HOSTING SERVERLESS GRATISAN** (seperti Render Free, Vercel, Netlify) karena container akan *sleep* dan menghapus file sesi (`.GOPAY_SESI_JANGAN_DIHAPUS.json`), yang mengakibatkan sesi hangus dan harus login OTP ulang.\n\n> [!WARNING]\n> ⚠️ **DISCLAIMER PROYEK TIDAK RESMI:**\n> Project ini **tidak berafiliasi** dengan PT GoTo Gojek Tokopedia Tbk \u002F GoPay. Gunakan dengan bijak. Polling yang terlalu agresif bisa memicu pembatasan akun. Risiko ditanggung pengguna sepenuhnya. Seluruh data berjalan 100% aman di server Anda sendiri tanpa dikirim ke pihak ketiga.\n\n---\n\n## ✨ Fitur Utama\n\n- 🔐 **Login OTP Terminal** — Login resmi via SMS\u002FWA (`node login.js`) menggunakan nomor HP GoBiz.\n- 🔄 **Auto-Refresh Token (Set-and-Forget)** — Token diperbarui otomatis di background. Login cukup **1 kali saja**.\n- 🧾 **QRIS Dinamis (EMVCo)** — Generate QRIS nominal custom dari QRIS statis merchant secara lokal dengan parser EMVCo presisi tinggi (CRC16).\n- 📱 **Halaman Checkout QRIS Interaktif** — UI web modern siap pakai dengan timer hitung mundur 5 menit, tombol cek manual anti-banned, & auto-polling opsional (8s).\n- ✅ **Cek Pembayaran Real-Time** — Cocokkan nominal + waktu transaksi secara otomatis. Setiap payment memiliki `trx_id` unik sehingga **dua payment nominal sama tidak akan saling klaim** (anti duplikat klaim per TRX-ID).\n- 📋 **Riwayat Mutasi Transaksi** — Ambil daftar mutasi QRIS\u002FGoPay\u002FKartu dalam rentang waktu tertentu.\n- 🌐 **Dua Cara Request (GET & POST)** — Bisa dipanggil via URL query di browser atau JSON body dari backend web store.\n- 🔒 **Proteksi API Key & Public QR API** — Endpoint backend dilindungi `API_KEY` rahasia, serta mendukung endpoint check status public aman untuk frontend UI.\n- 🐳 **Docker, PM2 & Pterodactyl Ready** — Siap di-deploy ke VPS Linux, cPanel, atau Pterodactyl Panel dalam hitungan menit.\n\n---\n\n## 💻 Persyaratan System\n\n- **VPS \u002F Dedicated Server** dengan Linux (Ubuntu 20.04\u002F22.04, Debian, AlmaLinux, dll) & Node.js ≥ 18.\n- Akun GoBiz \u002F GoFood Merchant aktif yang terdaftar dengan nomor HP.\n- QRIS statis dari aplikasi GoBiz (untuk fitur generate QRIS dinamis).\n\n---\n\n## 🛠️ Quick Start (Pengujian Lokal)\n\n### 1. Clone & Install Dependencies\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fahmadzakiyox\u002Fgopay-api-gateaway.git\ncd gopay-api-gateaway\nnpm install\n```\n\n### 2. Konfigurasi `.env`\nSalin template `.env.example` ke `.env`:\n```bash\ncp .env.example .env\n```\nIsi variabel di file `.env`:\n```env\nPORT=3000\nAPI_KEY=YOUR_API_KEY_HERE\nQRIS_STATIC=YOUR_QRIS_STATIC_HERE\nGOPAY_MERCHANT_ID=YOUR_MERCHANT_ID_HERE\n```\n\n### 3. Login OTP di Terminal (1 Kali Saja)\n```bash\nnode login.js\n```\n- Masukkan nomor HP GoBiz (contoh: `085119772671`).\n- Masukkan kode OTP (4 digit) yang dikirimkan via SMS\u002FWA.\n- Sesi login akan disimpan secara permanen di file `.GOPAY_SESI_JANGAN_DIHAPUS.json`.\n\n---\n\n## 🚀 Panduan Deploy Lengkap ke VPS (Production Setup)\n\nUntuk memastikan gateway berjalan **24\u002F7 non-stop** di VPS dan token auto-refresh bekerja dengan baik, ikuti langkah deploy di bawah ini:\n\n### 📍 Langkah 1: Install Node.js & Git di VPS\nJalankan perintah ini di terminal VPS kamu (contoh untuk Ubuntu\u002FDebian):\n```bash\n# Update package list & install Git\nsudo apt update && sudo apt install -y git curl\n\n# Install Node.js v20 LTS via NodeSource\ncurl -fsSL https:\u002F\u002Fdeb.nodesource.com\u002Fsetup_20.x | sudo -E bash -\nsudo apt install -y nodejs\n```\n\n### 📍 Langkah 2: Setup Project & Login OTP Pertama Kali\n```bash\n# Clone repository\ngit clone https:\u002F\u002Fgithub.com\u002Fahmadzakiyox\u002Fgopay-api-gateaway.git\ncd gopay-api-gateaway\n\n# Install dependencies\nnpm install\n\n# Buat & sesuaikan .env\ncp .env.example .env\nnano .env   # (isi API_KEY & QRIS_STATIC kamu)\n\n# Jalankan login OTP (masukkan no HP & OTP)\nnode login.js\n```\n\n---\n\n### 📍 Langkah 3: Pilih Metode Deploy Production\n\nKamu bisa memilih salah satu dari 2 metode deploy production berikut:\n\n#### 🟢 Metode A: Deploy Menggunakan PM2 (Sangat Direkomendasikan)\nPM2 adalah Process Manager untuk Node.js agar server otomatis hidup kembali jika terjadi crash atau VPS di-reboot.\n\n1. **Install PM2 secara global:**\n   ```bash\n   sudo npm install -g pm2\n   ```\n\n2. **Jalankan gateway dengan PM2:**\n   ```bash\n   pm2 start server.js --name \"gopay-gateway\"\n   ```\n\n3. **Simpan agar otomatis jalan saat VPS di-reboot:**\n   ```bash\n   pm2 save\n   pm2 startup\n   ```\n   *(Jalankan perintah yang dimunculkan oleh `pm2 startup` jika ada).*\n\n4. **Perintah Berguna PM2:**\n   - Cek status server: `pm2 status`\n   - Cek log real-time: `pm2 logs gopay-gateway`\n   - Restart server: `pm2 restart gopay-gateway`\n\n---\n\n#### 🐳 Metode B: Deploy Menggunakan Docker & Docker Compose\nJika VPS kamu sudah terinstall Docker:\n\n1. **Pastikan file `.env` dan `.GOPAY_SESI_JANGAN_DIHAPUS.json` sudah ada.**\n2. **Jalankan container di background:**\n   ```bash\n   docker compose up -d\n   ```\n3. **Cek status & log container:**\n   ```bash\n   docker compose logs -f\n   ```\n\n---\n\n### 🔒 (Opsional) Langkah 4: Setup Nginx Reverse Proxy & SSL HTTPS\n\nJika kamu ingin mengakses gateway via domain HTTPS (misal `https:\u002F\u002Fgopay.domainkamu.com`):\n\n```nginx\nserver {\n    server_name gopay.domainkamu.com;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\nGunakan **Certbot** untuk SSL gratis:\n```bash\nsudo apt install -y certbot python3-certbot-nginx\nsudo certbot --nginx -d gopay.domainkamu.com\n```\n\n## 🌐 Panduan Deploy ke cPanel Hosting (Setup Node.js App)\n\nBagi kamu yang menggunakan **cPanel Shared Hosting \u002F Web Hosting** (seperti Niagahoster, Hostinger cPanel, DomaiNesia, JagoanHosting, dll), ikuti panduan setup berikut:\n\n> [!IMPORTANT]\n> ⚠️ **WAJIB MENGGUNAKAN NODE.JS VERSION 18.x DI CPANEL!**\n> Jangan memilih Node.js 20.x di cPanel karena fitur internal WebAssembly (`undici`) di Node 20 akan menyebabkan error `RangeError: WebAssembly.instantiate(): Out of memory` akibat pembatasan Virtual Memory CloudLinux cPanel. **Gunakan versi Node.js 18.x.**\n\n### 📍 Langkah 1: Upload File ke cPanel\n1. Masuk ke **cPanel** -> **File Manager**.\n2. Buat folder baru (misal `gopay-gateway`) atau upload seluruh source code ke folder yang diinginkan.\n3. Pastikan file `.env` sudah ada dan diisi (salin dari `.env.example`).\n   - ⚠️ **Perhatian Port:** Jangan menyetel `PORT=443` atau `PORT=80` di `.env`. Biarkan `PORT=3000` atau hapus baris `PORT`. cPanel akan secara otomatis menangani SSL HTTPS domain kamu.\n\n### 📍 Langkah 2: Setup Aplikasi di cPanel\n1. Buka menu **Setup Node.js App** di cPanel.\n2. Klik **Create Application**.\n3. Isi konfigurasi sebagai berikut:\n   - **Node.js version:** Pilih **`18.x`** *(Wajib 18.x)*\n   - **Application mode:** `Production`\n   - **Application root:** Nama folder tempat upload (contoh: `gopay-gateway`)\n   - **Application URL:** Domain\u002Fsubdomain kamu (contoh: `gopay.domainkamu.com`)\n   - **Application startup file:** **`server.js`** *(Wajib diubah dari default app.js)*\n4. Klik **Create** di pojok kanan atas.\n\n### 📍 Langkah 3: Install Dependencies & Login OTP via Terminal cPanel\n1. Masuk ke menu **Terminal** di cPanel (atau SSH ke cPanel).\n2. Copy perintah pengaktifan virtualenv dari bagian atas halaman **Setup Node.js App** (contoh: `source \u002Fhome\u002Fuser\u002Fnodevenv\u002Fgopay-gateway\u002F18\u002Fbin\u002Factivate && cd \u002Fhome\u002Fuser\u002Fgopay-gateway`).\n3. Jalankan script otomatisasi `setup.sh`:\n   ```bash\n   bash setup.sh\n   ```\n   *Script ini akan otomatis meng-install dependencies dan memandu login OTP GoPay (`node login.js`).*\n\n4. Kembali ke menu **Setup Node.js App** di cPanel, lalu klik tombol **Restart**.\n5. Cek aplikasi di browser: `https:\u002F\u002Fgopay.domainkamu.com\u002Fhealth`.\n\n---\n\n## 🦖 Panduan Deploy ke Pterodactyl Panel (Bot \u002F App Hosting)\n\nBagi kamu yang menggunakan **Pterodactyl Panel** (panel hosting yang umum digunakan untuk Discord bot \u002F server Node.js), ikuti langkah-langkah berikut:\n\n> [!IMPORTANT]\n> 💡 **TIPS LOGIN OTP UNTUK PTERODACTYL:**\n> Karena konsol web Pterodactyl terkadang kurang responsif untuk input interaktif terminal (`node login.js`), disarankan untuk **melakukan login OTP 1x di PC lokal \u002F VPS terlebih dahulu**, kemudian mengunggah file `.GOPAY_SESI_JANGAN_DIHAPUS.json` yang dihasilkan ke File Manager Pterodactyl.\n\n### 📍 Langkah 1: Persiapkan Sesi Login (Lokal \u002F VPS)\n1. Jalankan `npm install` dan `node login.js` di komputer lokal atau VPS kamu.\n2. Masukkan nomor HP GoBiz & kode OTP 4-digit.\n3. Setelah berhasil login, file `.GOPAY_SESI_JANGAN_DIHAPUS.json` akan otomatis dibuat.\n\n### 📍 Langkah 2: Upload Files ke Pterodactyl\n1. Buka **Pterodactyl Panel** -> Pilih Server kamu -> Masuk ke **File Manager**.\n2. Upload seluruh file project (termasuk `server.js`, `sessionManager.js`, `package.json`, dll).\n3. Upload juga file `.GOPAY_SESI_JANGAN_DIHAPUS.json` yang sudah dibuat pada Langkah 1.\n4. Buat file `.env` di File Manager Pterodactyl:\n   ```env\n   PORT=3000\n   API_KEY=API_KEY_RAHASIA_KAMU\n   QRIS_STATIC=00020101021126...\n   GOPAY_MERCHANT_ID=MERCHANT_ID_KAMU\n   ```\n   *(Pterodactyl akan menyesuaikan port secara otomatis sesuai alokasi port server kamu).*\n\n### 📍 Langkah 3: Konfigurasi Startup & Console\n1. Masuk ke menu **Startup** di Pterodactyl Panel:\n   - Set **Startup Command**: `node server.js` atau `npm start`\n   - Set **JS File \u002F Entry File**: `server.js`\n2. Masuk ke menu **Console** Pterodactyl.\n3. Jalankan `npm install` jika package belum terinstall otomatis.\n4. Klik **Start** \u002F **Restart** server.\n\n### 📍 Langkah 4: Cek Status Server\nLihat log pada **Console**. Jika berhasil, akan muncul:\n```text\n[SERVER] Gateway running on port 3000\n[GOPAY-SESSION] Verification successful. Merchant name: TOKO KAMU\n```\nKamu bisa mengakses endpoint health melalui URL server Pterodactyl kamu (misal: `http:\u002F\u002FIP_PANEL:PORT\u002Fhealth`).\n\n---\n\n## 📡 API Reference\n\nSemua endpoint memerlukan autentikasi. Bisa lewat **Header** atau **Query Parameter**:\n\n```text\nHeader   : X-Api-Key: \u003CAPI_KEY>\nQuery    : ?api_key=\u003CAPI_KEY>\n```\n\n---\n\n### `GET \u002Ftoken-status` — Cek Status Sesi Token\nMemverifikasi apakah token GoPay Merchant masih aktif dan valid.\n```http\nGET http:\u002F\u002Fvps-ip:3000\u002Ftoken-status?api_key=RAHASIA\n```\n**Respon Sukses:**\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"token_status\": \"valid\",\n    \"message\": \"Token dan Sesi GoPay Merchant Aktif\"\n  }\n}\n```\n\n---\n\n### `GET \u002Fcreate-qris` — Buat QRIS Dinamis\nMembuat QRIS nominal custom dari QRIS statis secara *in-memory* (lokal). QR aktif selama **5 menit**.\n```http\nGET http:\u002F\u002Fvps-ip:3000\u002Fcreate-qris?amount=25000&api_key=RAHASIA\n```\n| Parameter | Tipe | Keterangan |\n|---|---|---|\n| `amount` | `number` | Nominal transaksi dalam Rupiah (wajib) |\n| `api_key` | `string` | API Key kamu |\n\n**Respon Sukses:**\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"qris_id\": \"abc123xyz\",\n    \"trx_id\": \"TRX-A3F8K2M9\",\n    \"qris_url\": \"http:\u002F\u002Fvps-ip:3000\u002Fqr\u002Fabc123xyz\",\n    \"qris_code\": \"00020101021126...\",\n    \"amount\": 25000,\n    \"expires_at\": \"2026-07-24T00:20:00.000Z\",\n    \"expires_in\": \"5 menit\"\n  }\n}\n```\n\n> [!TIP]\n> Simpan `trx_id` yang dikembalikan. Gunakan nilai ini sebagai parameter `trx_id` saat memanggil `\u002Fcheck-payment` agar dua payment dengan nominal sama tidak saling klaim transaksi satu sama lain.\n\n### `GET \u002Fqr\u002F:id` — Halaman Pembayaran QRIS Interaktif (Web UI)\nMembuka halaman HTML pembayaran QRIS yang interaktif. Dilengkapi dengan:\n- **Tombol Cek Manual (\"🔄 Cek Status Pembayaran\")** — *(Paling Aman \u002F Anti-Banned)* Pengecekan 1x klik instan setelah pembeli transfer.\n- **Hitung Mundur Kedaluwarsa 5 Menit** — Countdown visual batas waktu transaksi.\n- **Checkbox Toggle Auto-Polling (Opsional)** — Off secara default untuk proteksi rate-limit. Jika dicentang pembeli, mengecek status setiap 8 detik di background.\n- Format gambar mentah bisa diakses dengan query `?format=raw` atau `?raw=1`.\n\n---\n\n### `GET \u002Fapi\u002Fqr-status\u002F:id` — Status Check Public (Tanpa API Key)\nEndpoint public yang digunakan oleh halaman HTML `\u002Fqr\u002F:id` untuk memeriksa status pembayaran tanpa perlu mengekspos `API_KEY` di browser pembeli.\n\n```http\nGET http:\u002F\u002Fvps-ip:3000\u002Fapi\u002Fqr-status\u002Fabc123xyz\n```\n\n---\n\n### `GET \u002Fcheck-payment` — Cek Pembayaran Masuk (Backend \u002F Server-to-Server)\nMencari transaksi yang cocok berdasarkan nominal dan timestamp. Setiap transaksi hanya bisa diklaim 1x per `trx_id` (anti klaim ganda, termasuk untuk dua payment dengan nominal sama).\n```http\nGET http:\u002F\u002Fvps-ip:3000\u002Fcheck-payment?amount=25000&trx_id=TRX-A3F8K2M9&api_key=RAHASIA\n```\n| Parameter | Tipe | Default | Keterangan |\n|---|---|---|---|\n| `amount` | `number` | — | Nominal transaksi yang dicari (wajib) |\n| `trx_id` | `string` | — | TRX-ID dari `\u002Fcreate-qris` — scope klaim agar tidak tabrakan dengan payment nominal sama (sangat direkomendasikan) |\n| `startTime` | `string` | 24 jam lalu | Timestamp ISO awal pencarian |\n| `api_key` | `string` | — | API Key kamu |\n\n**Respon Sukses (Lunas):**\n```json\n{\n  \"success\": true,\n  \"paid\": true,\n  \"transaction\": {\n    \"transaction_id\": \"gopay-internal-tx-id\",\n    \"order_id\": \"GOPAY-1234567890\",\n    \"amount\": 25000,\n    \"payer_issuer\": \"GoPay \u002F BCA\",\n    \"payment_type\": \"QRIS\",\n    \"transaction_time\": \"2026-07-24T00:15:12.000Z\"\n  }\n}\n```\n\n---\n\n### `GET \u002Ftransactions` — Riwayat Mutasi Transaksi\n```http\nGET http:\u002F\u002Fvps-ip:3000\u002Ftransactions?api_key=RAHASIA\n```\n| Parameter | Tipe | Default | Keterangan |\n|---|---|---|---|\n| `startTime` | `unix timestamp` | 3 hari lalu | Waktu awal (dalam detik) |\n| `endTime` | `unix timestamp` | Sekarang | Waktu akhir (dalam detik) |\n| `pageSize` | `number` | `20` | Jumlah transaksi yang diambil |\n\n---\n\n### `GET \u002Fapi\u002Flogs` — Log Aktivitas Gateway\n```http\nGET http:\u002F\u002Fvps-ip:3000\u002Fapi\u002Flogs?api_key=RAHASIA\n```\n\n---\n\n## 🌐 Cara Request: GET vs POST\n\nGateway ini sangat fleksibel untuk diintegrasikan ke sistem toko online (PHP, Laravel, Node.js, Python, WordPress, dll):\n\n| Metode | Contoh Pemanggilan |\n|---|---|\n| **GET (URL Query)** | `http:\u002F\u002Fvps-ip:3000\u002Fcreate-qris?amount=25000&api_key=RAHASIA` |\n| **POST (JSON Body)** | `POST \u002Fcreate-qris` dengan Body: `{\"amount\": 25000}` & Header `X-Api-Key` |\n\n---\n\n## 📁 Struktur Project\n\n```\ngopay-gateway\u002F\n├── server.js                         # Express API Server & Logika Gateway\n├── login.js                          # CLI Login OTP Interaktif Terminal (Encrypted)\n├── sessionManager.js                 # Auto-Refresh Sesi & Token Manager (Encrypted)\n├── setup.sh                          # Script Omatisasi Install & Setup (Linux\u002FcPanel)\n├── .env                              # File Konfigurasi Rahasia (Local)\n├── .env.example                      # Template Konfigurasi\n├── .GOPAY_SESI_JANGAN_DIHAPUS.json   # File Sesi Aktif (Wajib Ada di VPS\u002FcPanel)\n├── Dockerfile                        # Konfigurasi Docker\n└── docker-compose.yml                # Konfigurasi Docker Compose\n```\n\n---\n\n## 💬 Kontak & Komunitas\n\nAda pertanyaan, error, atau mau diskusi? Hubungi langsung:\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ft.me\u002Fahmadzakiyo\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Chat%20Owner-2CA5E0?logo=telegram&logoColor=white&style=for-the-badge\" alt=\"Chat Owner\" \u002F>\n  \u003C\u002Fa>\n  &nbsp;\n  \u003Ca href=\"https:\u002F\u002Ft.me\u002Fnuxysproject\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Channel%20Updates-2CA5E0?logo=telegram&logoColor=white&style=for-the-badge\" alt=\"Channel\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n- 👤 **Owner \u002F Developer:** [@ahmadzakiyo](https:\u002F\u002Ft.me\u002Fahmadzakiyo)\n- 📢 **Channel (Update & Project):** [@nuxysproject](https:\u002F\u002Ft.me\u002Fnuxysproject)\n\n---\n\n## ☕ Dukung Project Ini\n\nKalau project ini bermanfaat buat kamu, traktir saya kopi ya! ☕\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fahmadzakiyox\u002FDB\u002Fmain\u002F6269360055874426106_121.jpg\" alt=\"QRIS Donasi ahmadzakiyo\" width=\"250\" \u002F>\n  \u003Cbr\u002F>\n  \u003Csub>Nominal bebas — terima kasih banyak! 🙏\u003C\u002Fsub>\n\u003C\u002Fp>\n","这是一个面向 GoPay 商户的自托管 API 网关，用于自动化监控交易流水并动态生成符合 EMVCo 标准的 QRIS 二维码。核心功能包括基于短信\u002FWhatsApp OTP 的终端登录、后台自动刷新访问令牌、本地化 QRIS 动态生成（支持自定义金额与 CRC16 校验）、以及开箱即用的交互式网页收银界面。技术上基于 Node.js 18+ 与 Express 构建，依赖持久化存储保存会话，不依赖第三方服务。适用于中小商户、独立开发者或 SaaS 集成方在自有 VPS\u002FcPanel\u002FPterodactyl 环境中部署支付自动化流程。",2,"2026-07-27 02:30:05","CREATED_QUERY"]