Selamat datang di dokumentasi API FandirrPay. Semua endpoint API diawali dengan base URL: https://blackhat.web.id
.
Sebagian besar endpoint memerlukan otentikasi menggunakan API Key. Key harus dikirimkan sebagai query parameter di dalam URL dengan nama apikey
.
Format:
https://blackhat.web.id/api/endpoint?apikey=API_KEY_ANDA
Endpoint ini tidak memerlukan API Key karena digunakan untuk proses otentikasi awal.
Mendaftarkan pengguna baru dan membuat API Key pertama mereka.
POST /api/auth/register
{
"userId": "namauserbaru",
"password": "passwordminimal6karakter"
}
{
"message": "Registrasi berhasil! Silakan login."
}
Mengautentikasi pengguna, mengatur cookie sesi untuk web, dan mengembalikan API Key untuk digunakan.
POST /api/auth/login
{
"userId": "fandirr",
"password": "passwordnya"
}
{
"message": "Login berhasil!",
"role": "admin",
"apiKey": "a017e8b420114aaf70e499ab27d53e012d55..."
}
Menghapus cookie sesi dari browser (untuk antarmuka web).
POST /api/auth/logout
{
"message": "Logout berhasil."
}
Mengambil detail pengguna yang sedang login.
GET /api/user/me?apikey=API_KEY_ANDA
{
"_id": "63a...",
"userId": "fandirr",
"balance": 3000,
"role": "admin",
"apiKey": "a017e8b420114aaf70e499ab27d53e012d55...",
"createdAt": "...",
"updatedAt": "..."
}
Membuat API Key baru dan menonaktifkan yang lama.
POST /api/user/regenerate-key?apikey=API_KEY_LAMA_ANDA
{
"message": "API Key berhasil dibuat ulang!",
"apiKey": "apikeybaruyangberbeda..."
}
POST /api/payment/deposit?apikey=API_KEY_ANDA
{
"amount": 20000
}
{
"status": "success",
"message": "Permintaan deposit berhasil dibuat.",
"data": { ... }
}
POST /api/payment/cancel?apikey=API_KEY_ANDA
{
"orderId": "order-175..."
}
GET /api/payment/history?apikey=API_KEY_ANDA
[Array of transaction objects]
POST /api/withdrawals/request?apikey=API_KEY_ANDA
{
"amount": 10000,
"bankName": "BCA",
"accountNumber": "1234567890",
"accountName": "Fandirr"
}
Mengambil status terbaru dari sebuah transaksi deposit langsung dari Midtrans.
GET /api/payment/status/{orderId}?apikey=API_KEY_ANDA
orderId
(di dalam path): ID unik dari transaksi yang ingin dicek.{
"orderId": "order-175...",
"amount": "2000.00",
"status": "settlement",
"paymentType": "qris",
"transactionTime": "2025-08-07 09:30:00"
}
{
"message": "Transaksi tidak ditemukan atau bukan milik Anda."
}
GET /api/notifications?apikey=API_KEY_ANDA
{ notifications: [...], unreadCount: ... }
POST /api/notifications/mark-read?apikey=API_KEY_ANDA
{ "message": "..." }
Semua endpoint di bawah ini memerlukan apikey
dari pengguna dengan role: 'admin'
.
GET /api/admin/stats?apikey=API_KEY_ADMIN
GET /api/admin/transactions?apikey=API_KEY_ADMIN
GET /api/admin/users?apikey=API_KEY_ADMIN
POST /api/admin/users/update-role?apikey=API_KEY_ADMIN
{
"userId": "63a...",
"newRole": "admin"
}
GET /api/admin/withdrawals?apikey=API_KEY_ADMIN
POST /api/admin/withdrawals/process?apikey=API_KEY_ADMIN
{
"withdrawalId": "63b...",
"action": "completed"
}
POST /api/admin/notifications/send?apikey=API_KEY_ADMIN
{
"targetUserId": "all",
"title": "Info Maintenance",
"message": "Akan ada perbaikan sistem..."
}
Endpoint ini tidak memerlukan otentikasi karena dipanggil langsung oleh server Midtrans.
POST /api/payment/midtrans-webhook