Pengenalan API
API ini menggunakan metode arsitektur REST untuk pertukaran data JSON secara stateless. API dirancang khusus untuk menghubungkan aplikasi POS (Point of Sale) eksternal dengan server Akurata POS.
Spesifikasi Umum
- Base URL:
https://akurata.my.id/api/pos/
- Format Data: JSON (
Content-Type: application/json)
- Autentikasi: Bearer Token.
Perhatian: Semua request (kecuali Login) wajib menyertakan header otorisasi HTTP berikut:
Authorization: Bearer <API_TOKEN>
1. Login (Generate Token)
Digunakan untuk memvalidasi user (kasir) dan mendapatkan API_TOKEN.
- Endpoint:
/auth.php
- Method:
POST
Request Body (JSON):
{
"email": "kasir@toko.com",
"password": "password123"
}
Response (200 OK):
{
"status": "success",
"message": "Login berhasil.",
"data": {
"token": "4a7b9c8d... (simpan token ini di aplikasi)",
"user": {
"id": 12,
"name": "Budi Kasir",
"email": "kasir@toko.com",
"role": "cashier"
},
"outlet": {
"id": 1,
"name": "Cabang Utama"
}
}
}
Simpan token yang didapat di atas menggunakan penyimpanan lokal (misal: SharedPreferences di Android) untuk digunakan pada request selanjutnya.
2. Ambil Daftar Produk
Digunakan untuk memuat daftar produk dan stok terkini untuk ditampilkan di layar mesin kasir.
- Endpoint:
/products.php
- Method:
GET
- Header Wajib:
Authorization: Bearer <API_TOKEN>
Response (200 OK):
{
"status": "success",
"data": [
{
"id": 101,
"name": "Kopi Susu Gula Aren",
"sku": "KOP-001",
"barcode": "8991234567890",
"category": "Minuman",
"type": "simple",
"stock": 50,
"sell_price": 18000,
"buy_price": 10000
}
]
}
3. Kirim Transaksi Baru (Checkout)
Digunakan ketika pelanggan sudah selesai membayar. Endpoint ini akan mencatat penjualan di laporan web dan otomatis mengurangi stok produk di server.
- Endpoint:
/transactions.php
- Method:
POST
- Header Wajib:
Authorization: Bearer <API_TOKEN>
Request Body (JSON):
{
"payment_method": "cash",
"discount": 0,
"tax": 0,
"items": [
{
"product_id": 101,
"qty": 2
}
]
}
Catatan: Harga barang (price) tidak perlu dikirim karena server akan menggunakan harga asli dari database demi keamanan. Anda hanya perlu mengirimkan ID produk dan jumlah (qty).
Response (200 OK):
{
"status": "success",
"message": "Transaksi berhasil disimpan.",
"data": {
"transaction_id": 892,
"invoice_no": "POS-260702-0001",
"total": 51000
}
}
Penanganan Error
Jika terjadi kesalahan (seperti token salah, produk tidak ada, dll), server akan membalas dengan status HTTP 400, 401, atau 500, beserta pesan error JSON berikut:
{
"error": "Token tidak valid atau sesi telah berakhir."
}