API Verifikasi OTP SMS
Anda dapat menggunakan API Verifikasi OTP untuk mengirimkan One Time PIN (OTP) melalui SMS untuk memastikan bahwa pelanggan Anda adalah orang yang seharusnya.
Verifikasi OTP melalui ponsel sangatlah penting untuk proses-proses seperti:
- Menghindari SPAM - untuk melindungi proses pendaftaran akun atau registrasi
- Menghindari Hack - Anda dapat membuat aplikasi Anda untuk melakukan verifikasi pengguna untuk proses-proses yang sangat penting, seperti transaksi online
- Memastikan Data Pelanggan - untuk membuat database nomor ponsel pelanggan Anda yang akurat
Anda dapat membuat pesan SMS sendiri (yang berisi kode One Time PIN) yang nantinya akan dikirimkan oleh AYOSMS!, sehingga Anda dapat menggunakan bahasa asing misalnya, atau menambahkan promosi/diskon layanan Anda!
Secara garis besar, ada 2 API utama untuk melakukan verifikasi ini, yaitu:
- API Permintaan Pengiriman SMS OTP
- API Pencocokan OTP dari Pengguna
1. API Permintaan Pengiriman SMS OTP
Pada bagian ini akan dijelaskan mengenai penggunaan API Permintaan Pengiriman SMS OTP.
Endpoint URL
Seluruh permintaan untuk API Permintaan Pengiriman SMS OTP harus ditujukan ke alamat URL sebagai berikut:Input Parameters
Tabel berikut ini adalah daftar parameter bisa dikirimkan ke alamat URL diatas. Perhatikan bahwa 4 parameter pertama adalah WAJIB dikirimkan sedangkan lainnya adalah optional. Semua parameter bersifat case sensitive.| Parameter | Deskripsi | Contoh Nilai |
|---|---|---|
| api_key | Wajib API Key di akun AYOSMS!. | 11877c8e0ac231ca93ec2cfcbe1820eb |
| from | Wajib Pengirim pesan SMS. Maksimum 11 karakter. 7-bit karakter. | AYOSMS%21 |
| to | Wajib Nomor tujuan menggunakan format internasional (prefix dengan kode negara tanpa tanda '+'). | 62811990000 |
| msg | Wajib Berisi "merek" atau "nama layanan Anda", ATAU dapat juga berisi pesan apapun dari aplikasi Anda. Isian ini harus di URL encode dalam karakter Unicode UTF-8. Terbatas 400 karakter (sudah termasuk 6 karakter kode OTP). Hanya menerima 7-bit karakter. Isian pesan ini akan diperiksa apakah mengandung kata "@@PIN@@" atau tidak. Jika ada kata "@@PIN@@" maka akan otomatis diubah menjadi 6 karakter kode OTP. Jika tidak ada kata "@@PIN@@" maka akan dikirimkan pesan OTP default dengan mencantumkan "merek" atau "nama layanan Anda". |
e-storeku Kode+e-storeku%3A+%40%40PIN%40%40.+Diskon+50%25+untuk+pembelian+pertama+bulan+April. |
| lang | Bahasa untuk pesan default pada isian parameter "msg". Opsi tersedia en/id (default id) | id |
| pin_type | PIN yang dikirimkan apakah dalam bentuk ANGKA ACAK (6 digit) atau KOMBINASI HURUF & ANGKA ACAK (6 karakter). Opsi tersedia number/alpha (default alpha) | number |
| expired | Lama kadaluarsa kode OTP ini dalam satuan detik. Default adalah selama 300 detik (5 menit). Nilai yang dapat diberikan adalah antara 60 - 86400. Jika nilai yang diisi tidak dalam rentang tersebut maka otomatis akan dianggap menjadi 300 (5 menit). |
600 |
| delay | Waktu tunda dalam detik yang dibutuhkan untuk pengiriman SMS OTP ke nomor tujuan. Default adalah segera (0 detik). Nilai yang dapat diberikan adalah antara 30 - 86400 Jika nilai yang diisi tidak dalam rentang tersebut maka otomatis akan dianggap menjadi 0 (0 detik). |
60 |
| trx_id | Kode Unik yang dikirim dari pengguna AYOSMS! untuk membantu referensi pada pelaporan SMS. Terbatas 36 karakter. Hanya menerima 7-bit karakter. | ae75fa6b-aa5d-4ea9-9ce7-d7db9da760af |
| dlr | Jika Anda ingin menerima status laporan pengiriman SMS "Delivery Report" dari operator maka isi parameter ini dengan '1'. Status laporan ini belum tentu tersedia di semua operator. Alamat URL "delivery report" dapat diisi di halaman pengaturan akun setelah login ke AYOSMS! Webtool. | 1 |
Balasan Permintaan API
SMS API AYOSMS! akan memberikan balasan dalam 2 bentuk:- HTTP Header Status (biasanya dalam bentuk kode 200 OK yang menunjukkan bahwa permintaan API sudah sukses diterima)
- HTTP Content (dalam format JSON)
Balasan SMS Sukses
Standar balasan API SMS adalah kode status=1:| HTTP Header | 200 OK |
| Content | { |
Balasan Error: Insufficient Balance
| HTTP Header | 200 OK |
| Content | { |
Response Attributes
| Parameter | Deskripsi |
|---|---|
| status | Kode status '1' menunjukkan permintaan sukses diterima, sedangkan '0' menunjukkan permintaan gagal diterima (untuk kode Error, silakan lihat penjelasannya dibawah) |
| msg_id | ID unik untuk identifikasi setiap permintaan pengiriman SMS. Digunakan juga untuk mencocokkan setiap laporan pengiriman (Delivery Report). |
| trx_id | Kode unik referensi yang diisi oleh user saat melakukan permintaan pengiriman SMS melalui API |
| secret | Kode unik yang akan digunakan untuk proses pencocokan verifikasi selanjutnya saat pengguna memasukkan kode OTP dari SMS yang diterima |
| segment | Jumlah SMS segmen yang dikirimkan. AYOSMS! hanya mendukung GSM 7bit karakter. 1-160 karakter akan dihitung sebagai 1 segmen SMS. Lebih dari 160 karakter maka SMS akan dihitung per 153 karakter sebagai 1 segment. 1 segment SMS dihitung seharga 1 SMS. |
| error-text | Kode error diikuti dengan penjelasannya |
Balasan Kode Error
| Kode Balasan | Deskripsi |
|---|---|
| ERR001 | akun user dibatalkan |
| ERR002 | pulsa tidak mencukupi |
| ERR005 | parameter "from" salah atau kosong |
| ERR006 | parameter "to" salah atau kosong |
| ERR007 | parameter "msg" salah atau kosong |
| ERR008 | parameter "api_key" tidak ditemukan |
| ERR009 | pengirim/masking tidak terdaftar |
| ERR012 | ditemukan karakter non GSM 7bit (saat ini AYOSMS! hanya mendukung karakter GSM 7bit) |
| ERR013 | lebih dari 400 karakter |
| ERR014 | tujuan nomor tidak diketahui |
| ERR999 | parameter "api_key" kosong |
Contoh
Untuk permintaan pengiriman SMS OTP
| Parameter | Value in Request | Description |
|---|---|---|
| api_key | your_unique_api_key | API Key di akun AYOSMS!. |
| from | AYOSMS%21 (URL encoded dari "AYOSMS!") | Pengirim pesan SMS. Maksimum 11 karakter. 7-bit karakter. |
| to | 62811000000 | Nomor tujuan menggunakan format internasional (prefix dengan kode negara tanpa tanda '+'). |
| msg | e-storeku | Berisi merek "e-storeku". Karena tidak ada kata "@@PIN@@" maka akan dikirimkan pesan OTP default, yaitu: "Ini adalah kode PIN untuk e-storeku: 67GDTJ. PIN ini akan kadaluarsa dalam 5 menit" |
| trx_id | mytrxid12345 | Kode Unik yang dikirim dari pengguna AYOSMS! untuk membantu referensi pada pelaporan SMS. Terbatas 36 karakter. Hanya menerima 7-bit karakter. |
| expired | 600 | Kode OTP akan kadaluarsa dalam 600 detik (10 menit) |
| delay | 60 | Kode OTP akan dikirimkan dalam waktu 60 detik kedepan |
Laporan Pengiriman
Laporan Pengiriman (Delivery Receipt (DLR)), adalah pesan yang dikirimkan operator untuk menunjukkan posisi terakhir dari pesan SMS kita.
Meminta Laporan Pengiriman
Jika pada saat permintaan pengiriman mengisi parameter "dlr=1" maka sistem akan memberikan umpan balik sesaat setelah sistem AYOSMS! menerima unpan balik permintaan pengiriman SMS dari operator.
Permintaan Umpan Balik DLR
Sesaat setelah AYOSMS! menerima laporan pengiriman dari operator (DLR), pengiriman umpan balik HTTP DLR akan dikirimkan ke URL Umpan Balik DLR Anda dengan parameter-parameter sebagai berikut:
| Parameter | Deskripsi |
|---|---|
| msg_id | ID unik untuk identifikasi setiap permintaan pengiriman SMS. Digunakan juga untuk mencocokkan setiap laporan pengiriman (Delivery Report). |
| trx_id | Kode unik referensi yang diisi oleh user saat melakukan permintaan pengiriman SMS melalui API |
| from | Pengirim pesan SMS. |
| to | Nomor tujuan menggunakan format internasional (prefix dengan kode negara tanpa tanda '+'). |
| delivered | Waktu saat AYOSMS! menerima status DR dari operator (dalam format UNIX TIMESTAMP, GMT+7). |
| status | Selalu berisi '1' jika SMS terkirim sampai ke nomor tujuan, dan '0' untuk gagal (seperti SMS kadaluarsa/nomor tujuan tidak aktif/handset error dll) |
| error-text | Berisi keterangan lebih detail mengenai kegagalan. (Lihat keterangan error-text dibawah) Error-text: DELIVERED PENDING FAILED EXPIRED GENERATING MPOSTER URL NO ROUTE TO DESTINATION NUMBER SENT NOT DELIVERED |
Balasan dari Sistem Anda
Sistem Anda HARUS membalas dengan text "OK" saat sistem AYOSMS! mengirimkan DR. Sistem AYOSMS! akan mencoba sampai 10x jika sistem Anda tidak memunculkan text "OK".| HTTP Header | 200 OK |
| Content | OK |
2. API Pencocokan OTP dari Pengguna
Endpoint URL
Seluruh permintaan untuk API Pencocokan OTP dari Pengguna harus ditujukan ke alamat URL sebagai berikut:Input Parameters
Tabel berikut ini adalah daftar parameter bisa dikirimkan ke alamat URL diatas. Perhatikan bahwa 4 parameter pertama adalah WAJIB dikirimkan sedangkan lainnya adalah optional. Semua parameter bersifat case sensitive.| Parameter | Deskripsi | Contoh Nilai |
|---|---|---|
| api_key | Wajib API Key di akun AYOSMS!. | 11877c8e0ac231ca93ec2cfcbe1820eb |
| pin | Wajib Kode OTP yang diinput oleh pengguna yang didapat dari hasil pengiriman SMS OTP. | 67GDTJ |
| secret | Wajib Berisi kode rahasia yang didapat dari respond panggilan API Permintaan Pengiriman SMS OTP | UHYBA3 |
| msisdncheck | Untuk mekanisme OTP dimana pengguna harus mengiriman kode OTP menggunakan ponsel mereka ke nomor tujuan tertentu (contoh: nomor pendek/premium), maka proses verifikasi dapat diperintahkan juga untuk mencocokkan nomor ponsel pengguna (saat dikirimi SMS OTP dengan saat pengguna mengirim balik kode OTP ke nomor tujuan tertentu). Nilai yang mungkin adalah null atau 1, (default null) | 1 |
| from | Hanya berguna jika opsi msisdncheck=1. Nomor ponsel pengguna yang dikirimi SMS OTP. Menggunakan format internasional (prefix dengan kode negara tanpa tanda '+'). | 62811000000 |
Balasan Pencocokan
SMS API AYOSMS! akan memberikan balasan dalam 2 bentuk:- HTTP Header Status (biasanya dalam bentuk kode 200 OK yang menunjukkan bahwa permintaan API sudah sukses diterima)
- HTTP Content (dalam format JSON)
Balasan SMS Sukses
Standar balasan API SMS adalah kode status=1:| HTTP Header | 200 OK |
| Content | { |
Balasan Error: PIN Kadaluarsa
| HTTP Header | 200 OK |
| Content | { |
Response Attributes
| Parameter | Deskripsi |
|---|---|
| status | Kode status '1' menunjukkan proses verifikasi sukses (kode PIN dan SECRET cocok), sedangkan '0' menunjukkan proses verifikasi gagal (untuk kode Error, silakan lihat penjelasannya dibawah) |
| error-text | Kode error diikuti dengan penjelasannya |
Balasan Kode Error
| Kode Balasan | Deskripsi |
|---|---|
| ERR001 | parameter "api_key" dan kode secret salah, tidak ditemukan atau kosong |
| ERR002 | nomor ponsel tidak cocok dengan nomor ponsel asal yang dikirimi SMS OTP |
| ERR003 | terlalu banyak kegagalan proses pencocokan. maksimum aktifitas pencocokan adalah 3x |
| ERR004 | PIN kadaluarsa |
| ERR005 | msisdncheck ada namun nomor ponsel tidak ditermukan |
| ERR006 | PIN dan secret tidak cocok |
| ERR007 | PIN salah atau kosong |
| ERR999 | parameter "api_key" kosong |
Contoh
Untuk permintaan Pencocokan OTP dari Pengguna
| Parameter | Value in Request | Description |
|---|---|---|
| api_key | 11877c8e0ac231ca93ec2cfcbe1820eb | API Key di akun AYOSMS!. |
| pin | 67GDTJ | kode OTP yang dimasukkan oleh pengguna untuk verifikasi setelah mendapatkannya dari SMS |
| secret | UHYBA3 | kode secret yang didapat dari respond API Permintaan Pengiriman SMS OTP |
| from | 62811000000 | Nomor tujuan menggunakan format internasional (prefix dengan kode negara tanpa tanda '+'). |
| msisdncheck | 1 | proses verifikasi membutuhkan kecocokan nomor ponsel pengguna |