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 dan mengembalikan API Key untuk digunakan.
POST /api/auth/login{
"userId": "fandirr",
"password": "passwordnya"
}
{
"message": "Login berhasil!",
"role": "admin",
"apiKey": "a017e8b420114aaf70e499ab27d53e012d55..."
}
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": 90000,
"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..."
}
Membuat QRIS baru dengan jumlah unik (jumlah asli + kode unik 1-200).
POST /api/payment/deposit?apikey=API_KEY_ANDA{
"amount": 10000
}
{
"status": "success",
"message": "Permintaan deposit berhasil dibuat.",
"data": {
"orderId": "ORD-abcd-123456789",
"amountToPay": 10123,
"qrCodeUrl": "[https://files.catbox.moe/sx2xhc.png](https://files.catbox.moe/sx2xhc.png)",
"expiryTime": "2025-11-04T12:09:00.986+07:00"
}
}
Mengambil riwayat transaksi deposit untuk pengguna yang sedang login.
GET /api/payment/history?apikey=API_KEY_ANDA[
{
"_id": "...",
"orderId": "ORD-abcd-123456789",
"paymentId": "QR-9NCD9Z6L",
"user": "...",
"baseAmount": 10000,
"uniqueCode": 123,
"amount": 10123,
"status": "settlement",
"createdAt": "..."
}
]
Memicu pengecekan status untuk satu transaksi. Endpoint ini akan memanggil API mutasi bank internal dan mencocokkan jumlah unik.
GET /api/payment/status/{orderId}?apikey=API_KEY_ANDAorderId (di dalam path): orderId unik yang didapat saat membuat deposit.status akan berubah dari pending menjadi settlement jika pembayaran ditemukan.{
"_id": "...",
"orderId": "ORD-abcd-123456789",
"paymentId": "QR-9NCD9Z6L",
"user": "...",
"baseAmount": 10000,
"uniqueCode": 123,
"amount": 10123,
"status": "pending",
"createdAt": "...",
"updatedAt": "..."
}
{
"message": "Transaksi tidak ditemukan atau bukan milik Anda."
}
{
"message": "Gagal memeriksa status transaksi."
}
POST /api/withdrawals/request?apikey=API_KEY_ANDA{
"amount": 10000,
"bankName": "BCA",
"accountNumber": "1234567890",
"accountName": "Fandirr"
}
{
"message": "Permintaan penarikan berhasil diajukan. Saldo Anda telah dipotong...",
"withdrawal": { ... }
}
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_ADMINGET /api/admin/transactions?apikey=API_KEY_ADMINGET /api/admin/users?apikey=API_KEY_ADMINPOST /api/admin/users/update-role?apikey=API_KEY_ADMIN{
"userId": "63a...",
"newRole": "admin"
}
PUT /api/admin/users/{id}?apikey=API_KEY_ADMIN{
"userId": "username_baru",
"balance": 50000,
"password": "password_baru_opsional"
}
DELETE /api/admin/users/{id}?apikey=API_KEY_ADMINGET /api/admin/withdrawals?apikey=API_KEY_ADMINPOST /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..."
}