TA/web_JMW/WHATSAPP_API_DOCUMENTATION.md

5.7 KiB

WhatsApp Chat API Documentation

Daftar API Endpoints

Endpoint: GET /api/chat/whatsapp/{username}/{categoryId?}

Deskripsi: Mendapatkan link WhatsApp untuk menghubungi penjual

Parameter:

  • username (required) - Username penjual
  • categoryId (optional) - ID mobil/kategori yang diminati

Response Sukses (200):

{
    "success": true,
    "message": "Link WhatsApp berhasil dibuat",
    "data": {
        "seller_username": "john_seller",
        "seller_name": "john_seller",
        "phone_number": "+6281234567890",
        "whatsapp_link": "https://wa.me/6281234567890?text=Halo...",
        "car_name": "Toyota Avanza 2015"
    }
}

Response Error (404):

{
    "success": false,
    "message": "Penjual tidak ditemukan"
}

Response Error (422):

{
    "success": false,
    "message": "Nomor telepon penjual tidak tersedia"
}

Contoh Request:

GET http://localhost:8000/api/chat/whatsapp/john_seller/5

2. Dapatkan Daftar Semua Penjual

Endpoint: GET /api/chat/sellers

Deskripsi: Mendapatkan list semua penjual dengan informasi kontak

Response Sukses (200):

{
    "success": true,
    "message": "Daftar penjual berhasil diambil",
    "data": [
        {
            "username": "john_seller",
            "email": "john@example.com",
            "phone_number": "+6281234567890"
        },
        {
            "username": "maria_seller",
            "email": "maria@example.com",
            "phone_number": "+6282345678901"
        }
    ]
}

Contoh Request:

GET http://localhost:8000/api/chat/sellers

3. Redirect Langsung ke WhatsApp

Endpoint: GET /contact/whatsapp/{username}/{categoryId?}

Deskripsi: Redirect langsung ke WhatsApp Web/App dengan pesan otomatis

Parameter:

  • username (required) - Username penjual
  • categoryId (optional) - ID mobil/kategori

Behavior:

  • Secara otomatis membuka WhatsApp Web atau aplikasi WhatsApp yang terinstall
  • Pesan otomatis dikirim ke chat window

Contoh Request:

GET http://localhost:8000/api/contact/whatsapp/john_seller/5

Cara Menggunakan

Option 1: Dari Frontend (HTML Button)

<!-- Button untuk membuka WhatsApp -->
<a href="/api/contact/whatsapp/john_seller/5" class="btn btn-primary">
    Hubungi Penjual via WhatsApp
</a>

Option 2: Dari Frontend (JavaScript)

// Dapatkan link WhatsApp dari API
fetch('/api/chat/whatsapp/john_seller/5')
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            // Buka link di tab baru
            window.open(data.data.whatsapp_link, '_blank');
        } else {
            alert(data.message);
        }
    });

Option 3: Mobile App

// Untuk membuka WhatsApp App di mobile
const whatsappLink = "whatsapp://send?phone=6281234567890&text=Halo";
window.location.href = whatsappLink;

Setup & Migration

1. Jalankan Migration untuk menambah field phone_number

php artisan migrate

Ini akan menambahkan kolom phone_number ke tabel user.

2. Update data penjual dengan nomor telepon

php artisan tinker
$user = User::find('john_seller');
$user->update(['phone_number' => '+6281234567890']);

Atau melalui database secara langsung:

UPDATE user SET phone_number = '+6281234567890' WHERE username = 'john_seller';

Format Nomor Telepon

API secara otomatis memformat nomor telepon. Nomor dapat diterima dalam format:

  • ✅ 081234567890 (Indonesian mobile)
  • ✅ 08-1234-567890 (dengan separator)
  • ✅ +6281234567890 (international)
  • ✅ 6281234567890 (country code tanpa +)

Semua format akan dikonversi menjadi: 6281234567890 untuk link WhatsApp.


Pesan Otomatis

Pesan default yang dikirim:

Halo, saya tertarik dengan kendaraan bekas - [Nama Mobil]. Apakah masih tersedia?

Contoh pesan dengan car_name:

Halo, saya tertarik dengan kendaraan bekas - Toyota Avanza 2015. Apakah masih tersedia?

Integrasi pada Car Detail Page

Tambahkan tombol "Hubungi Penjual" pada halaman detail mobil:

<!-- resources/views/user/car-detail.blade.php -->
<button onclick="contactSeller('{{ $seller->username }}', '{{ $car->id }}')">
    Hubungi Penjual via WhatsApp
</button>

<script>
function contactSeller(username, categoryId) {
    window.location.href = `/api/contact/whatsapp/${username}/${categoryId}`;
}
</script>

Error Handling

Error 404 - Penjual tidak ditemukan:

  • Pastikan username penjual correct/exists di database

Error 422 - Nomor telepon tidak tersedia:

  • Update field phone_number untuk user tersebut
  • Pastikan nomor telepon dalam format yang valid

Error 500 - Server error:

  • Cek log file di storage/logs/
  • Pastikan semua field exists di model

Catatan Penting

  1. Nomor Telepon Wajib:

    • User/Penjual harus memiliki nomor telepon di field phone_number
  2. Role Seller:

    • Untuk endpoint /api/chat/sellers, hanya users dengan role 'seller' yang ditampilkan
  3. WhatsApp Web:

    • Pengguna harus sudah login di WhatsApp Web
    • Atau memiliki aplikasi WhatsApp yang terinstall
  4. Character Encoding:

    • Pesan otomatis di-encode dengan urlencode() untuk mendukung karakter khusus

Troubleshooting

  • Pastikan WhatsApp Web sudah login atau aplikasi terinstall
  • Coba akses link langsung: https://wa.me/6281234567890

Nomor telepon tidak valid

  • Check format nomor di database
  • Gunakan format: +62xxxxxxxxxx atau 08xxxxxxxxxx

Pesan tidak muncul

  • Pastikan browser memperbolehkan popup/redirect
  • Coba buka di incognito mode

Contact untuk Support

Jika ada pertanyaan atau issue, hubungi team development.