Langsung ke konten
WbizTool

Kirim pesan WhatsApp dengan PHP

Kirim teks, gambar, dan file WhatsApp dari situs atau aplikasi PHP Anda, dari nomor Anda sendiri yang ditautkan ke WbizTool seperti WhatsApp Web. Cukup ekstensi cURL PHP dan satu POST ke endpoint yang terdokumentasi.

Uji coba gratis: 50 pesan dalam 30 hari mana pun, tanpa kartu.

Cara kerjanya

  1. Dapatkan kunci API dan tautkan nomor Anda

    Daftar, lalu tautkan nomor WhatsApp Anda di halaman Nomor WhatsApp dengan kode QR atau kode penautan, seperti WhatsApp Web. Di Pengaturan → Kunci API, buat kunci dan salin Client ID Anda (panduan Kunci API di bawah menunjukkan letaknya). ID di kartu nomor (seperti ID 678) adalah whatsapp_client Anda.

  2. Susun request-nya

    Masukkan client_id, api_key, whatsapp_client, nomor telepon, dan msg ke dalam array. Kirim sebagai JSON dengan ekstensi cURL PHP – atau dengan HTTP client apa pun yang sudah Anda pakai, dengan field yang sama.

  3. Kirim pesannya

    POST ke https://wbiztool.com/api/v1/send_msg/. Balasan dengan "status": 1 dan msg_id berarti pesan sudah masuk antrean di nomor Anda.

  4. Pastikan pesan terkirim

    Sertakan URL webhook untuk diberi tahu saat pesan terkirim atau gagal, atau tanyakan ke endpoint Status pesan dengan msg_id.

Contoh kode PHP

Kirim teks
<?php
$payload = [
    'client_id'       => 12345,
    'api_key'         => 'YOUR_API_KEY',
    'whatsapp_client' => 678,
    'msg_type'        => 0,
    'country_code'    => '91',
    'phone'           => '9876543210',
    'msg'             => 'Hi Aman, your order #4821 has shipped and will arrive on Thursday.',
];

$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($result['status'] ?? 0) === 1) {
    echo 'Queued with msg_id ' . $result['msg_id'];
} else {
    echo 'Failed: ' . ($result['message'] ?? 'no response');
}
Balasan
{"status": 1, "message": "Created", "msg_id": 9817263}
Kirim gambar dari URL
<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'client_id'       => 12345,
        'api_key'         => 'YOUR_API_KEY',
        'whatsapp_client' => 678,
        'msg_type'        => 1,
        'country_code'    => '91',
        'phone'           => '9876543210',
        'img_url'         => 'https://example.com/offers/diwali-sale.jpg',
        'msg'             => 'Our Diwali sale starts today 🎉',
    ]),
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);
Kirim PDF (unggah file)
<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    // An array body (not json_encode) makes cURL send multipart/form-data.
    CURLOPT_POSTFIELDS     => [
        'client_id'       => 12345,
        'api_key'         => 'YOUR_API_KEY',
        'whatsapp_client' => 678,
        'msg_type'        => 2,
        'country_code'    => '91',
        'phone'           => '9876543210',
        'msg'             => 'Your invoice for order #4821 is attached.',
        'file_name'       => 'invoice-4821.pdf',
        'file'            => new CURLFile('/path/to/invoice-4821.pdf', 'application/pdf', 'invoice-4821.pdf'),
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 120,
]);
echo curl_exec($ch);
curl_close($ch);
Jadwalkan pesan
<?php
$payload = [
    'client_id'       => 12345,
    'api_key'         => 'YOUR_API_KEY',
    'whatsapp_client' => 678,
    'msg_type'        => 0,
    'country_code'    => '91',
    'phone'           => '9876543210',
    'msg'             => 'Hi Aman, a reminder that your appointment is today at 11:30 AM.',
    'date'            => '24/12/2026',
    'time'            => '09:00',
    'timezone'        => 'Asia/Kolkata',
];

$ch = curl_init('https://wbiztool.com/api/v1/schedule_msg/');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($result['status'] ?? 0) === 1) {
    echo 'Scheduled with msg_id ' . $result['msg_id'];
} else {
    echo 'Failed: ' . ($result['message'] ?? 'no message in response');
}
Cek status pesan
<?php
$msgId = 9817263;
$payload = [
    'client_id' => 12345,
    'api_key'   => 'YOUR_API_KEY',
];

$ch = curl_init("https://wbiztool.com/api/v1/message/status/{$msgId}/");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($result['message'] ?? '') === 'Unknown message id') {
    echo 'No message with this ID in your workspace';
} elseif (!isset($result['status_text'])) {
    echo 'Request failed: ' . ($result['message'] ?? 'no message in response');
} elseif ($result['status'] === 1) {
    echo 'Sent';
} elseif ($result['status'] === 2) {
    echo 'Failed: ' . $result['error'];
} else {
    echo 'Status: ' . $result['status_text'];
}
Terima webhook status
<?php
// webhook.php – WbizTool posts form fields, so they arrive in $_POST.
$msgId  = $_POST['msg_id'] ?? '';
$status = $_POST['status'] ?? ''; // SENT, FAILED, CANCELLED or EXPIRED
error_log("WbizTool message $msgId: $status");
http_response_code(200);

