Ayo buat Anda hidup dengan OTP secepat kilat!

Kami akan membawa Anda dari “baru saja mendaftar” ke “mengirim OTP seperti pro” dalam beberapa langkah cepat.

Verifikasi Sekarang API

Dokumentasi API Verifikasi SMS

Versi - 1.0
tick-icon

Langkah 1: Daftar & Masuk

  1. Buka Pendaftaran Message Central
  2. Buat akun gratis Anda
  3. Gunakan kredit gratis Anda untuk menguji dan bermain-main dengan OTP
📌 Tip: Gunakan kredit gratis Anda untuk mengirim OTP tes segera sebelum ditayangkan.
tick-icon

Langkah 2: Integrasi API (Pengembang, Merakit!)

Kami telah membuat semuanya sangat sederhana. Salin beberapa cuplikan kode dan Anda akan menguji dalam waktu singkat.

Lebih suka mengawasi daripada pengkodean? Kami panduan video cepat Sudahkah Anda menutupi.

Parameter API untuk Verify Now

Parameter berikut perlu dikirim saat menggunakan API VerifyNow.

Parameter API
Mengetik
Nilai
Jenis aliran
Tali
SMS/WHATSAPP/RCS/AUDIO
RCS/ SOUND
tipe
Tali
TP

URL Dasar API Rest

Semua titik akhir API Platform di bawah ini harus diawali dengan URL berikut:

https://cpaas.messagecentral.com

Menghasilkan Token

Saat menggunakan API verifikasi SMS Verify Now untuk mengirim kode verifikasi SMS, panggilan awal harus ke API pembuatan token.

API ini mengembalikan token yang harus disertakan dalam semua panggilan berikutnya. Token otentikasi diperlukan untuk memvalidasi pengguna dan harus dimasukkan dalam bagian header dari setiap permintaan.

Lapangan
Mengetik
Wajib?
Deskripsi
ID Pelanggan
Tali
ya
Pengidentifikasi pelanggan (perlu mendaftar untuk mendapatkan ID pelanggan Anda)
negeri
Tali
tidak
Kode negara untuk mengirim OTP ke
surel
Tali
tidak
E-Mail
kunci
Tali
ya
Kata sandi terenkripsi Base-64
lingkup
Tali
tidak
Gunakan 'BARU' untuk pertama kalinya

Meminta Jalur URL:

/auth/v1/authentication/token

cURL

1curl --location 'https://cpaas.messagecentral.com/auth/v1/authentication/token? 
2customerId=%3CCustomerId%3E&key=%3CBase64%20Encrypted%20password%3E&scope=NEW&country=91
3&email=test%40messagecentral.com' \
4--header 'accept: */*'

‍

CATATAN: Untuk mengubah perintah cURL menjadi kode menggunakan Postman, buka Postman, impor perintah cURL melalui tombol “Impor”, lalu buat kode dalam bahasa pilihan Anda dengan mengklik tombol “Kode” di sisi kanan permintaan.

Tanggapan JSON

1{
2  "status": Integer,
3  "token": "String"
4}

Contoh Kode

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com")
  .method("GET", body)
  .addHeader("accept", "*/*")
  .build();
