Source Code Self-hosted Payment Gateway QRIS GoPay Merchant - Main Product Image

Source Code Self-hosted Payment Gateway QRIS GoPay Merchant

19 Views
Source Code
#source code #gopay merchant #api gopay merchant #fastify #svelte #nodejs

Source code self-hosted payment gateway menggunakan akun GoPay Merchant. Dirancang untuk kebutuhan sistem pembayaran yang memerlukan alur pembayaran seperti payment gateway pada umumnya dengan validasi transaksi otomatis secara realtime.

Item Details

Cara Kerja Singkat

  1. Create payment melalui API → sistem langsung menghasilkan QRIS dinamis (string dan PNG) secara instan.
  2. Customer melakukan pembayaran dengan memindai QRIS tersebut.
  3. Sistem mendeteksi settlement secara otomatis → status transaksi berubah menjadi "Paid" dan webhook terkirim secara otomatis.

Fitur Utama

  1. Pembuatan Transaksi
  • Pembuatan transaksi melalui REST API yang langsung menghasilkan QRIS dinamis (string dan PNG) secara instant.
  • Dua mode nominal: client-managed (nominal ditentukan sepenuhnya oleh pengguna) dan server-managed (nominal dasar ditambah kode unik 0–999 secara otomatis).
  1. Deteksi Pembayaran & Settlement
  • Deteksi pembayaran otomatis melalui poller yang mengambil mutasi langsung dari API GoPay Merchant.
  • Pencocokan berbasis nominal dengan toleransi tertentu; setiap transaksi hanya dapat menyelesaikan satu pembayaran untuk mencegah double-settle.
  • Auto-expire transaksi yang tidak dibayar dalam durasi tertentu, disertai pengiriman webhook payment.expired.
  1. Webhook & Notifikasi
  • Pengiriman webhook/callback pada kondisi paid dan expired, disertai signature HMAC-SHA256 (X-Signature) dan header X-Event.
  • Retry webhook otomatis hingga 5 kali dengan backoff 1–60 detik, setiap percobaan tercatat dalam log, serta tersedia opsi resend manual melalui panel.
  1. Panel Admin
  • Panel admin dengan tampilan premium, terinspirasi dari dashboard modern, sepenuhnya responsif termasuk tampilan mobile.
  • Update status transaksi secara realtime menggunakan Server-Sent Events (SSE) tanpa perlu memuat ulang halaman.
  • Manajemen API key lengkap dengan paginasi dan filter status (Active/Revoked/All).
  • Paginasi global diterapkan pada seluruh tabel data (Payments, Transactions, API Keys).
  • Halaman Merchant Profile menampilkan informasi lengkap merchant, QRIS, ASPI, dan settlement, dengan sinkronisasi otomatis static QRIS dari profil GoBiz.
  1. Keamanan & Autentikasi
  • Autentikasi menggunakan API key untuk endpoint pembayaran.
  • Login administrator dilengkapi rate limiter berbasis IP (mencegah lockout akibat serangan DoS).
  • Token GoPay Merchant disimpan dalam bentuk terenkripsi (AES-256-GCM).
  1. Lainnya
  • Mendukung berbagai zona waktu (WIB/WITA/WIT/UTC).
  • Dokumentasi API lengkap, mencakup seluruh endpoint dengan contoh request/response, spesifikasi webhook (payload, header, cara verifikasi signature) beserta contoh handler dalam Node.js, PHP, dan Python, dilengkapi tabel error code dan aturan autentikasi.

Teknologi yang Digunakan

  • Backend: Node.js (ESM) dengan Fastify v5
  • Panel: SvelteKit dan Tailwind CSS v4 (native Vite plugin), Vite v8
  • Database: SQLite (better-sqlite3 v12, mode WAL)
  • Koneksi ke GoPay Merchant: native fetch
  • Autentikasi dan kriptografi: scrypt, SHA-256, AES-256-GCM, HMAC-SHA256
  • Realtime: Server-Sent Events (SSE)
  • Deployment: PM2 dan Nginx (opsional)