Yang bisa Anda lakukan

  • Tanpa library yang perlu diinstal

    Contoh-contohnya hanya memakai ekstensi cURL PHP. API menerima JSON, form field, atau multipart form data saat Anda mengunggah file.

  • Teks, gambar, dan file

    Atur msg_type ke 0 untuk teks, 1 untuk gambar, atau 2 untuk file. Beri img_url atau file_url publik, atau unggah file dengan CURLFile.

  • Jadwalkan untuk nanti

    POST ke /api/v1/schedule_msg/ dengan date (dd/mm/yyyy), time (HH:MM), dan timezone seperti Asia/Kolkata atau America/New_York.

  • Webhook untuk setiap status

    Sertakan webhook dan skrip Anda menerima POST form-encoded – baca $_POST['msg_id'] dan $_POST['status'] (SENT, FAILED, CANCELLED, atau EXPIRED).

  • Pakai WordPress? Gunakan plugin-nya

    Plugin WordPress WbizTool mengirim pesan WhatsApp untuk pesanan WooCommerce, booking WP Amelia, dan formulir Contact Form 7 tanpa kode.

Perlu diketahui

  • "status": 1 berarti pesan masuk antrean, bukan sudah diterima. Terkirim (Sent) adalah status sukses terakhir; API tidak melaporkan apakah pesan sudah diterima atau dibaca.
  • Error Kirim pesan kembali dengan HTTP 400 (429 saat batas harian); error Jadwalkan pesan biasanya kembali dengan HTTP 200 dan "status": 0, jadi selalu decode body dan periksa status.
  • Untuk unggah file, berikan array ke CURLOPT_POSTFIELDS, bukan json_encode, agar cURL mengirim multipart/form-data dengan file di field bernama file.
  • Simpan kunci API di server Anda, misalnya di environment variable. Siapa pun yang memilikinya bisa mengirim dari nomor-nomor Anda, jadi jangan pernah menaruhnya di JavaScript browser, aplikasi mobile, atau kode yang Anda publikasikan.
  • Uji coba gratis berisi 50 pesan dalam 30 hari mana pun dan 1 nomor, tanpa kartu. Paket berbayar mulai $25 per bulan di AS (harga Anda ada di halaman Harga) dan mengirim pesan tanpa batas sesuai penggunaan wajar: hingga 1.000 per hari per nomor.
  • Pesan dikirim dari nomor WhatsApp Anda sendiri, jadi aturan WhatsApp sendiri berlaku: kirim pesan ke orang yang menunggu kabar dari Anda.

Pertanyaan

Apakah ada SDK PHP?
Tidak ada paket PHP resmi, dan Anda tidak memerlukannya: setiap panggilan adalah satu POST dengan ekstensi cURL, seperti contoh di atas. HTTP client PHP apa pun bisa dipakai dengan URL dan field yang sama.
Bagaimana cara mengirim invoice PDF dari PHP?
Gunakan msg_type 2. Beri file_url publik, atau unggah file dengan new CURLFile(...) di field bernama file. Atur file_name dengan ekstensinya, seperti invoice-4821.pdf.
Bagaimana saya tahu pesan sudah terkirim?
Balasan dengan "status": 1 dan msg_id berarti pesan sudah masuk antrean. Sertakan URL webhook untuk menerima POST dengan SENT, FAILED, CANCELLED, atau EXPIRED, atau panggil endpoint Status pesan dengan msg_id. Terkirim (Sent) adalah status akhir: API tidak melaporkan pesan diterima atau dibaca.
Format nomor telepon apa yang harus saya kirim?
Kirim nomor dengan kode negaranya (6281234567890), atau tanpa kode negara (81234567890) bersama country_code (62). Spasi, +, tanda hubung, dan tanda kurung dihapus otomatis, jadi +62 812-3456-7890 juga bisa.
Apakah saya perlu WhatsApp Business API atau persetujuan Meta?
Tidak. WbizTool mengirim dari nomor WhatsApp atau WhatsApp Business Anda sendiri, yang ditautkan seperti WhatsApp Web. Tidak perlu persetujuan Meta dan tidak ada template pesan yang harus disetujui.
Apakah ada biaya per pesan?
Tidak. Uji coba gratis mencakup 50 pesan dalam 30 hari mana pun. Paket berbayar mengirim pesan tanpa batas sesuai penggunaan wajar, hingga 1.000 per hari per nomor: Lite $25, Standard $59, dan Advanced $149 per bulan di AS; halaman Harga menampilkan harga untuk negara Anda.

Baca panduannya

Terkait

Kirim pesan WhatsApp otomatis pertama Anda hari ini

Buat akun, scan kode QR, dan kirim pesan dalam waktu kurang dari lima menit.

Mulai gratis

Paket berbayar mulai $25 per bulan di AS. Harga