Response response = client.newCall(request).execute();
var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com',
  'headers': {
    'accept': '*/*'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'accept' => '*/*'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
import requests

url = "https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com"

payload = {}
headers = {
  'accept': '*/*'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
require "uri"
require "net/http"

url = URI("https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["accept"] = "*/*"

response = https.request(request)
puts response.read_body

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=<CustomerId>&key=<Base64 Encrypted password>&scope=NEW&country=91&email=test@messagecentral.com");
request.Headers.Add("accept", "*/*");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Kirim OTP

Untuk SendOTP pada nomor ponsel di bawah ini adalah parameter permintaan. Token otentikasi diperlukan untuk mengirim OTP yang dihasilkan oleh token API yang dihasilkan (yang dapat Anda temukan di atas di bagian Pendahuluan).

Parameter API
Mengetik
Wajib?
AuthToken
Tali
ya

Meminta Jalur URL:‍

Respons yang berhasil akan mengembalikan kode status 200.

/verification/v3/send

Parameter URL Minta:‍

Lapangan
Mengetik
Wajib?
Deskripsi
ID Pelanggan
Tali
ya
Kode negara
Panjang OTPl
Bilangan bulat
tidak
Kirim nomor antara 4 dan 8. Defaultnya adalah 4
Nomor Ponsel
Tali
ya
Nomor ponsel untuk teks tunggal
Jenis aliran
Tali
ya
Kami mengirim OTP menggunakan beberapa media seperti SMS, WhatsApp, email, dll. Untuk saat ini, gunakan SMS atau WhatsApp

cURL

1curl --location --request POST 'https://cpaas.messagecentral.com/verification/v3/send? 
2countryCode=91&flowType=SMS&mobileNumber=9999999999' \
3--header 'authToken: 
4eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDIGNzQwNCI6ImIhdCI6MTcxMjExOTA0MCwiZXhwIjo'

‍

CATATAN: Untuk mengubah perintah cURL menjadi kode menggunakan Postman, buka Postman, impor perintah cURL melalui tombol “Impor”, lalu buat kode dalam bahasa pilihan Anda dengan mengklik tombol “Kode” di sisi kanan permintaan. Anda dapat mengubah basis FlowType saluran pilihan Anda.

Tanggapan JSON

1{
2  "responseCode": 200,
3  "message": "SUCCESS",
4  "data": {
5    "verificationId": "xxxx",
6    "mobileNumber": "xxxx",
7    "responseCode": "200",
8    "errorMessage": null,
9    "timeout": "60",
10    "smCLI": null,
11    "transactionId": "xxxx"
12  }
13}

Contoh Kode

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999")
  .method("POST", body)
  .addHeader("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw")
  .build();
Response response = client.newCall(request).execute();
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999',
  'headers': {
    'authToken': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'authToken' => 'eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
import requests

url = "https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999"

payload = {}
headers = {
  'authToken': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
require "uri"
require "net/http"

url = URI("https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["authToken"] = "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw"

response = https.request(request)
puts response.read_body
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999");
request.Headers.Add("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Validasi OTP

Metode validateOTP adalah titik akhir REST API untuk memvalidasi kata sandi satu kali (OTP) untuk pelanggan.

Minta Header
Mengetik
Wajib?
AuthToken
Tali
ya

Meminta Jalur URL:

Respons yang berhasil akan mengembalikan kode status 200.

/verification/v3/validateOtp/
Lapangan
Mengetik
Wajib?
Deskripsi
ID Verifikasi
Panjang
ya
VerificationId dari respons /send api
kode
Tali
ya
tp
langidia
Tali
tidak
Nomor ponsel untuk teks tunggal
Jenis aliran
Tali
ya
  • Untuk dukungan beberapa bahasa
  • secara default adalah bahasa Inggris
  • Untuk saat ini kami hanya mendukung bahasa Inggris

cURL

1curl --location 'https://cpaas.messagecentral.com/verification/v3/validateOtp? 
2&verificationId=2949&code=1476' \
3--header 'authToken: 
4eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDIGNzQwNCI6ImIhdCI6MTcxMjExOTA0MC'

‍

CATATAN: Untuk mengubah perintah cURL menjadi kode menggunakan Postman, buka Postman, impor perintah cURL melalui tombol “Impor”, lalu buat kode dalam bahasa pilihan Anda dengan mengklik tombol “Kode” di sisi kanan permintaan.

Tanggapan JSON

Respons yang berhasil akan mengembalikan kode status 200.

1{
2  "responseCode": 200,
3  "message": "SUCCESS",
4  "data": {
5    "verficationId": "xxxx",
6    "mobileNumber": "xxxx",
7    "responseCode": "200",
8    "errorMessage": null,
9    "verificationStatus": "VERIFICATION_COMPLETED",
10    "authToken": null,
11    "transactionId": "xxxx"
12  }
13}

Contoh Kode

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476")
  .method("GET", body)
  .addHeader("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT")
  .build();
Response response = client.newCall(request).execute();
var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476',
  'headers': {
    'authToken': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'authToken' => 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://cpaas.messagecentral.com/verification/v3/validateOtp?&verificationId=2949&code=1476");
request.Headers.Add("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOT");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

require "uri"
require "net/http"

url = URI("https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["authToken"] = "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw"

response = https.request(request)
puts response.read_body
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://cpaas.messagecentral.com/verification/v3/send?countryCode=91&flowType=SMS&mobileNumber=9999999999");
request.Headers.Add("authToken", "eyJhbGciOiJIUzUxMiJ9.eyJzdWOiJDLTMzNDMyQTVGNDlGNzQwNCIsImlhdCI6MTcxMjExOTA0MCwiZXhw");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Kode Respon

Kode
Tampilan Teks
200
SUKSES
400
PERMOHONAN_BURUK
409
DUPLIKAT_SUMBER DAYA
500
SERVER_ERROR
501
INVALID_CUSTOMER_ID
505
INVALID_VERIFIKASI_ID
506
MINTA_SUDAH ADA
511
KODE_NEGARA TIDAK VALID
700
VERIFIKASI_GAGAL
702
SALAH_OTP_DISEDIAKAN
703
SUDAH DIVERIFIKASI
705
VERIFIKASI_KEDALUWARSA
800
MAKSIMAL_BATAS_TERCAPAI

Bantuan dan Dukungan

Butuh bantuan? Pakar kami tersedia 24/7 untuk memandu Anda melalui apa pun, kapan saja.

Email dukungan: support@messagecentral.com

Pertanyaan yang Sering Diajukan

1. Bagaimana saya bisa mengimplementasikan dengan kode khusus?

Anda dapat menggunakan postman untuk menulis ulang panggilan API dalam bahasa pemrograman pilihan Anda. Anda harus menggunakan: -

  • Metode POST untuk mengirim SMS
  • Metode GET untuk memvalidasi SMS OTP

2. Mengapa saya mendapatkan kesalahan “Metode tidak diizinkan” atau kode kesalahan 405?

Anda perlu memastikan bahwa URL titik akhir untuk API Token cocok dengan yang ditentukan dalam dokumentasi.Hal yang sama telah disebutkan di bawah ini: -

a. Token API menggunakan metode GET

b. Kirim API menggunakan metode POST

c. Validasi API menggunakan metode GET



3. Bagaimana cara menguji API verifikasi SMS?

Anda dapat menggunakan Postman untuk menguji API verifikasi SMS Message Central.

4. Mengapa saya mendapatkan halaman “Whitelabel Error”?

Jika Anda mendapatkan halaman Kesalahan Whitelabel, Anda harus memeriksa kesalahan berikut:

a. Anda menggunakan paket API yang salah

b. Anda belum mengganti placeholder dengan nilai aktual

c. API curl salah

d. Lokasi keriting belum diubah menjadi 'produksi' alih-alih 'pementasan'

5. Mengapa saya mendapatkan kode kesalahan 401?

Ini bisa jadi karena API atau token yang salah. Pastikan Anda telah mengikuti dokumentasi API kami untuk nilai token yang tepat.

6. Mengapa saya mendapatkan kode kesalahan 400 atau “Permintaan Buruk” di Postman?

Ada beberapa alasan untuk “Permintaan Buruk” di Postman. Anda dapat memeriksa kemungkinan alasan berikut: -

a. Periksa apakah AuthToken benar

b. Periksa apakah ada parameter yang hilang di API

c. Header harus diteruskan dalam format ini - application-x-www-form-urlencoded

7. Bagaimana cara menghasilkan AuthToken?

Untuk menghasilkan AuthToken di Postman, Anda harus: -

a. Temukan 'kunci' di GET API

b. Anda perlu menyalin kunci itu dan menyandikan yang sama menggunakan Base64 - https://www.base64encode.org/

‍c. Masukkan kata sandi yang dikodekan di placeholder 'Key'

d. Tekan GET API

Anda akan mendapatkan AuthToken.

8. Di mana saya menggunakan AuthToken?

Anda harus meletakkan AuthToken di header SEND API.

9. Apa semua placeholder yang perlu saya ubah di GET API untuk menghasilkan token?

Anda perlu mengubah negara, ID pelanggan, email, dan kunci. Lingkup akan selalu tetap = “BARU”

Lapangan
Mengetik
Wajib?
Deskripsi
ID Pelanggan
Tali
ya
Pengidentifikasi pelanggan (perlu Pendaftaran untuk mendapatkan ID pelanggan Anda)
kunci
Tali
ya
Kata sandi terenkripsi Base-64

10. Apa semua placeholder yang perlu saya ubah di SEND API?

Anda perlu mengubah kode negara, id pelanggan, otplength, dan nomor ponsel.

Lapangan
Mengetik
Wajib?
Deskripsi
ID Pelanggan
Tali
ya
Kode negara
Jenis aliran
Tali
ya
Kami mengirim OTP menggunakan beberapa media seperti SMS, WhatsApp, email, dll. Untuk saat ini, gunakan SMS atau WhatsApp

Apa API OTP SMS terbaik untuk India berdasarkan keandalan pengiriman dan latensi?

Pilih penyedia API OTP SMS yang menawarkan rute operator langsung, peering operator regional, pengiriman ulang/fallback otomatis, dan SLA pengiriman yang terukur. Penyedia terbaik juga mendukung kepatuhan DLT, laporan pengiriman (DLR), perutean berlatensi rendah, dan fallback SMS + WhatsApp. Evaluasi dengan mengukur tingkat pengiriman nyata, latensi rata-rata (ms), dan rincian error di operator utama India (Jio, Airtel, Vi).

Seberapa cepat pengiriman OTP seharusnya untuk aplikasi di India, dan apa yang memengaruhi latensi?

Targetkan pengiriman di bawah 2 detik untuk UX terbaik (di bawah 5 detik masih dapat diterima). Latensi dipengaruhi oleh perutean operator, antrean saat lalu lintas puncak, kepadatan jaringan, jumlah lompatan agregator SMS, serta penundaan DLT/templat. Gunakan rute langsung, perutean paralel, dan fallback SMS + WhatsApp bawaan untuk meminimalkan latensi OTP end-to-end dan meningkatkan tingkat penyelesaian.

Bagaimana cara mengintegrasikan API OTP SMS ke aplikasi saya di India (Node.js, Python, PHP, Java)?

Alur dasar: buat OTP yang aman → panggil API kirim-OTP penyedia → simpan hash OTP + masa berlaku → verifikasi input pengguna terhadap hash yang tersimpan melalui API/webhook verifikasi-OTP. Sebagian besar penyedia menawarkan endpoint REST dan SDK Verifikasi OTP. Contoh (pseudo):
Node.js (fetch):
await fetch('https://api.provider/send', {  
method:'POST',  
headers:{'Authorization':'Bearer KEY','Content-Type':'application/json'},  
body: JSON.stringify({to:'+91XXXXXXXXXX', template:'OTP {{code}}',
variables:{code:123456}}) });
Gunakan HTTPS, HMAC/penandatanganan, pengiriman ulang, dan webhook untuk laporan pengiriman (DLR).

Bagaimana cara mencegah penyalahgunaan kirim ulang OTP atau serangan brute-force pada alur autentikasi saya?

Terapkan perlindungan di sisi server:

  • Batasi jumlah kirim ulang per nomor telepon per jangka waktu (misalnya 3 kali kirim / 10 menit).
  • Batasi jumlah percobaan verifikasi dan tambahkan jeda bertahap atau blokir sementara setelah gagal.
  • Gunakan sidik jari perangkat + IP dan CAPTCHA untuk alur yang mencurigakan.
  • Kunci akun atau minta verifikasi tambahan setelah N kali percobaan gagal. Catat setiap percobaan dan beri tahu tim keamanan.

Apa penyebab kegagalan pengiriman OTP di India dan bagaimana developer mengatasinya?

Penyebab umum: penolakan DLT/templat, pemfilteran operator (DND), perutean yang buruk, sender ID yang salah, format nomor yang keliru, atau gangguan sementara di operator. Solusi: pastikan persetujuan DLT & templat, gunakan format nomor E.164 yang benar (+91), kirim ulang melalui rute alternatif, aktifkan fallback SMS, pantau DLR, dan gunakan penyedia yang memiliki hubungan langsung dengan operator.

Bagaimana cara menguji API OTP dalam mode sandbox tanpa mengirim SMS sungguhan?

Gunakan sandbox atau kunci uji dari penyedia untuk menyimulasikan pengiriman/laporan. Fitur sandbox biasanya mengembalikan DLR dan respons verifikasi yang disimulasikan. Secara lokal, gunakan respons API tiruan (mock) untuk unit test dan kredensial staging untuk QA end-to-end. Selalu validasi webhook di staging (gunakan alat seperti ngrok) dan catat semua event agar dapat diputar ulang saat pengujian.

Bagaimana cara menerapkan pembatasan laju (rate limiting) dan logika pengiriman ulang untuk OTP?

Pembatasan laju: terapkan batas per nomor telepon dan per IP di API gateway (misalnya 3 kali kirim per 10 menit). Logika pengiriman ulang: terapkan exponential backoff untuk error sementara dan kirim ulang segera melalui rute alternatif untuk kegagalan ringan. Selalu batasi jumlah pengiriman ulang (misalnya 3 kali) dan lacak hasilnya agar tidak dianggap spam atau diblokir operator.

Bisakah saya menggunakan Sender ID alfanumerik untuk OTP di India?

Tidak — India mewajibkan Sender ID numerik melalui rute yang disetujui DLT untuk sebagian besar alur transaksional; Sender ID alfanumerik umumnya tidak diizinkan untuk OTP. OTP harus mengikuti aturan telekomunikasi/DLT. Gunakan penyedia yang patuh dan mengelola registrasi DLT serta pengaturan Sender ID numerik untuk Anda.

Berapa masa berlaku OTP dan siklus kirim ulang yang direkomendasikan untuk pengguna di India?

Masa berlaku: 3–5 menit adalah standar untuk OTP transaksional (2FA). Siklus kirim ulang: izinkan 1–2 kali kirim ulang langsung dengan batas anti-penyalahgunaan (misalnya maksimal 3 kali kirim per 10–15 menit). Masa berlaku yang singkat mengurangi penipuan; batas kirim ulang yang wajar mengurangi beban dukungan dan pemfilteran operator.

Apa perbedaan rute OTP Transaksional dan Service Implicit?

Rute Transaksional digunakan untuk pesan penting yang dinantikan (OTP, pembaruan pesanan) dengan aturan kepatuhan yang lebih ketat dan biasanya prioritas pengiriman lebih tinggi. Rute Service Implicit (atau rute layanan lainnya) dapat berbeda per operator dan sering menerapkan aturan templat/persetujuan yang berbeda. Periksa dokumentasi perutean penyedia Anda — pilih rute transaksional untuk OTP agar keterkiriman dan kepatuhan maksimal.

Bagaimana cara bermigrasi dari penyedia SMS lain ke API OTP baru tanpa downtime?

Rencanakan peralihan bertahap:

  • Konfigurasikan penyedia baru dan siapkan DLT/templat secara paralel.
  • Duplikasi trafik (kirim batch uji) dan verifikasi metrik pengiriman.
  • Terapkan pengiriman ganda untuk sebagian kecil trafik live (A/B) dan pantau hasilnya.
  • Alihkan trafik secara bertahap sambil tetap menjadikan penyedia lama sebagai cadangan.
  • Perbarui endpoint DNS/webhook dan cabut kunci lama setelah stabil. Pantau log dan tingkat pengiriman dengan cermat.

Siap untuk memulai?

Lindungi akun pengguna Anda dan bangun kepercayaan dengan pelanggan Anda menggunakan verifikasi SMS. Coba Verify Now tanpa kartu kredit.