PHP está presente em mais de 77% dos sites com servidor web conhecido — incluindo WordPress, WooCommerce e Laravel. Integrar WhatsApp via API é simples e pode ser feito sem nenhuma biblioteca adicional, apenas com cURL nativo do PHP.
Pré-requisitos
- PHP 7.4+
- Extensão cURL habilitada (padrão na maioria dos hostings)
- Conta na ZAP API (trial 7 dias, sem cartão)
Passo 1: Função base com cURL
<?php
define('ZAP_TOKEN', 'tk_seu_token_aqui');
define('ZAP_INSTANCE', 'inst_seu_id_aqui');
define('ZAP_BASE', 'https://zap-api.tech/v1');
function zapRequest(string $method, string $endpoint, array $body = []): array
{
$url = ZAP_BASE . $endpoint;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . ZAP_TOKEN,
'Content-Type: application/json',
]);
if (!empty($body)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return [
'status' => $httpCode,
'data' => json_decode($response, true),
];
}
Passo 2: Enviar mensagem de texto
function enviarTexto(string $phone, string $mensagem): array
{
return zapRequest('POST', '/instances/' . ZAP_INSTANCE . '/send', [
'phone' => $phone,
'type' => 'text',
'body' => $mensagem,
]);
}
// Uso
$resultado = enviarTexto('5511999998888', 'Ola! Mensagem via PHP + ZAP API.');
var_dump($resultado);
Passo 3: Enviar imagem, documento e áudio
function enviarImagem(string $phone, string $url, string $legenda = ''): array
{
return zapRequest('POST', '/instances/' . ZAP_INSTANCE . '/send', [
'phone' => $phone,
'type' => 'image',
'mediaUrl' => $url,
'caption' => $legenda,
]);
}
function enviarDocumento(string $phone, string $url, string $nomeArquivo): array
{
return zapRequest('POST', '/instances/' . ZAP_INSTANCE . '/send', [
'phone' => $phone,
'type' => 'document',
'mediaUrl' => $url,
'fileName' => $nomeArquivo,
]);
}
// Exemplos
enviarImagem('5511999998888', 'https://loja.com/banner.jpg', 'Promocao de Natal!');
enviarDocumento('5511999998888', 'https://loja.com/boleto.pdf', 'boleto.pdf');
Passo 4: Receber mensagens (webhook)
<?php
// webhook.php — coloque este arquivo no seu servidor
require_once 'zap.php'; // o arquivo com as funções acima
$payload = json_decode(file_get_contents('php://input'), true);
if (
isset($payload['event']) &&
$payload['event'] === 'message.received' &&
!$payload['data']['fromMe']
) {
$phone = $payload['data']['phone'];
$mensagem = $payload['data']['body'];
$nome = $payload['data']['name'] ?? 'cliente';
// Logar
error_log("Mensagem de $nome ($phone): $mensagem");
// Responder automaticamente
enviarTexto($phone, "Ola, $nome! Recebemos sua mensagem. Em breve te atendemos.");
}
http_response_code(200);
echo json_encode(['ok' => true]);
Integração com WooCommerce
Para lojas WordPress, adicione notificações automáticas ao WooCommerce:
// No functions.php do tema ou em um plugin customizado
add_action('woocommerce_order_status_processing', function ($order_id) {
require_once plugin_dir_path(__FILE__) . 'zap.php';
$order = wc_get_order($order_id);
$phone = $order->get_billing_phone();
$nome = $order->get_billing_first_name();
$numero = $order->get_order_number();
// Formatar para padrao internacional (sem +)
$phone_formatado = '55' . preg_replace('/D/', '', $phone);
$mensagem = "Ola, $nome!
";
$mensagem .= "Seu pedido #$numero foi confirmado e esta sendo preparado.
";
$mensagem .= "Acompanhe em: " . $order->get_view_order_url();
enviarTexto($phone_formatado, $mensagem);
});
Configurar webhook via PHP
$resultado = zapRequest('PUT', '/instances/' . ZAP_INSTANCE . '/webhook', [
'url' => 'https://seu-site.com/webhook.php',
'secret' => 'um-secret-forte',
]);
echo 'Webhook configurado: ' . json_encode($resultado['data']);
Validar assinatura do webhook (segurança)
function validarAssinatura(string $secret): bool
{
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_ZAP_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
return hash_equals($expected, $signature);
}
// No webhook.php
if (!validarAssinatura('seu-secret-aqui')) {
http_response_code(401);
exit(json_encode(['error' => 'Assinatura invalida']));
}
Conclusão
Com menos de 60 linhas de PHP puro — sem instalar nada — você integra WhatsApp ao seu sistema. Funciona em qualquer hosting compartilhado, WordPress, Laravel ou qualquer framework PHP. A partir de R$29/mês* com trial de 7 dias sem cartão.