Отправка сообщений WhatsApp на PHP
Отправляйте тексты, изображения и файлы WhatsApp со своего сайта или из приложения на PHP с вашего собственного номера, привязанного к WbizTool как WhatsApp Web. Нужны только расширение cURL для PHP и один POST к документированному эндпоинту.
Бесплатный пробный период: 50 сообщений за любые 30 дней, без карты.
Как это работает
Получите API-ключ и привяжите номер
Зарегистрируйтесь, затем привяжите номер WhatsApp на странице «Номера WhatsApp» по QR-коду или коду привязки, как WhatsApp Web. В разделе «Настройки → API-ключи» создайте ключ и скопируйте свой Client ID (где их найти, показано в руководстве по API-ключам ниже). ID на карточке номера (например, ID 678) – это ваш
whatsapp_client.Соберите запрос
Поместите
client_id,api_key,whatsapp_client, номер телефона иmsgв массив. Отправьте его как JSON через расширение cURL – или любым HTTP-клиентом, которым вы уже пользуетесь, с теми же полями.Отправьте сообщение
Отправьте его POST-запросом на
https://wbiztool.com/api/v1/send_msg/. Ответ с"status": 1иmsg_idозначает, что сообщение поставлено в очередь на вашем номере.Проверьте, что оно ушло
Передайте URL в
webhook, чтобы узнать, когда сообщение отправлено или не отправлено, или запросите эндпоинт статуса сообщения сmsg_id.
Примеры кода: PHP
<?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');
}{"status": 1, "message": "Created", "msg_id": 9817263}<?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);<?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);<?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');
}<?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'];
}<?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);Что можно делать
Без библиотек
Примеры используют только расширение cURL для PHP. API принимает JSON, поля формы или multipart form data, когда вы загружаете файл.
Тексты, изображения и файлы
Укажите
msg_type0 для текста, 1 для изображения или 2 для файла. Передайте публичныйimg_urlилиfile_urlлибо загрузите файл черезCURLFile.Планирование на потом
Отправьте POST на
/api/v1/schedule_msg/сdate(дд/мм/гггг),time(ЧЧ:ММ) иtimezone, напримерAsia/KolkataилиAmerica/New_York.Вебхуки для каждого статуса
Передайте
webhook, и ваш скрипт получит POST в формате form-encoded – читайте$_POST['msg_id']и$_POST['status'](SENT,FAILED,CANCELLEDилиEXPIRED).Сайт на WordPress? Используйте плагин
Плагин WbizTool для WordPress отправляет сообщения WhatsApp для заказов WooCommerce, записей WP Amelia и форм Contact Form 7 без кода.
Полезно знать
"status": 1означает, что сообщение в очереди, а не доставлено. «Отправлено» – конечное успешное состояние; API не сообщает, доставлено ли сообщение и прочитано ли оно.- Ошибки отправки сообщения приходят с HTTP 400 (429 при дневном лимите); ошибки планирования обычно приходят с HTTP 200 и
"status": 0, поэтому всегда декодируйте тело ответа и проверяйтеstatus. - Для загрузки файла передавайте в
CURLOPT_POSTFIELDSмассив, а неjson_encode, чтобы cURL отправилmultipart/form-dataс файлом в полеfile. - Храните API-ключ на сервере, например в переменной окружения. Любой, у кого он есть, может отправлять с ваших номеров, поэтому никогда не размещайте его в JavaScript в браузере, в мобильном приложении или в публикуемом коде.
- В пробном периоде – 50 сообщений за любые 30 дней и 1 номер, без карты. На платных тарифах – от $25 в месяц в США (ваша цена – на странице «Цены») – сообщения безлимитные в рамках честного использования: до 1 000 в день с одного номера.
- Сообщения уходят с вашего собственного номера WhatsApp, поэтому действуют правила самого WhatsApp: пишите тем, кто ждёт ваших сообщений.
Вопросы и ответы
- Есть ли SDK для PHP?
- Официального пакета для PHP нет, и он не нужен: каждый вызов – это один POST через расширение cURL, как показано выше. Любой HTTP-клиент для PHP работает с тем же URL и полями.
- Как отправить счёт в PDF из PHP?
- Используйте
msg_type2. Либо передайте публичныйfile_url, либо загрузите файл черезnew CURLFile(...)в полеfile. Укажитеfile_nameс расширением, напримерinvoice-4821.pdf. - Как узнать, что сообщение отправлено?
- Ответ с
"status": 1иmsg_idозначает, что оно в очереди. Передайте URL вwebhook, чтобы получить POST сSENT,FAILED,CANCELLEDилиEXPIRED, или вызовите эндпоинт статуса сообщения сmsg_id. «Отправлено» – конечное состояние: API не сообщает о доставке или прочтении. - В каком формате указывать номер телефона?
- Передайте номер с кодом страны (79161234567) или без него (9161234567) вместе с
country_code(7). Пробелы, +, дефисы и скобки удаляются автоматически, поэтому +7 (916) 123-45-67 тоже подойдёт. - Нужны ли WhatsApp Business API или одобрение Meta?
- Нет. WbizTool отправляет с вашего собственного номера WhatsApp или WhatsApp Business, привязанного как WhatsApp Web. Одобрение Meta не нужно, и согласовывать шаблоны сообщений тоже не надо.
- Есть ли плата за каждое сообщение?
- Нет. Пробный период включает 50 сообщений за любые 30 дней. На платных тарифах сообщения безлимитные в рамках честного использования, до 1 000 в день с одного номера: Lite – $25, Standard – $59 и Advanced – $149 в месяц в США; на странице «Цены» показана цена для вашей страны.
Читайте руководства
- API отправки сообщения
- API планирования сообщения
- API статуса сообщения
- Плагин для WordPress
- API-ключи и Client ID
- Подключение номера WhatsApp
Смотрите также
- WordPressСообщения WhatsApp для заказов WooCommerce, Contact Form 7 и WP Amelia.
- cURLОтправляйте, планируйте и отслеживайте сообщения WhatsApp одной командой cURL.
- PythonОтправляйте сообщения WhatsApp из Python с официальным клиентом или обычным requests.
- Напоминания об оплатеЕжемесячные или разовые напоминания об оплате с вашего номера, со счётом в PDF.
Отправьте своё первое автоматическое сообщение в WhatsApp уже сегодня
Создайте аккаунт, отсканируйте QR-код и отправьте сообщение менее чем за пять минут.
Начать бесплатноПлатные тарифы – от $25 в месяц в США. Цены
