Cara Kirim OTP WhatsApp via API
OTP lewat WhatsApp lebih cepat dibaca daripada SMS, lebih murah, dan pengguna tidak perlu membuka email. Berikut cara membuatnya dengan Synerwa dalam beberapa menit.
Kenapa OTP lewat WhatsApp?
- Tingkat baca tinggi — hampir semua pengguna di Indonesia aktif di WhatsApp setiap hari.
- Biaya rendah — satu kuota pesan per OTP, tanpa tarif per operator seperti SMS.
- Bisa diberi merek — pesan datang dari nomor bisnis Anda sendiri.
Alur verifikasi OTP
- Pengguna mengisi nomor WhatsApp di aplikasi Anda.
- Server Anda membuat kode acak 6 digit, menyimpan hash-nya beserta waktu kedaluwarsa (misalnya 5 menit).
- Server memanggil
POST /sendSynerwa untuk mengirim kode. - Pengguna memasukkan kode; server mencocokkan hash dan memastikan belum kedaluwarsa.
Contoh dengan curl
curl -X POST https://synerwa.net/send \
-H "Authorization: TOKEN_PERANGKAT" \
-d "target=081234567890" \
-d "message=Kode verifikasi Anda: 482913. Berlaku 5 menit. Jangan berikan kode ini kepada siapa pun."
Nomor boleh diawali 08, 62, atau +62; Synerwa menormalkan otomatis dengan countryCode default 62.
Contoh PHP
<?php
$otp = random_int(100000, 999999);
$_SESSION['otp_hash'] = password_hash((string)$otp, PASSWORD_DEFAULT);
$_SESSION['otp_exp'] = time() + 300;
$ch = curl_init('https://synerwa.net/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SYNERWA_TOKEN')],
CURLOPT_POSTFIELDS => [
'target' => $_POST['phone'],
'message' => "Kode verifikasi Anda: $otp. Berlaku 5 menit.",
],
]);
$res = json_decode(curl_exec($ch), true);
Contoh Node.js
import crypto from 'node:crypto';
const otp = crypto.randomInt(100000, 1000000).toString();
const r = await fetch('https://synerwa.net/send', {
method: 'POST',
headers: { Authorization: process.env.SYNERWA_TOKEN },
body: new URLSearchParams({ target: phone, message: `Kode verifikasi Anda: ${otp}. Berlaku 5 menit.` }),
});
console.log(await r.json()); // { status: true, id: ['128'], process: 'pending', ... }
Tips keamanan OTP
- Simpan hash kode, bukan kode aslinya.
- Batasi percobaan (misalnya 5 kali) dan batasi permintaan OTP per nomor per jam.
- Jangan menaruh kode di URL atau log aplikasi.
- Gunakan perangkat khusus untuk OTP agar tidak tertahan antrian broadcast.
- Cek status pengiriman dengan
POST /statusbila pengguna melapor tidak menerima kode.