Kode verifikasi melalui SMS masih banyak digunakan oleh aplikasi pesan, marketplace, toko online, layanan digital, dan berbagai platform yang membutuhkan konfirmasi nomor telepon pengguna. Kode ini biasanya disebut OTP atau One-Time Password, yaitu kode sementara yang hanya dapat digunakan satu kali dan memiliki masa berlaku tertentu.
Bagi pengguna, proses verifikasi terlihat sederhana. Pengguna memasukkan nomor telepon, menekan tombol untuk meminta kode, kemudian menunggu SMS masuk. Setelah itu, kode dimasukkan kembali ke aplikasi untuk menyelesaikan proses pendaftaran atau login.
Namun, di balik proses tersebut terdapat beberapa sistem yang bekerja secara berurutan. Memahami cara kerjanya dapat membantu pengguna mengetahui mengapa kode terkadang terlambat, sekaligus membantu developer atau pemilik toko online ketika menguji sistem registrasi mereka.
Proses biasanya dimulai ketika pengguna memasukkan nomor telepon ke dalam aplikasi. Sistem terlebih dahulu memeriksa apakah format nomor sudah sesuai dengan aturan yang digunakan.
Sebagai contoh, sebuah aplikasi dapat meminta pengguna memilih kode negara terlebih dahulu. Untuk nomor Indonesia, kode negara yang digunakan adalah +62.
Setelah nomor dikirimkan, server aplikasi akan membuat kode verifikasi secara otomatis. Biasanya kode terdiri dari empat hingga enam angka acak.
Kode tersebut kemudian disimpan sementara pada server bersama informasi seperti nomor tujuan, waktu pembuatan, masa berlaku, dan jumlah percobaan verifikasi.
Selanjutnya, server mengirimkan permintaan kepada penyedia SMS gateway. Penyedia SMS gateway bertugas meneruskan pesan kepada operator seluler yang digunakan oleh penerima.
Secara sederhana, alurnya dapat digambarkan seperti berikut:
Pengguna → Aplikasi → Server Aplikasi → SMS Gateway → Operator Seluler → Perangkat Pengguna.
Ketika SMS sudah diterima, pengguna memasukkan kode ke aplikasi. Server kemudian membandingkan kode tersebut dengan kode yang sebelumnya dibuat.
Apabila kode sesuai dan belum kedaluwarsa, proses verifikasi berhasil.
Sebaliknya, apabila kode salah, sudah pernah digunakan, atau melewati batas waktu, aplikasi biasanya akan meminta pengguna melakukan verifikasi ulang.
Salah satu pertanyaan yang sering muncul adalah mengapa kode OTP tidak langsung diterima setelah pengguna menekan tombol kirim.
Penyebabnya tidak selalu berasal dari aplikasi. Pengiriman SMS melibatkan beberapa sistem yang berbeda sehingga keterlambatan dapat terjadi pada salah satu bagian jalur tersebut.
Salah satu penyebabnya adalah antrean pengiriman pada SMS gateway. Ketika banyak pengguna melakukan pendaftaran secara bersamaan, penyedia SMS dapat menerima jumlah permintaan yang sangat besar dalam waktu singkat.
Pesan kemudian diproses melalui antrean sebelum diteruskan kepada operator.
Kondisi jaringan operator juga dapat memengaruhi kecepatan pengiriman. Walaupun perangkat pengguna memiliki koneksi internet yang baik melalui Wi-Fi, SMS tetap bergantung pada jaringan seluler.
Selain itu, operator tertentu dapat melakukan penyaringan terhadap pesan otomatis. Sistem semacam ini digunakan untuk mengurangi spam dan penyalahgunaan layanan SMS.
Akibatnya, sebagian pesan dapat mengalami penundaan sebelum akhirnya diteruskan kepada pengguna.
Ketika OTP tidak langsung masuk, sebagian pengguna akan menekan tombol “Kirim Ulang” berkali-kali.
Cara tersebut justru dapat menimbulkan masalah lain.
Banyak aplikasi menggunakan sistem rate limiting. Artinya, jumlah permintaan OTP dari satu nomor atau satu perangkat dibatasi dalam periode tertentu.
Sebagai contoh, sistem dapat mengharuskan pengguna menunggu sebelum meminta kode baru.
Ketika kode baru dibuat, kode sebelumnya juga dapat dinonaktifkan. Hal ini menyebabkan pengguna terkadang menerima beberapa SMS sekaligus tetapi hanya kode paling baru yang masih berlaku.
Karena itu, ketika kode belum diterima, lebih baik menunggu terlebih dahulu sebelum meminta OTP berikutnya.
Developer juga sebaiknya memberikan indikator waktu pada aplikasi, misalnya dengan menampilkan hitung mundur sebelum tombol pengiriman ulang dapat digunakan kembali.
Kesalahan format nomor merupakan penyebab sederhana yang juga sering terjadi.
Misalnya pengguna memiliki nomor:
0812xxxxxxx
Apabila aplikasi sudah menyediakan pilihan kode negara +62, format nomor yang dimasukkan dapat menjadi:
812xxxxxxx
Sehingga sistem membacanya sebagai:
+62812xxxxxxx
Namun, aturan format dapat berbeda pada setiap aplikasi. Karena itu, pengguna sebaiknya mengikuti petunjuk yang tersedia pada halaman pendaftaran.
Developer juga perlu memastikan aplikasi memberikan validasi yang jelas apabila format nomor tidak sesuai.
Dengan demikian, pengguna dapat mengetahui kesalahan sebelum permintaan OTP dikirimkan ke server.
Dalam pengembangan aplikasi, proses registrasi biasanya tidak diuji hanya satu kali.
Developer dapat melakukan puluhan pengujian untuk memastikan sistem bekerja pada berbagai kondisi.
Beberapa skenario yang biasa diuji antara lain pendaftaran pengguna baru, pengiriman ulang OTP, kode salah, kode kedaluwarsa, perubahan nomor telepon, login ulang, dan batas jumlah permintaan verifikasi.
Menggunakan nomor telepon pribadi untuk seluruh proses tersebut tentu kurang ideal.
Data akun pribadi dapat bercampur dengan data pengujian, sementara nomor yang sama juga mungkin sudah terdaftar pada platform yang sedang diuji.
Karena itu, developer atau pemilik toko online dapat menyediakan nomor khusus yang hanya digunakan untuk kebutuhan pengujian.
Dalam kondisi tertentu, mereka juga dapat menggunakan layanan nomor virtual selama penggunaannya sesuai dengan kebijakan platform dan dilakukan untuk kebutuhan yang sah. Salah satu referensi yang dapat ditemukan untuk kebutuhan tersebut adalah layanan jual nokos wa, terutama ketika tim membutuhkan nomor terpisah untuk melakukan pengujian alur pendaftaran tanpa menggunakan nomor pribadi.
Penggunaan nomor terpisah membantu developer menjaga lingkungan pengujian tetap terorganisir.
Namun, nomor virtual sebaiknya digunakan secara bertanggung jawab dan bukan untuk mengambil alih akun pihak lain, membuat akun massal tanpa izin, menghindari pembatasan platform, atau melakukan aktivitas yang melanggar aturan layanan.
Misalnya sebuah toko online sedang mengembangkan fitur registrasi pelanggan menggunakan nomor telepon.
Developer dapat memulai pengujian dengan membuat akun baru menggunakan nomor khusus testing.
Pertama, masukkan nomor telepon dan tekan tombol registrasi.
Selanjutnya, periksa apakah aplikasi menampilkan informasi bahwa OTP sedang dikirim.
Setelah SMS diterima, catat waktu yang dibutuhkan sejak permintaan dibuat sampai kode diterima.
Masukkan kode tersebut dan pastikan akun dapat dibuat dengan benar.
Setelah skenario normal berhasil, developer dapat menguji kondisi lain.
Coba masukkan OTP yang salah dan pastikan sistem menampilkan pesan kesalahan yang mudah dipahami.
Kemudian tunggu sampai OTP kedaluwarsa dan coba masukkan kembali kode tersebut.
Sistem yang baik seharusnya menolak kode lama dan meminta pengguna mendapatkan kode baru.
Pengujian juga dapat dilakukan pada tombol kirim ulang OTP. Pastikan pengguna tidak dapat mengirim permintaan tanpa batas dalam waktu singkat.
Pembatasan ini penting untuk mencegah penyalahgunaan sekaligus mengurangi pengiriman SMS yang tidak diperlukan.
Walaupun nomor terpisah berguna, developer tidak harus mengirim SMS sungguhan untuk setiap pengujian.
Untuk proses pengembangan rutin, sebaiknya gunakan staging environment.
Staging adalah lingkungan yang dibuat menyerupai sistem produksi tetapi digunakan khusus untuk pengembangan dan pengujian.
Pada lingkungan tersebut, developer dapat membuat sistem OTP simulasi.
Sebagai contoh, server staging dapat menggunakan kode testing tertentu sehingga developer dapat menguji proses pendaftaran tanpa harus menunggu SMS sungguhan setiap kali menjalankan pengujian.
Metode ini sangat membantu terutama untuk automated testing.
SMS sungguhan kemudian digunakan ketika tim ingin melakukan pengujian integrasi secara menyeluruh sebelum fitur diluncurkan.
Untuk kebutuhan tertentu, layanan seperti AdaOTP juga dapat dipertimbangkan sebagai referensi ketika tim membutuhkan nomor terpisah dalam proses pengujian yang sesuai dengan kebijakan layanan yang digunakan.
Developer dapat meningkatkan pengalaman pengguna dengan beberapa langkah sederhana.
Pertama, tampilkan nomor tujuan secara sebagian, misalnya +62 812****1234. Hal ini membantu pengguna memastikan bahwa kode dikirim ke nomor yang benar.
Kedua, tampilkan penghitung waktu sebelum tombol kirim ulang dapat digunakan.
Ketiga, berikan pesan kesalahan yang spesifik.
Daripada hanya menampilkan “Terjadi kesalahan”, aplikasi sebaiknya menjelaskan apakah OTP salah, sudah kedaluwarsa, terlalu banyak permintaan, atau nomor memiliki format yang tidak valid.
Developer juga perlu menyimpan log transaksi pengiriman OTP.
Log tersebut dapat mencatat waktu permintaan, status pengiriman, penyedia SMS yang digunakan, dan respons yang diterima dari gateway.
Informasi tersebut sangat membantu ketika terjadi masalah karena developer dapat menentukan apakah kendala berasal dari aplikasi, SMS gateway, operator, atau sisi pengguna.
Kode verifikasi SMS bekerja melalui beberapa tahapan, mulai dari aplikasi, server, SMS gateway, operator seluler, hingga akhirnya sampai ke perangkat pengguna.
Karena proses tersebut melibatkan beberapa sistem, keterlambatan OTP masih mungkin terjadi.
Pengguna dapat mengurangi masalah dengan memastikan format nomor sudah benar, menunggu beberapa saat sebelum meminta ulang OTP, serta memastikan perangkat masih dapat menerima SMS.
Sementara itu, developer dan pemilik toko online sebaiknya menggunakan nomor terpisah ketika perlu melakukan pengujian registrasi berulang kali. Untuk pengembangan rutin, staging environment dan OTP simulasi biasanya lebih praktis, sedangkan nomor testing dapat digunakan ketika perlu memastikan proses pengiriman SMS nyata berjalan sebagaimana mestinya.
Dengan pengujian yang terstruktur dan penggunaan nomor yang bertanggung jawab, proses registrasi dapat dibuat lebih stabil sekaligus memberikan pengalaman yang lebih baik bagi pengguna.
WhatsApp us