Cara Mengirim Pesan WhatsApp dari PHP dengan API

PHP dapat digunakan untuk mengirim pesan WhatsApp secara otomatis dengan menghubungkan aplikasi ke REST API. Dengan pendekatan ini, aplikasi berbasis PHP dapat mengirim notifikasi, konfirmasi transaksi, pengingat pembayaran, dan pesan lainnya berdasarkan proses yang terjadi di dalam sistem.

Artikel ini membahas cara mengirim pesan WhatsApp dari PHP menggunakan API Whapi, mulai dari menyiapkan API key, membuat request POST, mengirim pesan, hingga menangani respons dan error.

Pelajari cara mengirim pesan WhatsApp dari PHP menggunakan API Whapi, mulai dari API key, request POST, contoh kode, hingga penanganan error

Yang Dibutuhkan

Sebelum membuat integrasi, siapkan:

  • PHP yang sudah terpasang
  • Aplikasi atau project PHP
  • Device Whapi dengan status CONNECTED
  • API key Whapi
  • Nomor WhatsApp tujuan

PHP dapat mengirim HTTP request ke API menggunakan beberapa pendekatan, salah satunya cURL yang tersedia pada banyak lingkungan PHP.

1. Siapkan API Key dan Device WhatsApp

Pengiriman pesan membutuhkan API key dan device WhatsApp yang sudah terhubung.

Pastikan device memiliki status:

CONNECTED

API key digunakan untuk mengautentikasi request yang dikirim dari aplikasi PHP.

Endpoint untuk mengirim pesan adalah:

POST /api/sendMessage

Dokumentasi parameter dan respons endpoint tersedia di dokumentasi Send Message Whapi.

2. Membuat Request POST dengan PHP cURL

PHP menyediakan cURL untuk melakukan HTTP request ke server eksternal.

Contoh sederhana pengiriman pesan:

<?php

$endpoint = 'https://alamat-server-whapi/api/sendMessage';
$apiKey = 'your_api_key';

$data = [
    'apiKey' => $apiKey,
    'phone' => '6281234567890',
    'message' => 'Pesan otomatis dari aplikasi PHP.',
];

$ch = curl_init($endpoint);

curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_RETURNTRANSFER => true,
]);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
`

Pada contoh tersebut terdapat tiga parameter utama:

  • apiKey digunakan untuk autentikasi request.
  • phone berisi nomor WhatsApp tujuan.
  • message berisi isi pesan yang akan dikirim.

Nomor tujuan menggunakan format internasional tanpa tanda +.

Contohnya:

6281234567890

3. Memisahkan API Key dari Source Code

API key sebaiknya tidak ditulis langsung di dalam source code aplikasi.

Untuk aplikasi PHP yang lebih terstruktur, simpan konfigurasi secara terpisah dari file program.

Contohnya:

$apiKey = getenv('WHAPI_API_KEY');
$endpoint = getenv('WHAPI_ENDPOINT');

Kemudian konfigurasi environment dapat berisi:

WHAPI_ENDPOINT=https://alamat-server-whapi
WHAPI_API_KEY=your_api_key

Cara ini membantu mengurangi risiko API key ikut tersimpan ketika source code dipindahkan atau dikelola menggunakan version control.

4. Membuat Fungsi Pengiriman Pesan

Jika aplikasi membutuhkan pengiriman WhatsApp dari beberapa bagian sistem, buat fungsi khusus agar kode request tidak ditulis berulang kali.

Contohnya:

<?php

function sendWhatsAppMessage(string $phone, string $message): array
{
    $endpoint = getenv('WHAPI_ENDPOINT') . '/api/sendMessage';
    $apiKey = getenv('WHAPI_API_KEY');

    $data = [
        'apiKey' => $apiKey,
        'phone' => $phone,
        'message' => $message,
    ];

    $ch = curl_init($endpoint);

    curl_setopt_array($ch, [
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query($data),
        CURLOPT_RETURNTRANSFER => true,
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);

    return [
        'status' => $httpCode,
        'response' => $response,
    ];
}

Fungsi tersebut dapat digunakan kembali ketika aplikasi perlu mengirim pesan.

Contoh:

$result = sendWhatsAppMessage(
    '6281234567890',
    'Pesanan #INV-001 telah berhasil diproses.'
);

print_r($result);

Dengan pendekatan ini, logika pengiriman terpusat pada satu fungsi sehingga lebih mudah dipelihara.

5. Mengecek Respons API

Request yang berhasil maupun gagal sebaiknya diproses secara berbeda.

Contohnya:

$result = sendWhatsAppMessage(
    '6281234567890',
    'Pembayaran untuk pesanan #INV-001 telah diterima.'
);

if ($result['status'] >= 200 && $result['status'] < 300) {
    echo 'Pesan berhasil diproses.';
} else {
    echo 'Pengiriman gagal.';
}

Respons API juga dapat disimpan sebagai data JSON untuk diproses lebih lanjut.

Jika membutuhkan informasi dari respons:

$responseData = json_decode(
    $result['response'],
    true
);

print_r($responseData);

Dengan demikian, aplikasi dapat menggunakan data respons API untuk logging atau proses berikutnya.

6. Mengirim Pesan Berdasarkan Proses Aplikasi

Pengiriman WhatsApp biasanya dilakukan setelah suatu proses tertentu berhasil.

Misalnya pada aplikasi toko online:

$orderNumber = 'INV-001';
$phone = '6281234567890';

$message = "Pesanan #{$orderNumber} telah berhasil diproses.";

$result = sendWhatsAppMessage(
    $phone,
    $message
);

Pola yang sama dapat digunakan untuk:

  • Konfirmasi pesanan
  • Notifikasi pembayaran
  • Pengingat pembayaran
  • Perubahan status pesanan
  • Informasi pengiriman
  • Notifikasi aktivitas akun

Dengan cara ini, pengiriman WhatsApp menjadi bagian dari alur aplikasi PHP.

7. Menangani Error cURL

Selain memeriksa HTTP status code, aplikasi juga perlu menangani kemungkinan error dari cURL.

Contohnya:

$ch = curl_init($endpoint);

curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_RETURNTRANSFER => true,
]);

$response = curl_exec($ch);

if ($response === false) {
    $error = curl_error($ch);

    curl_close($ch);

    throw new Exception(
        'Request gagal: ' . $error
    );
}

$httpCode = curl_getinfo(
    $ch,
    CURLINFO_HTTP_CODE
);

curl_close($ch);

Penanganan seperti ini membantu membedakan antara error pada koneksi HTTP dengan error yang dikembalikan oleh API.

8. Beberapa Penyebab Pengiriman Gagal

Ketika pesan tidak berhasil dikirim, periksa beberapa hal berikut:

  • API key tidak valid
  • Device belum berstatus CONNECTED
  • Nomor WhatsApp tujuan tidak sesuai
  • Parameter request tidak lengkap
  • Endpoint API tidak sesuai
  • Terjadi error pada koneksi HTTP

Jika request sudah dibuat dengan benar tetapi masih gagal, periksa HTTP status dan response body dari API untuk mengetahui detail masalah.

9. Mengirim Pesan dari Framework PHP

Jika menggunakan framework seperti Laravel, proses HTTP request dapat menggunakan HTTP Client bawaan Laravel.

Contohnya:

use Illuminate\Support\Facades\Http;

$response = Http::asForm()->post(
    env('WHAPI_ENDPOINT') . '/api/sendMessage',
    [
        'apiKey' => env('WHAPI_API_KEY'),
        'phone' => '6281234567890',
        'message' => 'Pesan otomatis dari Laravel.',
    ]
);

Namun, untuk aplikasi PHP tanpa framework, cURL dapat digunakan secara langsung seperti contoh sebelumnya.

Pemilihan metode bergantung pada struktur aplikasi yang digunakan.

Alur Integrasi PHP dengan WhatsApp API

Secara sederhana, alurnya adalah:

Aplikasi PHP
     ↓
Event / Controller / Function
     ↓
HTTP POST Request
     ↓
Whapi API
     ↓
Device WhatsApp
     ↓
Nomor Tujuan

Contohnya pada sistem pembayaran:

Pembayaran berhasil
        ↓
Aplikasi PHP menerima status pembayaran
        ↓
Fungsi pengiriman dijalankan
        ↓
PHP mengirim POST request
        ↓
Whapi memproses request
        ↓
Pesan WhatsApp dikirim

Pola tersebut dapat diterapkan pada berbagai aplikasi PHP yang membutuhkan notifikasi WhatsApp otomatis.

Kesimpulan

Mengirim pesan WhatsApp dari PHP dapat dilakukan dengan membuat HTTP POST request ke endpoint Whapi. Implementasi dasarnya terdiri dari menyiapkan API key, memastikan device terhubung, mengirim parameter nomor dan pesan, lalu memproses respons API.

Untuk aplikasi PHP tanpa framework, cURL dapat digunakan untuk melakukan request. Jika menggunakan framework seperti Laravel, HTTP Client bawaan Laravel dapat digunakan agar implementasi lebih terintegrasi dengan struktur aplikasi.

Untuk melihat parameter request dan format respons yang tersedia, gunakan dokumentasi Send Message Whapi.

Scroll to Top