Panduan Integrasi API

Manual Book - Tim IT Internal

Panduan Integrasi API Penerima Data

Dokumen ini ditujukan untuk Programmer/Tim IT Internal yang akan membuat API untuk menerima data secara otomatis dari Aplikasi Desktop (di cabang/dealer) ke Server Internal Perusahaan.

1 Konsep & Alur Kerja (Workflow)

Aplikasi Desktop bertindak sebagai API Client yang akan melakukan HTTP POST Request untuk "mendorong" (push) data ke URL Server Internal Perusahaan Anda setiap kali tombol Sync ditekan.

  1. User di cabang menekan tombol "Sync to Server" di Aplikasi Desktop.
  2. Desktop mengirim request POST /api.php?action=get_last_sync_time ke server Anda.
  3. Server Anda merespon: 2024-06-15 08:30:00 (Waktu sinkronisasi terakhir).
  4. Desktop mencari log absensi di database lokalnya yang lebih baru dari waktu tersebut.
  5. Desktop membungkus data Karyawan dan data Absensi baru menjadi JSON.
  6. Desktop mengirim request POST /api.php?action=sync_all membawa payload JSON tersebut.
  7. Server Anda menerima JSON, memasukkan datanya ke database internal, dan membalas status: success.

2 Struktur Tabel Database (Rekomendasi)

Untuk menampung data yang dikirim, Anda perlu menyiapkan setidaknya 2 tabel di database server internal Anda.

Tabel employees

KolomTipeKeterangan
idVARCHAR(50)Primary Key
employee_noVARCHAR(50)ID di mesin finger
nameVARCHAR(255)Nama Karyawan
nipVARCHAR(100)NIP (Optional)
dealer_codeVARCHAR(50)Kode Cabang/Dealer
dealer_nameVARCHAR(255)Nama Cabang/Dealer
created_atDATETIMEWaktu Dibuat
Tips: Buat UNIQUE KEY untuk kombinasi employee_no + dealer_code.

Tabel attendance_logs

KolomTipeKeterangan
idVARCHAR(50)Primary Key
employee_noVARCHAR(50)ID Karyawan absen
timestampDATETIMEWaktu absen (YYYY-MM-DD HH:MM:SS)
statusVARCHAR(50)Contoh: Check In / Check Out
dealer_codeVARCHAR(50)Kode Cabang/Dealer
dealer_nameVARCHAR(255)Nama Cabang/Dealer
device_idVARCHAR(100)NIP Mesin Fingerprint
Tips: Buat UNIQUE KEY untuk kombinasi employee_no + timestamp + dealer_code agar terhindar dari data duplikat.

3 Spesifikasi Endpoint API yang Harus Dibuat

Anda bebas menggunakan bahasa pemrograman/framework apapun (PHP, Laravel, Node.js, dll). Cukup pastikan server Anda bisa merespon HTTP POST Request JSON di bawah ini.

POST /api.php?action=get_last_sync_time

Tujuan: Aplikasi desktop menanyakan kapan terakhir kali log absensi dari cabang ini masuk ke server, agar desktop hanya mengirim data baru (Incremental Sync).

Request dari Desktop:
{
  "kode_dealer": "DLR-001"
}
Response dari Server Anda:
{
  "status": "success",
  "last_sync_time": "2024-06-15 08:30:00"
}

* Jika belum ada data sama sekali untuk dealer tsb, kembalikan null.

POST /api.php?action=sync_all

Tujuan: Menerima array data karyawan dan absensi. Server Anda harus melooping array ini dan menyimpannya ke database.

Request dari Desktop (JSON):
{
  "kode_dealer": "DLR-001",
  "nama_dealer": "Alfa Motor Jakarta",
  "employees": [
    {
      "employee_no": "1001",
      "name": "Budi Santoso",
      "nip": "12345678",
      "created_at": "2024-01-15 10:00:00"
    }
  ],
  "attendance_logs": [
    {
      "employee_no": "1001",
      "timestamp": "2024-06-15 08:45:00",
      "status": "Check In",
      "device_id": "DS-K1T804"
    }
  ]
}
Response dari Server Anda:
{
  "status": "success",
  "message": "Data tersimpan"
}
Logika Pemrosesan Server:
  • Loop array employees, lakukan UPSERT (Insert on Duplicate Key Update).
  • Gunakan kode_dealer dan nama_dealer dari object terluar untuk di-insert ke tabel karyawan.
  • Loop array attendance_logs, lakukan INSERT IGNORE / UPSERT.
  • Balas dengan JSON status success dan HTTP Status Code 200.