Web
FEEPAFEEPAY.ID — Digital Product & PPOB Platform
Backend REST API untuk toko produk digital: Pulsa, Kuota Data, Token PLN, Top Up Game, dan Voucher Game. Seluruh alur transaksi berjalan otomatis, dari pembayaran sampai SN dikirim ke email pelanggan, tanpa intervensi admin.pembayaran via berbagai metode Midtrans, hingga produk otomatis dikirim ke Digiflazz dan SN/token dikirim ke email pelanggan — **tanpa intervensi manual dari admin**.
FEEPAY.ID — Digital Product & PPOB Platform
Backend REST API untuk toko produk digital: Pulsa, Kuota Data, Token PLN, Top Up Game, dan Voucher Game. Seluruh alur transaksi berjalan otomatis, dari pembayaran sampai SN dikirim ke email pelanggan, tanpa intervensi admin.
Stack: Laravel 11 • PHP 8.2+ • MySQL 8 • Sanctum • Midtrans Snap • Digiflazz • Supervisor • Nginx
Fitur Utama
- Katalog produk dengan filter kategori. Harga selalu diambil dari database, dan
cost_pricetidak ditampilkan ke publik. - Pembayaran Midtrans: VA (BNI, BCA, BRI, Mandiri, Permata), e-wallet (GoPay, DANA, ShopeePay), QRIS, dan PayLater. Snap token dipakai ulang agar tidak terjadi duplikat.
- Integrasi Digiflazz: produk dikirim otomatis setelah pembayaran lunas, dan SN diterima lewat callback.
- Dashboard admin: statistik order dan revenue, manajemen order, bulk update margin, dan sync produk.
- Cek status order tanpa login: cukup Order ID dan email.
- Tiket support disimpan ke database sebelum diteruskan ke Telegram.
- Email notifikasi lewat queue dengan retry otomatis. Email sukses berisi SN, dan email gagal dikirim langsung.
- Alert Telegram real-time untuk order, transaksi sukses atau gagal, error sistem, dan saldo Digiflazz menipis.
- Idempotency lewat header
X-Idempotency-Keyuntuk mencegah order ganda.
Keamanan (10 Layer)
| # | Layer | Mekanisme |
|---|---|---|
| 1 | HTTPS | ForceHttps |
| 2 | Security Headers | CSP, HSTS, X-Frame-Options, dll. |
| 3 | Rate Limiting | throttle per endpoint |
| 4 | Token Auth | Sanctum, expire 24 jam, single session |
| 5 | Secret Path | ADMIN_PATH_PREFIX |
| 6 | Admin PIN | X-Admin-PIN + hash_equals |
| 7 | IP Whitelist | ADMIN_ALLOWED_IPS |
| 8 | Webhook Signature | SHA-512 (Midtrans), MD5 (Digiflazz) |
| 9 | Race Condition | lockForUpdate() + flag confirmed_at |
| 10 | Input Sanitize | FormRequest + Midtrans sanitize |
Endpoint API
Public
| Method | Endpoint | Fungsi |
|---|---|---|
GET |
/api/products |
Daftar produk aktif |
POST |
/api/orders/create |
Buat order |
POST |
/api/orders/{orderId} |
Cek status order (butuh email) |
POST |
/api/payments/midtrans/create |
Buat Snap Token |
POST |
/api/midtrans/webhook |
Webhook Midtrans |
POST |
/api/callback/digiflazz |
Callback Digiflazz |
POST |
/api/support/send |
Kirim pesan support |
POST |
/api/admin/login |
Login admin |
Admin (Token + PIN + Secret Path)
| Method | Endpoint | Fungsi |
|---|---|---|
GET |
/api/admin/{secret}/dashboard/stats |
Statistik order & revenue |
GET |
/api/admin/{secret}/orders |
Daftar order + histori status |
POST |
/api/admin/{secret}/orders/{id}/confirm |
Konfirmasi manual order |
POST |
/api/admin/{secret}/orders/{orderId}/sync |
Sinkronisasi status dari Digiflazz |
POST |
/api/admin/{secret}/products/sync |
Sync katalog produk |
POST |
/api/admin/{secret}/products/bulk-margin |
Set margin semua produk |
PUT |
/api/admin/{secret}/products/{id} |
Update harga satu produk |
Alur Transaksi
- Pelanggan memilih produk, lalu membuat order (status
PENDING). - Server membuat Snap Token dengan harga dari database.
- Pelanggan membayar lewat Midtrans.
- Webhook Midtrans masuk, signature diverifikasi, status menjadi
PROCESSING. - Order dikirim ke Digiflazz (dilindungi
lockForUpdate()+confirmed_at). - Callback Digiflazz masuk, SN disimpan, status menjadi
SUCCESS. - Email berisi SN dikirim lewat queue, dan admin mendapat alert Telegram.
Database
| Tabel | Fungsi |
|---|---|
products |
Katalog produk (harga modal & harga jual) |
orders |
Data order, soft delete, kolom Midtrans |
order_status_histories |
Audit trail perubahan status |
support_messages |
Pesan support pelanggan |
users |
Akun admin |
Instalasi Singkat
- Clone repo, lalu jalankan
composer install. - Salin
.env.exampleke.env, lalu isi kredensial Midtrans, Digiflazz, Telegram, SMTP,ADMIN_PATH_PREFIX,ADMIN_PIN, danADMIN_ALLOWED_IPS. - Jalankan
php artisan key:generate, laluphp artisan migrate --seed. - Jalankan queue worker dengan Supervisor (2 instance).
- Sync produk dengan
php artisan digiflazz:sync.