- Buka Master API Client.
- Isi Client Code dan Nama Aplikasi.
- Atur Rate Limit dan Allowed IP.
- Tekan Generate API Key.
- Copy key ke aplikasi eksternal.
@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) @section('title', $title_menu ?? 'User Manual WhatsApp Gateway') @section('content') @include('layouts.navbars.auth.topnav', ['title' => ''])
Panduan pembuatan API key sampai endpoint digunakan oleh aplikasi eksternal.
| Client Code | Kode unik, contoh msjhris. |
|---|---|
| Rate Limit | Maksimal request per menit. |
| Allowed IPs | Whitelist IP. Kosong berarti semua IP diizinkan. |
| Kedaluwarsa | Opsional. Key ditolak setelah tanggal tersebut. |
WHATSAPP_GATEWAY_URL={{ $public_api_base_url }}
WHATSAPP_GATEWAY_API_KEY=WA_LIVE_KEY_HASIL_GENERATE
WHATSAPP_GATEWAY_TIMEOUT=30
WHATSAPP_GATEWAY_VERIFY_SSL=true
config/services.php'whatsapp_gateway' => [
'url' => env('WHATSAPP_GATEWAY_URL'),
'api_key' => env('WHATSAPP_GATEWAY_API_KEY'),
'timeout' => (int) env('WHATSAPP_GATEWAY_TIMEOUT', 30),
'verify_ssl' => filter_var(
env('WHATSAPP_GATEWAY_VERIFY_SSL', true),
FILTER_VALIDATE_BOOL
),
],
$result = app(
\App\Services\WhatsappGatewayService::class
)->sendText(
'main',
'6281234567890',
'Tes WhatsApp Gateway'
);
<?php
namespace App\Services;
use Illuminate\Http\Client\PendingRequest;
use Illuminate\Support\Facades\Http;
class WhatsappGatewayService
{
private function client(): PendingRequest
{
$client = Http::baseUrl(
rtrim(config('services.whatsapp_gateway.url'), '/')
)
->acceptJson()
->asJson()
->withHeaders([
'x-api-key' => config(
'services.whatsapp_gateway.api_key'
),
])
->timeout(
config('services.whatsapp_gateway.timeout', 30)
);
if (! config('services.whatsapp_gateway.verify_ssl', true)) {
$client = $client->withoutVerifying();
}
return $client;
}
public function sendText(
string $instanceId,
string $phone,
string $message
): array {
return $this->client()
->post(
"/instances/{$instanceId}/messages",
[
'to' => $phone,
'type' => 'text',
'text' => $message,
]
)
->throw()
->json();
}
}
curl -X {{ $endpoint['method'] }} \
"{{ $fullUrl }}" \
-H "x-api-key: WA_LIVE_KEY_HASIL_GENERATE"@if ($endpoint['payload'])
\
-H "Content-Type: application/json" \
-d '{!! json_encode($endpoint['payload'], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) !!}'
@endif
pm2 status
pm2 logs msj-whatsapp-gateway --lines 100
curl -i \
-H "x-api-key: WA_LIVE_KEY_HASIL_GENERATE" \
{{ $public_api_base_url }}/health