📑 Daftar Isi
1 Tentang KitaNikah
1.1 Deskripsi Bisnis
KitaNikah (kitanikah.net) adalah platform penyedia layanan undangan pernikahan digital berbasis web. Platform ini memungkinkan pasangan untuk membuat, mengelola, dan membagikan undangan pernikahan digital kepada tamu undangan.
1.2 Jenis Layanan
- Produk Digital: Undangan pernikahan digital (tidak ada produk fisik)
- Model Bisnis: Subscription / One-time Purchase per Event
- Target Pasar: Pasangan yang akan menikah di Indonesia
📍 Informasi Perusahaan
- Nama Website: KitaNikah
- Domain: kitanikah.net
- Alamat: Yogyakarta, Indonesia
- Email: kitanikah0101@gmail.com
- Telepon: +62 877 1365 0638
2 Pilihan Paket & Harga
| Paket | Harga | Fitur Utama |
|---|---|---|
| Basic | Gratis | Maks 50 tamu, 1 tema, tanpa WhatsApp blast |
| Silver | Rp 99.000 | Maks 150 tamu, 3 tema, WhatsApp blast |
| Premium | Rp 199.000 | Maks 300 tamu, semua tema, WhatsApp blast, amplop digital |
| Exclusive | Rp 399.000 | Unlimited tamu, semua tema, semua fitur, custom domain |
| Titanium | Rp 599.000 | Semua fitur Exclusive + prioritas support + konsultasi desain |
📝 Catatan: Harga sudah termasuk PPN. Berlaku untuk 1 event pernikahan. Tidak ada biaya berlangganan bulanan.
3 Alur Pengguna (User Journey)
3.1 Alur Registrasi & Pembuatan Undangan
1
Registrasi Akun
↓
2
Login ke Dashboard
Akses panel pengguna di /user
↓
3
Buat Undangan Baru
Wizard pembuatan undangan dengan 3 langkah
↓
Step 1
Data Mempelai
- Nama mempelai wanita
- Nama mempelai pria
- Data orang tua
- Upload foto mempelai
→
Step 2
Acara & Lokasi
- Tanggal & waktu acara
- Nama & alamat lokasi
- Link Google Maps
→
Step 3
Desain & Pengaturan
- ⭐ Pilih Paket
- Pilih tema undangan
- Set URL slug
- Pengaturan aktivasi
↓
4
Simpan Undangan
Undangan disimpan sebagai draft
↓
5
Proses Pembayaran
Jika memilih paket berbayar
↓
6
Aktivasi Undangan
Undangan aktif dan dapat diakses publik
↓
7
Kelola & Bagikan
Tambah data tamu
Kirim via WhatsApp
Pantau RSVP
Lihat ucapan
┌─────────────────────────────────────────────────────────────────┐ │ ALUR PENGGUNA │ └─────────────────────────────────────────────────────────────────┘ [1] REGISTRASI AKUN │ ├── Via Email + Password │ └── Verifikasi email (opsional) │ └── Via Google OAuth └── Login langsung tanpa verifikasi │ ▼ [2] LOGIN KE DASHBOARD │ └── Akses panel pengguna di /user │ ▼ [3] BUAT UNDANGAN BARU │ ├── Step 1: Input Data Mempelai │ ├── Nama mempelai wanita + orang tua │ ├── Nama mempelai pria + orang tua │ └── Upload foto mempelai │ ├── Step 2: Input Acara & Lokasi │ ├── Tanggal & waktu acara │ ├── Nama lokasi & alamat │ └── Link Google Maps │ └── Step 3: Desain & Pengaturan ├── ⭐ PILIH PAKET (Basic/Silver/Premium/Exclusive/Titanium) ├── Pilih tema undangan ├── Set judul & URL slug └── Pengaturan aktivasi │ ▼ [4] SIMPAN UNDANGAN (Draft) │ └── Undangan tersimpan sebagai draft │ ▼ [5] PROSES PEMBAYARAN (Jika paket berbayar) │ ├── QRIS │ ├── Virtual Account │ └── E-Wallet (GoPay, ShopeePay, dll) │ ▼ [6] AKTIVASI UNDANGAN │ └── Undangan dapat diakses publik │ ▼ [7] KELOLA TAMU & BAGIKAN UNDANGAN ├── 👥 Tambah data tamu ├── 📱 Kirim undangan via WhatsApp ├── 📊 Pantau RSVP & kehadiran └── 💌 Lihat ucapan & doa
4 Alur Pembayaran (Payment Flow)
4.1 Flow Diagram Pembayaran
👤 Pengguna
🖥️ KitaNikah
💳 Midtrans
1
Pilih paket berbayar
→
2
Buat Order
order_id, amount
→
←
3
Return Snap Token
4
Lihat Payment Popup
←
5
Pilih Metode Bayar
QRIS
VA
E-Wallet
- - →
- - →
6
💰 Lakukan Pembayaran
Transfer / Scan QR
══→
══→
←
7
Webhook Notification
transaction_status
8
✅ Update Status
is_paid = true
9
🎉 Halaman Sukses
←
10
🌟 Akses Fitur Premium
┌─────────────────────────────────────────────────────────────────┐ │ ALUR PEMBAYARAN │ └─────────────────────────────────────────────────────────────────┘ [PENGGUNA] [KITANIKAH] [MIDTRANS] │ │ │ │ 1. Pilih paket berbayar │ │ ├─────────────────────────────>│ │ │ │ │ │ │ 2. Buat Order/Transaksi │ │ │ (order_id, amount, items) │ │ ├───────────────────────────>│ │ │ │ │ │ 3. Return Snap Token │ │ │<───────────────────────────│ │ │ │ │ 4. Tampilkan payment popup │ │ │<─────────────────────────────│ │ │ │ │ │ 5. Pilih metode pembayaran │ │ │ (VA, E-Wallet, QRIS, dll) │ │ ├──────────────────────────────────────────────────────────>│ │ │ │ │ 6. Lakukan pembayaran │ │ │ (Transfer/Scan QR/dll) │ │ ├──────────────────────────────────────────────────────────>│ │ │ │ │ │ 7. Webhook Notification │ │ │ (transaction_status) │ │ │<───────────────────────────│ │ │ │ │ │ 8. Update status order │ │ │ - Set is_paid = true │ │ │ - Aktivasi undangan │ │ │ │ │ 9. Redirect ke sukses page │ │ │<─────────────────────────────│ │ │ │ │ │ 10. Akses fitur premium │ │ │<─────────────────────────────│ │
5 Detail Teknis
A. Inisiasi Transaksi (Server-side)
POST /api/payment/create { "wedding_id": 123, "package_id": 2, "amount": 99000, "customer": { "name": "John Doe", "email": "john@example.com", "phone": "081234567890" } }
B. Response dari Midtrans
{
"token": "snap_token_xxx",
"redirect_url": "https://app.midtrans.com/snap/v2/..."
}
C. Webhook Notification Handler
POST /api/payment/notification (dari Midtrans) { "transaction_status": "settlement", "order_id": "KITANIKAH-123-1703...", "payment_type": "bank_transfer", "gross_amount": "99000.00" }
D. Status Transaksi yang Ditangani
| Status | Aksi di KitaNikah |
|---|---|
pending |
Tampilkan instruksi pembayaran |
settlement |
✅ Set is_paid = true, aktivasi undangan |
capture |
✅ Set is_paid = true, aktivasi undangan |
expire |
Batalkan order, tampilkan notifikasi |
cancel |
Batalkan order |
deny |
Tampilkan pesan gagal |
refund |
Set is_paid = false, nonaktifkan |
6 Metode Pembayaran
6.1 Prioritas Tinggi
- ✅ QRIS - Pembayaran populer untuk milenial
- ✅ Virtual Account - BCA, BNI, BRI, Mandiri, Permata
- ✅ E-Wallet - GoPay, ShopeePay, OVO, DANA
6.2 Opsional
- 💳 Kartu Kredit/Debit
- 🏪 Gerai Retail (Alfamart, Indomaret)
7 Keamanan & Validasi
🔒 Server-side Validation
- Verifikasi signature key pada setiap webhook
- Validasi order_id dan gross_amount
- Double-check status transaksi via API (jika diperlukan)
💾 Database Transaction
- Gunakan database transaction untuk update status
- Log semua aktivitas pembayaran
- Prevent duplicate processing
🛡️ Fraud Prevention
- Validasi email pengguna
- Rate limiting pada endpoint pembayaran
- Monitor aktivitas mencurigakan
8 Halaman & Endpoint
8.1 Halaman Pengguna
| Halaman | URL | Deskripsi |
|---|---|---|
| Pilih Paket | /user/weddings/create |
Wizard pembuatan undangan |
| Checkout | /payment/checkout/{wedding} |
Halaman konfirmasi pembayaran |
| Sukses | /payment/success |
Konfirmasi pembayaran berhasil |
| Gagal | /payment/failed |
Notifikasi pembayaran gagal |
| Riwayat | /user/payments |
Daftar riwayat transaksi |
8.2 API Endpoints
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /api/payment/create |
Buat transaksi baru |
| POST | /api/payment/notification |
Webhook dari Midtrans |
| GET | /api/payment/status/{order_id} |
Cek status transaksi |
9 Skenario Penggunaan
✅ Skenario Sukses (QRIS)
- User memilih paket Silver (Rp 99.000)
- Klik tombol "Bayar Sekarang"
- Popup Midtrans Snap muncul
- User memilih pembayaran via QRIS
- User scan QR dan membayar via aplikasi e-wallet
- Midtrans mengirim webhook
settlement - Sistem update
is_paid = true - User redirect ke halaman sukses
- Undangan aktif dan dapat diakses publik
⏳ Skenario Pending (Virtual Account)
- User memilih paket Premium (Rp 199.000)
- Klik "Bayar Sekarang"
- User memilih Virtual Account BCA
- Sistem menampilkan nomor VA dan instruksi
- User transfer dari ATM/Mobile Banking
- Midtrans mengirim webhook
settlement - Undangan otomatis aktif
❌ Skenario Expired
- User membuat order tapi tidak membayar
- Setelah 24 jam, Midtrans mengirim webhook
expire - Order dibatalkan
- User dapat membuat order baru
10 Diagram Database
users
id (PK)
name
email
phone
→
weddings
id (PK)
user_id (FK)
package_id (FK)
is_paid
is_active
→
payments
id (PK)
wedding_id (FK)
order_id
amount
status
payment_type
paid_at
packages
id (PK)
name
price
features
Versi: 1.0 | Tanggal: 26 December 2025 | Dokumen ini dibuat untuk keperluan pendaftaran dan integrasi Midtrans Payment Gateway