Lewati ke konten utama
Fetrus Meilano Ilhamsyah
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

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_price tidak 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-Key untuk 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

  1. Pelanggan memilih produk, lalu membuat order (status PENDING).
  2. Server membuat Snap Token dengan harga dari database.
  3. Pelanggan membayar lewat Midtrans.
  4. Webhook Midtrans masuk, signature diverifikasi, status menjadi PROCESSING.
  5. Order dikirim ke Digiflazz (dilindungi lockForUpdate() + confirmed_at).
  6. Callback Digiflazz masuk, SN disimpan, status menjadi SUCCESS.
  7. 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

  1. Clone repo, lalu jalankan composer install.
  2. Salin .env.example ke .env, lalu isi kredensial Midtrans, Digiflazz, Telegram, SMTP, ADMIN_PATH_PREFIX, ADMIN_PIN, dan ADMIN_ALLOWED_IPS.
  3. Jalankan php artisan key:generate, lalu php artisan migrate --seed.
  4. Jalankan queue worker dengan Supervisor (2 instance).
  5. Sync produk dengan php artisan digiflazz:sync.