FAQ & Cara Penggunaan

Panduan integrasi B2B Inbound WhatsApp & Telegram Authentication: kelola App, API key, webhook, top-up, dan log verifikasi.

Kembali

Panduan Cepat

Panduan integrasi B2B Inbound WhatsApp & Telegram Authentication: buat App, ambil API key, atur webhook, dan jalankan verifikasi lintas channel.

Alur cepat integrasi LessOTP.com

  1. 1Daftar atau login ke akun (Account) Anda.
  2. 2Top-up minimal 10.000 credit melalui Midtrans atau Pakasir. 1 credit = 1 rupiah.
  3. 3Buka Apps, buat App baru untuk aplikasi yang ingin diintegrasikan.
  4. 4Buat API key pada App tersebut dan simpan (key hanya ditampilkan sekali).
  5. 5Atur Webhook URL dan signing secret pada App agar hasil verifikasi terkirim.
  6. 6Untuk testing, buat App mode staging dan panggil POST /api/v1/staging/auth/request dari aplikasi Anda.
  7. 7Buka Dashboard → Simulator. Untuk WhatsApp klik Simulate Inbound; untuk Telegram klik Simulate Telegram Contact Share. Tanpa pesan asli dan tanpa debit saldo.
  8. 8Pastikan webhook staging menerima verification.success dengan X-Signature dan Idempotency-Key, lalu pindahkan endpoint/key ke production setelah lulus.

FAQ Umum

Jawaban singkat untuk pertanyaan yang paling sering muncul.

Apa itu LessOTP.com?

LessOTP.com adalah layanan infrastruktur B2B Inbound Phone Authentication via WhatsApp dan Telegram. Customer cukup mengirim satu pesan berisi kode unik untuk terverifikasi, tanpa mengetik OTP.

Apa itu credit?

Credit adalah satuan saldo di level Account. Nilainya tetap: 1 credit = 1 rupiah. Saldo dipakai bersama oleh semua App dalam Account.

Kapan saldo dipotong?

Saldo hanya dipotong saat verifikasi berhasil (Pay Per Success), untuk channel WhatsApp maupun Telegram. Jika unique_code kedaluwarsa, nomor tidak cocok, atau customer tidak membalas, saldo tidak berkurang.

Apa beda Strict dan Frictionless Authentication?

Strict: Anda mengirim phone_number saat request, dan nomor dari channel harus cocok. Frictionless: Anda tidak mengirim phone_number, dan nomor diselesaikan dari pesan inbound. WhatsApp memakai nomor pengirim, Telegram memakai nomor yang dibagikan user melalui tombol resmi Share phone number.

Bagaimana Telegram memverifikasi nomor telepon?

Telegram tidak memberikan nomor secara otomatis. Bot LessOTP meminta user menekan tombol resmi Share phone number (KeyboardButton request_contact). Nomor hanya diterima jika payload contact benar-benar milik pengirim pesan.

Kenapa contact.user_id wajib cocok dengan pengirim Telegram?

Telegram memungkinkan user menempel contact orang lain. Sistem memverifikasi contact.user_id === message.from.id agar nomor yang diverifikasi pasti adalah nomor milik user Telegram yang sedang berinteraksi, bukan nomor orang lain. Jika tidak cocok, verifikasi ditolak dan saldo tidak dipotong.

Bisakah user mengetik nomor HP secara manual di Telegram?

Tidak. Demi keamanan, Telegram hanya menerima nomor lewat tombol resmi Share phone number. Username Telegram juga tidak dipakai sebagai identity utama karena opsional dan bisa berubah.

Apakah Telegram mendukung mode Frictionless dan Staging?

Ya. Frictionless Telegram tetap meminta Share phone number, lalu nomor hasil contact dikirim ke webhook Anda sebagai phone_number terverifikasi. Staging Telegram memakai Simulator (Simulate Telegram Contact Share): tidak ada pesan Telegram asli, tidak ada debit saldo, namun webhook client tetap dikirim seperti production.

Bagaimana saya menerima hasil verifikasi?

Hasil dikirim sebagai webhook event verification.success ke Webhook URL milik App Anda, ditandatangani dengan header X-Signature (HMAC SHA256). Payload menyertakan channel, mode, phone_number, dan identitas channel-specific (mis. telegram_user_id untuk Telegram).

Bagaimana skenario testing integrasi staging?

Buat App mode staging, buat API key staging, pasang Webhook URL yang memakai handler sama dengan production, lalu panggil POST /api/v1/staging/auth/request. Setelah request pending muncul, buka Dashboard → Simulator dan klik Simulate Inbound (WhatsApp) atau Simulate Telegram Contact Share (Telegram). Sistem tidak mengirim pesan asli dan tidak mendebit saldo, tetapi tetap mengirim webhook verification.success asli dengan X-Signature dan Idempotency-Key untuk menguji signature, idempotency, mapping request_id, dan flow login/onboarding.

Metode pembayaran apa yang tersedia untuk top-up?

Pembayaran diproses melalui payment gateway aktif (Midtrans atau Pakasir QRIS), termasuk QRIS, e-wallet, dan virtual account sesuai metode yang tersedia di pop-up pembayaran.

Berapa harga per verifikasi sukses?

Harga saat ini adalah 180 credit per verifikasi sukses, dengan nilai 1 credit = 1 rupiah. Harga berlaku sama untuk WhatsApp dan Telegram pada MVP, hanya dipotong untuk App production saat verifikasi sukses, dan mengikuti pengaturan harga terbaru dari admin. App staging gratis: tidak mengirim pesan asli dan tidak mendebit saldo.

Bantuan per Fitur