Cocok Digunakan Untuk

  • Integrasi pembayaran QRIS ke aplikasi atau website sendiri (SaaS, membership, langganan)
  • Layanan top-up otomatis: game, pulsa, e-wallet, atau voucher
  • Toko online dengan halaman checkout custom
  • Sistem kasir/POS yang membutuhkan QRIS dinamis per-transaksi
  • Bot (Telegram/WhatsApp/Discord) yang menerima pembayaran dan membutuhkan callback otomatis
  • Sistem deposit/saldo yang harus terverifikasi otomatis saat pembayaran masuk
  • Layanan donasi atau penggalangan dana pribadi
  • Backend internal yang ingin menerima pembayaran tanpa biaya per-transaksi dari payment gateway pihak ketiga

Keunggulan

  • Menggunakan shared adaptive poller: hanya satu poller untuk seluruh transaksi, aktif hanya ketika terdapat pembayaran pending, dan berhenti otomatis saat idle sehingga hemat resource.
  • Poll pertama langsung dijalankan begitu transaksi dibuat, tanpa perlu menunggu satu interval penuh.
  • Interval polling dapat diubah melalui panel tanpa perlu restart proses.
  • Keunikan nominal antartransaksi pending dijaga secara atomik di level database sehingga aman dari race condition.
  • Tanpa browser maupun Playwright sehingga ringan dan dapat berjalan pada VPS dengan spesifikasi rendah.
  • Panel menerapkan pola BFF (Backend-for-Frontend); cookie session dan API key tidak pernah terekspos ke browser.
  • Dilengkapi test suite lengkap (548 backend tests dan 49 frontend tests) untuk menjaga fungsi inti tetap berjalan dengan baik.
  • Storage-agnostic (DAL terpisah) sehingga mudah dimigrasikan dari SQLite ke database lain.
  • Auto-migration saat startup (bersifat non-destructive), sehingga aman digunakan saat melakukan pembaruan tanpa risiko kehilangan data.

Contoh Output (Webhook Payload)

{
  "event": "payment.paid",
  "data": {
    "id": "trx_9f21ac",
    "status": "paid",
    "amount": 15578,
    "settled_at": "2026-07-06T10:42:11+07:00",
    "settlement": {
      "reference": "FTSCY/WS95031",
      "sender": "MOH ALI",
      "matched_amount": 15578
    }
  }
}

(header: X-Signature, X-Event: payment.paid)

Arsitektur

flowchart LR
  subgraph Client["Your system"]
    C1[POST /payment] --> API
    WH[(Webhook receiver)]
  end

  subgraph Backend["Backend — Fastify (port 3000)"]
    API["REST API<br/>+ API-key auth"]
    SVC["Payment Service<br/>lifecycle + matching"]
    POLL["Adaptive Shared Poller"]
    WHD["Webhook Dispatcher<br/>HMAC + retry"]
    DAL[("SQLite DAL<br/>WAL")]
    BUS[("Event Bus → SSE")]
    GB["GoBiz Client<br/>fetch, no curl"]
  end

  subgraph Panel["Admin Panel — SvelteKit (port 3001)"]
    UI["Dashboard / Create / Payments<br/>Transactions / API Keys / Config / Docs"]
  end

  API --> SVC --> DAL
  POLL -->|getRecentTransactions| GB --> GoBiz[(GoBiz / GoPay Merchant API)]
  POLL --> SVC
  SVC -->|paid / expired| WHD --> WH
  SVC --> BUS
  UI -->|BFF proxy| API
  UI -->|EventSource| BUS

⚠️ Disclaimer

  • Produk ini menggunakan API resmi GoPay Merchant (GoBiz), bukan scraping maupun automation browser.
  • Pembeli bertanggung jawab penuh atas penggunaan akun GoPay Merchant sesuai ketentuan yang berlaku.
  • Source code disediakan dalam kondisi "as is." Pembaruan minor diberikan secara lifetime, sedangkan pembaruan major tersedia hingga 3 bulan setelah pembelian.

Change Log

v2.0.0

2026-07-07
Hahaww

Test

test
Total Price
Rp 2.500.000 Save Rp 500.000
Rp 2.000.000
Share to friends
WA

Product Information

  • Version
    v2.0.0