Arsitektur Payment Gateway Folkthemes #
Folkthemes v3.11.0 mengadopsi pola perancangan kontrak terstandarisasi berbasis interface Folkthemes_Payment_Gateway. Setiap provider payment gateway diintegrasikan secara independen dengan siklus hidup transaksi yang terisolasi dari core database:
- Inisiasi Pembayaran (
initiate_payment): Mengirim detail pesanan ke API gateway untuk mendapatkan URL pembayaran redirect. - Webhook / Callback Router: REST API endpoint tunggal di
POST /wp-json/folkthemes/v1/payment/callback/{provider}. - Verifikasi Signature: Memeriksa keaslian payload webhook menggunakan kunci rahasia / secret token masing-masing gateway sebelum memproses data apa pun.
- Perlindungan Replay (Deduplikasi): Memeriksa fingerprint transaksi melalui WordPress transient cache untuk mencegah satu webhook diproses dua kali.
- Validasi Nominal & Mata Uang: Memeriksa apakah jumlah uang yang dibayarkan pelanggan di gateway sama persis dengan nominal pesanan di database toko.
- Transisi Status Lunas Resmi: Hanya webhook bertanda tangan valid atau pemeriksaan status server-ke-server yang berhak memicu transisi pesanan menjadi Lunas (
paid). Redirect browser pelanggan semata-mata merupakan alur UX dan bukan bukti pembayaran sah.
Daftar Gateway yang Didukung #
| Payment Gateway | Protokol / Tipe API | Mekanisme Signature | Status Pembayaran |
|---|---|---|---|
| Duitku | Inquiry v2 API | MD5 (Merchant Code + Order ID + Amount + Key) | 00 = Lunas, 01 = Pending, 02 = Gagal |
| Midtrans | Snap API v1 | SHA-512 (Order ID + Status Code + Gross Amount + Server Key) | settlement/capture = Lunas, pending, expire, deny |
| Xendit | Invoice API v2 | Webhook Verification Token (x-callback-token) |
PAID/SETTLED = Lunas, PENDING, EXPIRED |
| DOKU (Jokul) | Checkout API v2 | HMAC-SHA256 (Client-Id + Request-Id + Timestamp + Target + Digest) | SUCCESS = Lunas, PENDING, FAILED |
Panduan Keamanan Kredensial #
PERHATIAN KEAMANAN:
Jangan pernah membagikan atau memublikasikan API Key, Server Key, Client Secret, atau Token Callback Anda kepada pihak ketiga yang tidak berwenang. Di halaman admin Folkthemes, seluruh kredensial sensitif disamarkan (masked) demi keamanan operasional Anda.
Jangan pernah membagikan atau memublikasikan API Key, Server Key, Client Secret, atau Token Callback Anda kepada pihak ketiga yang tidak berwenang. Di halaman admin Folkthemes, seluruh kredensial sensitif disamarkan (masked) demi keamanan operasional Anda.