Baca petunjuk sesuai halaman yang sedang Anda gunakan.

Panduan Apps

Buat dan kelola App. Setiap App mewakili satu aplikasi yang Anda integrasikan dengan LessOTP.com.

  • Satu Account dapat memiliki banyak App dengan konfigurasi independen.
  • Setiap App memiliki API key, webhook URL, dan signing secret sendiri.
  • Nonaktifkan App untuk memblokir API key-nya tanpa menghapus konfigurasi.
  • Saldo tetap di level Account dan dipakai bersama semua App.

Mengapa perlu banyak App?

Memisahkan App per aplikasi/lingkungan memudahkan rotasi API key, webhook terpisah, dan pelacakan verifikasi per aplikasi.

Apakah menghapus App menghapus saldo?

Tidak. Saldo berada di level Account. Menghapus App hanya menghapus API key dan konfigurasi webhook App tersebut.

Panduan API Keys

Buat, lihat sekali, rotasi, dan cabut API key per App untuk mengakses API lessotp.com.

  • API key hanya ditampilkan satu kali saat dibuat. Simpan di tempat aman.
  • Gunakan header Authorization: Bearer {API_KEY} pada setiap request.
  • Rotasi key secara berkala dan cabut key yang bocor atau tidak terpakai.
  • API key mengidentifikasi App pemanggil sekaligus Account pemilik saldo.

Saya kehilangan API key, bisakah ditampilkan lagi?

Tidak. Key disimpan dalam bentuk hash dan tidak dapat ditampilkan ulang. Buat key baru lalu cabut key lama.

Apa yang terjadi jika key dicabut?

Request yang memakai key tersebut akan ditolak dengan error api_key_revoked. Aplikasi yang masih memakainya harus diperbarui.

Panduan Webhook Settings

Atur Webhook URL dan signing secret per App agar hasil verifikasi terkirim secara real-time.

  • Webhook URL wajib HTTPS dan tidak boleh menunjuk ke host jaringan privat.
  • Setiap payload ditandatangani dengan header X-Signature (HMAC SHA256).
  • Verifikasi signature di server Anda sebelum memproses payload.
  • Pengiriman gagal akan di-retry dengan backoff sesuai konfigurasi App.

Bagaimana menghindari pemrosesan ganda?

Setiap delivery membawa header Idempotency-Key. Simpan key tersebut dan abaikan delivery yang sudah pernah diproses.

Apa yang terjadi jika server saya down?

Sistem akan melakukan retry dengan backoff sesuai konfigurasi App. Pastikan endpoint stabil agar webhook tidak gagal permanen.

Panduan Log Verifikasi

Pantau verification request: request id, mode, status, nomor, timestamp, dan status delivery webhook.

  • PENDING berarti request menunggu pesan WhatsApp atau Telegram dari customer (filter channel tersedia di log).
  • VERIFIED berarti pesan inbound cocok dan saldo telah dipotong.
  • EXPIRED/FAILED berarti request tidak selesai dan saldo tidak dipotong.
  • Mode strict memvalidasi nomor; mode frictionless mengekstrak nomor pengirim (nomor WhatsApp atau nomor contact Telegram).

Mengapa verifikasi tidak masuk?

Pastikan customer mengirim pesan persis /start {unique_code} ke nomor WhatsApp platform atau /start {unique_code} ke bot Telegram sebelum kode kedaluwarsa, dan pada mode strict nomor pengirim cocok dengan phone_number request.

Mengapa status mismatch?

Pada mode strict, nomor pengirim pesan WhatsApp berbeda dengan phone_number yang Anda kirim saat request. Saldo tidak dipotong untuk kasus ini.

Panduan Top-up Credit

Tambahkan credit ke Account melalui Midtrans untuk menjalankan verifikasi.

  • Nilai konversi tetap: 1 credit = 1 IDR (Rupiah).
  • Minimal top-up adalah 10.000 credit.
  • Credit berada di level Account dan dipakai bersama semua App.
  • Jika pop-up tertutup atau pembayaran pending, cek statusnya di Riwayat Top-up.

Berapa nilai konversi credit?

Nilai credit sepenuhnya disamakan dengan Rupiah Indonesia: 1 credit = 1 IDR.

Mengapa credit belum masuk?

Beberapa metode pembayaran membutuhkan waktu konfirmasi. Pastikan pembayaran selesai, lalu cek Riwayat Top-up.

Panduan Riwayat Top-up

Lihat status pembayaran dan pastikan credit sudah ditambahkan ke Account.

  • Nilai konversi: 1 credit = 1 IDR (Rupiah).
  • Status settlement/success berarti pembayaran berhasil diproses.
  • Status pending berarti pembayaran belum selesai atau masih menunggu konfirmasi gateway.
  • Gunakan Refresh setelah menyelesaikan pembayaran untuk menarik status terbaru dari Midtrans.

Berapa nilai credit pada riwayat top-up?

Jumlah transaksi ditampilkan dalam credit dengan nilai tetap 1 credit = 1 IDR.

Apa arti pending?

Pending berarti pembayaran belum dikonfirmasi sukses oleh Midtrans. Selesaikan instruksi pembayaran atau tunggu konfirmasi bank/e-wallet.

Panduan Pengaturan Akun

Kelola password dan tindakan sensitif akun dengan aman.

  • Password baru minimal 8 karakter dan konfirmasi harus sama.
  • Gunakan password yang unik dan tidak dipakai di layanan lain.
  • Hapus akun adalah tindakan permanen; pastikan tidak ada saldo/integrasi penting sebelum melanjutkan.

Mengapa harus mengetik DELETE?

Konfirmasi manual membantu mencegah penghapusan akun secara tidak sengaja.