API WhatsApp untuk OTP & Verifikasi Akun
Setiap kali pengguna mendaftar akun, login dari perangkat baru, atau mengonfirmasi transaksi penting, Anda perlu satu hal sederhana: memastikan orang di balik layar benar-benar pemilik nomor itu. Cara paling umum adalah mengirim kode sekali pakai (OTP, one-time password) yang harus dimasukkan kembali. Pertanyaannya, lewat kanal apa kode itu dikirim supaya cepat sampai dan benar-benar dibaca?
WhatsApp jadi pilihan yang masuk akal karena hampir semua pelanggan di Indonesia sudah memakainya setiap hari. Kode yang masuk ke chat WhatsApp cenderung dibaca dalam hitungan detik, tanpa memaksa pengguna memasang aplikasi authenticator tambahan. Lewat OTP WhatsApp API, backend Anda cukup memanggil satu endpoint untuk mengirim kode, lalu memverifikasinya saat pengguna menuliskannya kembali. Artikel ini membahas cara kerjanya di Jalinara, sisi keandalan, dan praktik keamanan yang wajib Anda pegang.
Apa itu OTP lewat WhatsApp dan kenapa memilih WA
OTP adalah kode acak berumur pendek yang dikirim ke pengguna untuk membuktikan bahwa ia memegang nomor atau akun tertentu. Kode ini biasanya muncul di beberapa momen penting:
- Saat pendaftaran akun baru, untuk memastikan nomor yang didaftarkan valid dan aktif.
- Saat login dari perangkat atau lokasi yang belum dikenali.
- Saat menyetujui transaksi sensitif, misalnya penarikan dana atau perubahan data akun.
Kenapa memakai WhatsApp, bukan kanal lain? Ada beberapa alasan yang praktis:
- Dibaca cepat. Notifikasi WhatsApp masuk ke aplikasi yang sudah dibuka pengguna sepanjang hari, jadi kode jarang terabaikan.
- Tanpa aplikasi tambahan. Pengguna tidak perlu memasang authenticator atau membuka email; cukup buka chat yang sudah ada.
- Konteks lebih jelas. Pesan bisa menyertakan nama brand dan penjelasan singkat, sehingga pengguna tidak ragu kode itu dari siapa.
- Alur lebih ringkas. Banyak orang lebih terbiasa menyalin kode dari WhatsApp ketimbang menunggu SMS yang kadang tertahan.
Cara kerja OTP WhatsApp API di Jalinara
Alurnya sederhana dan seluruhnya dikendalikan dari sisi server Anda. Saat pengguna daftar, login, atau memulai transaksi, backend menghasilkan kode acak, menyimpannya secara aman, lalu meminta Jalinara mengirimkannya ke nomor pengguna. Setelah pengguna memasukkan kode, backend membandingkannya dengan yang tersimpan.
Endpoint intinya adalah POST /send. Anda mengirim header Authorization: Bearer <token> beserta parameter target (nomor internasional tanpa tanda plus, misalnya 6281234567890) dan message yang berisi kode. Respons berupa JSON seperti {"status": true, "detail": "message queued", "id": [ ... ]}. Perhatikan kata "queued": pesan masuk antrean pengiriman, bukan dikirim seketika. Sebelum bergantung penuh pada pengiriman, Anda juga bisa memeriksa status perangkat lewat GET /device untuk memastikan field connected bernilai benar. Detail parameter lengkap ada di dokumentasi API, dan langkah dasar pengirimannya dibahas di panduan cara kirim WhatsApp lewat API.
Perlu jujur di sini. Jalur koneksi WhatsApp Web itu bukan API resmi dari Meta, dan Jalinara tidak berafiliasi dengan Meta. Jalur ini mudah dipasang dan cocok untuk mulai atau untuk kebutuhan UMKM. Untuk volume yang sangat besar atau OTP yang benar-benar kritikal, tersedia jalur WhatsApp Cloud API resmi Meta yang bisa Anda pilih.
Keandalan: antrean dan retry menjaga OTP tetap sampai
OTP kehilangan gunanya kalau telat atau hilang di tengah jalan. Karena itu, di balik satu panggilan API sederhana, Jalinara memproses setiap pesan lewat mekanisme yang dirancang supaya kode tetap terkirim meski kondisi jaringan tidak sempurna.
- Antrean dengan worker. Setiap pesan diproses lewat antrean, bukan sekadar dikirim lalu dilupakan (fire-and-forget).
- Retry otomatis. Secara bawaan sistem mencoba ulang hingga tiga kali dengan jeda sekitar lima detik, dan nilai ini dapat dikonfigurasi lewat env.
- Sadar kondisi koneksi. Bila perangkat sedang offline atau menyambung ulang (lumrah pada WhatsApp Web, sekitar 10 sampai 60 detik), pesan diantre ulang dengan jeda acak, bukan langsung dianggap gagal.
- Anti-kirim ganda. Pesan dikunci berstatus "sending" sebelum dikirim; saat aplikasi restart, hanya pesan berstatus "queued" yang dipulihkan, sehingga kode yang sedang atau sudah dikirim tidak terkirim dua kali.
- Pemantauan. Tersedia health check publik lewat GET /health plus modul Monitoring untuk melihat kondisi layanan.
Kombinasi ini penting untuk OTP karena satu kode yang gagal kirim bisa langsung menghambat pengguna menyelesaikan pendaftaran atau transaksi. Kupasan lebih dalam soal arsitektur ini ada di artikel ketahanan API WhatsApp Jalinara.
Praktik keamanan OTP yang wajib Anda pegang
API yang andal tetap butuh disiplin di sisi aplikasi Anda. Sebagian besar risiko OTP justru datang dari cara kode itu dibuat, disimpan, dan diverifikasi, bukan dari kanal pengirimannya. Beberapa hal yang sebaiknya jadi standar:
- Umur kode pendek. Buat OTP kedaluwarsa cepat, misalnya beberapa menit saja, supaya jendela penyalahgunaan kecil.
- Batasi percobaan. Terapkan rate limit pada verifikasi kode dan pada permintaan pengiriman ulang, agar tidak bisa ditebak dengan brute force.
- Jangan simpan kode polos. Simpan versi ter-hash dari OTP, bukan teks aslinya, lalu bandingkan hash saat verifikasi.
- Jangan tampilkan di log. Pastikan kode tidak bocor ke log aplikasi, pesan error, atau dashboard internal.
- Batasi frekuensi kirim ulang. Beri jeda antar permintaan "kirim ulang" agar nomor pengguna tidak dibanjiri pesan.
- Satu kode satu tujuan. Ikat kode pada sesi atau permintaan tertentu, dan hanguskan begitu berhasil dipakai.
Prinsip-prinsip ini melengkapi keamanan di level integrasi, seperti menjaga token API tetap rahasia. Pembahasan lebih luas soal itu ada di artikel keamanan API WhatsApp.
Kapan mempertimbangkan jalur resmi
Untuk banyak kebutuhan, mulai dari verifikasi pendaftaran toko online sampai konfirmasi login aplikasi internal, jalur WhatsApp Web sudah lebih dari cukup dan cepat dipasang. Tetapi kalau OTP menjadi tulang punggung sistem yang benar-benar kritikal, atau volumenya sangat tinggi, jujur saja pertimbangkan jalur WhatsApp Cloud API resmi Meta. Kabar baiknya, kedua jalur ini sama-sama bisa Anda akses lewat Jalinara, jadi Anda bisa mulai dari yang sederhana lalu naik kelas saat kebutuhan bertambah. Perbandingan karakteristik keduanya diulas di artikel WhatsApp Business API vs biasa.
Kalau Anda ingin mencoba mengirim OTP pertama dari kode Anda sendiri, langkahnya ringan. Anda bisa buat token gratis di Jalinara tanpa kartu kredit, sambungkan perangkat, lalu panggil POST /send dari backend Anda. Mulai dari satu kode verifikasi, lihat seberapa cepat pengguna membacanya, baru kembangkan alurnya sesuai kebutuhan bisnis.
Poin Penting
- OTP lewat WhatsApp adalah kode sekali pakai yang dikirim ke chat WA, cepat dibaca dan tanpa memaksa pengguna memasang aplikasi tambahan.
- Backend Anda memanggil POST /send dengan header Authorization Bearer, parameter target dan message, saat pengguna daftar, login, atau bertransaksi.
- Respons memuat status queued: pesan masuk antrean pengiriman, bukan terkirim seketika; status perangkat bisa dicek lewat GET /device.
- Keandalan dijaga antrean plus retry otomatis (default 3 kali, jeda sekitar 5 detik) dan penanganan perangkat offline dengan antre ulang berjeda acak.
- Keamanan OTP wajib: umur kode pendek, batasi percobaan (rate limit), simpan hash bukan kode polos, dan jangan tampilkan kode di log.
- Jalur WhatsApp Web bukan API resmi Meta dan Jalinara tidak berafiliasi dengan Meta; untuk OTP berskala sangat tinggi atau kritikal pertimbangkan WhatsApp Cloud API resmi.
Pertanyaan yang sering ditanyakan
Apa itu OTP lewat WhatsApp?
OTP lewat WhatsApp adalah kode sekali pakai berumur pendek yang dikirim ke chat WhatsApp pengguna untuk memverifikasi identitasnya saat mendaftar, login, atau menyetujui transaksi. Pengguna menyalin kode itu kembali ke aplikasi Anda untuk membuktikan bahwa ia memegang nomor tersebut.
Kenapa memakai WhatsApp untuk OTP dibanding kanal lain?
WhatsApp cenderung dibaca sangat cepat karena aplikasinya sudah dipakai pengguna setiap hari, dan tidak menuntut pemasangan aplikasi authenticator tambahan. Pesan juga bisa menyertakan konteks brand. Untuk kebutuhan yang sangat besar atau kritikal, pertimbangkan jalur WhatsApp Cloud API resmi Meta.
Endpoint apa yang dipakai untuk mengirim OTP di Jalinara?
Anda memakai POST /send dengan header Authorization: Bearer
Apakah OTP langsung terkirim seketika setelah memanggil API?
Tidak selalu instan. Respons memuat status queued, artinya pesan masuk antrean pengiriman lebih dulu lalu diproses worker. Ada retry otomatis dan penanganan perangkat yang sedang offline, sehingga kode umumnya tetap sampai meski tidak selalu dalam sekejap.
Bagaimana menjaga keamanan OTP di sisi aplikasi saya?
Buat kode kedaluwarsa dalam waktu singkat, batasi jumlah percobaan verifikasi dan pengiriman ulang dengan rate limit, simpan kode dalam bentuk hash bukan teks polos, dan pastikan kode tidak pernah muncul di log atau pesan error.
Apakah koneksi WhatsApp Web ini API resmi dari Meta?
Bukan. Jalur WhatsApp Web bukan API resmi Meta, dan Jalinara tidak berafiliasi dengan Meta. Jalur ini mudah dipakai dan cocok untuk mulai atau UMKM. Untuk kebutuhan kritikal atau skala besar, tersedia jalur WhatsApp Cloud API resmi Meta.