Halo shabat blog saya yg setia sebelum melangkah pada pembahasan selanjutnya di sini adalah lanjutan postingan sebelumnya tentang Payment Gateway dan kali ini kita akan membahas tentang sistem Arsitektur Nya Payment Gateway itu sendiri,dan perlu di ingat ini bukan sekadar API “bayar sekarang”. Sistemnya harus tahan jutaan transaksi, aman, dan patuh regulasi dari . Jadi kita bahas arsitektur server, komponen sistem, lalu contoh source code API.
1. Arsitektur Sistem Payment Gateway
Gateway modern biasanya pakai microservices architecture. Kalau masih monolith, siap-siap servermu ngos-ngosan saat trafik naik.
Struktur umum:
Client (Website / Mobile App)
│
▼
API Gateway
│
▼
Auth Service
│
▼
Transaction Service
│
├── Payment Processor
├── Fraud Detection
├── Bank Connector
└── Notification Service
│
▼
Database Cluster
│
▼
Settlement System
Penjelasan komponen:
API Gateway
Pintu masuk semua request merchant.
Auth Service
Validasi API key merchant.
Transaction Service
Mengelola transaksi pembayaran.
Payment Processor
Memproses metode pembayaran (VA, QRIS, kartu).
Fraud Detection
Mendeteksi transaksi mencurigakan.
Bank Connector
Menghubungkan gateway ke bank.
Settlement System
Mengirim dana ke merchant.
2. Infrastruktur Server
Payment gateway tidak boleh mati. Kalau mati 5 menit saja, merchant bisa panik.
Contoh stack produksi:
Cloud
AWS / Google Cloud
Container
Docker
Kubernetes
Database
PostgreSQL
Redis
Message Queue
Kafka
RabbitMQ
Load Balancer
NGINX
Cloud Load Balancer
Monitoring
Prometheus
Grafana
3. Desain Database
Database harus mampu menangani jutaan transaksi per hari.
Tabel Merchant
CREATE TABLE merchants (
id SERIAL PRIMARY KEY,
merchant_name VARCHAR(255),
api_key VARCHAR(255),
status VARCHAR(50),
created_at TIMESTAMP
);
Tabel Transaksi
CREATE TABLE transactions (
id SERIAL PRIMARY KEY,
merchant_id INT,
amount DECIMAL,
payment_method VARCHAR(50),
status VARCHAR(50),
created_at TIMESTAMP
);
Tabel Pembayaran
CREATE TABLE payments (
id SERIAL PRIMARY KEY,
transaction_id INT,
bank VARCHAR(50),
va_number VARCHAR(50),
status VARCHAR(50)
);
4. Struktur API Payment Gateway
API adalah jantung gateway.
Contoh endpoint:
POST /v1/payment/create
GET /v1/payment/status
POST /v1/payment/cancel
POST /v1/webhook
5. Contoh Source Code API (NodeJS)
Kita buat contoh payment create API sederhana.
const express = require("express");
const app = express();
app.use(express.json());
app.post("/v1/payment/create", (req, res) => {
const amount = req.body.amount;
const method = req.body.payment_method;
const transaction = {
id: "TXN" + Date.now(),
amount: amount,
method: method,
status: "PENDING"
};
res.json({
status: "success",
transaction: transaction
});
});
app.listen(3000, () => {
console.log("Payment API running");
});
Ini tentu saja versi bayi dari gateway.
6. Sistem Virtual Account Generator
Setiap transaksi biasanya memiliki VA unik.
Contoh generator:
function generateVA(bankCode){
const random = Math.floor(Math.random()*1000000);
return bankCode + random;
}
Contoh hasil:
BCA123456
7. Webhook System
Webhook memberi tahu merchant bahwa pembayaran berhasil.
Endpoint webhook merchant:
POST https://merchant.com/payment/callback
Payload:
{
"transaction_id": "TX123",
"status": "PAID"
}
Kode webhook:
const axios = require("axios");
async function sendWebhook(url, data){
await axios.post(url, data);
}
8. Fraud Detection Engine
Tanpa anti-fraud, gateway bisa jadi mesin pencuci uang.
Contoh rule sederhana:
IF transaction > 10 juta
AND ip berbeda negara
THEN flag suspicious
Contoh kode:
function checkFraud(amount, country){
if(amount > 10000000 && country !== "ID"){
return "SUSPICIOUS";
}
return "OK";
}
Gateway besar memakai machine learning fraud detection.
9. Integrasi Bank
Ini bagian yang bikin banyak startup menyerah.
Bank biasanya menggunakan:
Host to Host
ISO 8583
Secure VPN
Gateway akan:
- membuat VA
- bank menerima transfer
- bank kirim callback
- gateway update transaksi
10. Settlement System
Settlement adalah pengiriman dana ke merchant.
Contoh flow:
Customer bayar
↓
Gateway menerima notifikasi
↓
Dana masuk escrow
↓
Settlement harian
↓
Transfer ke merchant
Kode pseudo:
function settlement(merchant, amount){
bankTransfer(merchant.bank_account, amount);
}
11. Dashboard Merchant
Merchant membutuhkan dashboard untuk:
- melihat transaksi
- melihat settlement
- membuat API key
Biasanya dibuat dengan:
Frontend
React
NextJS
Backend
NodeJS
Go
12. Sistem Keamanan
Payment gateway harus mematuhi standar:
PCI DSS
Beberapa sistem keamanan wajib:
- SSL encryption
- tokenization kartu kredit
- rate limit API
- firewall
- audit log
Contoh rate limit:
100 request per minute per merchant
13. Scaling Sistem
Saat transaksi meningkat, sistem harus bisa scaling otomatis.
Strategi scaling:
Horizontal scaling
API server 1
API server 2
API server 3
Database replication
Primary DB
Read replica
Queue processing
Transaction queue
Notification queue
Settlement queue
14. Model Monetisasi
Gateway menghasilkan uang dari biaya transaksi.
Contoh fee industri:
VA transfer
Rp4.000
QRIS
0.7%
Kartu kredit
2.9%
Jika gateway memproses:
1 juta transaksi / hari
Pendapatan bisa mencapai miliaran rupiah per bulan.
15. Roadmap Membangun Payment Gateway Startup
Tahap realistis:
Tahap 1
Bangun payment API
Tahap 2
Integrasi QRIS
Tahap 3
Integrasi VA bank
Tahap 4
Bangun dashboard merchant
Tahap 5
Bangun settlement system
Tahap 6
Daftar lisensi regulator
Kesimpulan
Membangun payment gateway seperti Xendit atau Midtrans adalah proyek fintech kelas berat.
Dibutuhkan:
- arsitektur server kuat
- integrasi bank
- keamanan tingkat tinggi
- regulasi finansial
Tetapi secara teknis, inti sistemnya adalah:
Payment API
Transaction engine
Bank connector
Settlement system
Jika semua komponen itu berjalan stabil, kamu sudah memiliki fondasi payment gateway modern.
Sedikit saran yang mungkin menyelamatkan beberapa tahun hidupmu. Banyak startup mencoba membuat gateway penuh lalu tenggelam di birokrasi bank. Cara yang lebih cerdas biasanya membangun payment orchestration layer di atas gateway yang sudah ada seperti atau . Infrastruktur lebih ringan, risiko regulasi jauh lebih kecil.
Tetap saja, kalau kamu benar-benar ingin melangkah ke level lebih gila mungkin bisa di lanjut siapa tahu kamu berhasil.