دعنا نجعلك تعيش مع OTP بسرعة البرق!

سننقلك من «الاشتراك للتو» إلى «إرسال OTP كمحترف» في بضع خطوات سريعة.

العفر، الجزء الأول من بيت الرفوف

أهم وثائق واجهة برمجة تطبيقات الرسائل القصيرة

الإصدار - 3.0
tick-icon

الخطوة 1: الاشتراك وتسجيل الدخول

  1. انتقل إلى الاشتراك في مركز الرسائل
  2. قم بإنشاء حسابك المجاني
  3. استخدم أرصدتك المجانية للاختبار واللعب مع OTPs
📌 نصيحة: استخدم أرصدتك المجانية لإرسال OTP للاختبار على الفور قبل بدء البث المباشر.
tick-icon

الخطوة 2: تكامل API (المطورون، التجميع!)

لقد أبقينا الأمور بسيطة للغاية. انسخ بعض مقتطفات الشفرة وستختبر في أي وقت من الأوقات.

هل تفضل المشاهدة على الترميز؟ لدينا دليل فيديو سريع هل قمت بتغطيتها.

معلمة API للتحقق الآن

يجب إرسال المعلمات التالية أثناء استخدام واجهات برمجة تطبيقات VerifyNow.

المعلمة API
النوع
القيمة
نوع التدفق
سلسلة
الرسائل القصيرة/الواتس اب/
الصليب الأحمر الدولي/الجنوب
نوع
سلسلة
قمة

بقية عناوين URL الأساسية لواجهة برمجة التطبيقات

يجب أن تكون جميع نقاط نهاية Platform API أدناه مسبوقة بعنوان URL التالي:

https://cpaas.messagecentral.com

إنشاء رمز

عند استخدام واجهة برمجة تطبيقات التحقق من الرسائل القصيرة الخاصة بـ Verify Now لإرسال رموز التحقق عبر الرسائل القصيرة، يجب أن تكون المكالمة الأولية إلى واجهة برمجة تطبيقات إنشاء الرمز المميز.

تقوم واجهة برمجة التطبيقات هذه بإرجاع رمز مميز يجب تضمينه في جميع المكالمات اللاحقة. يلزم وجود رمز مصادقة للتحقق من صحة المستخدم ويجب تضمينه في قسم العنوان لكل طلب.

الحقل
النوع
إلزامي؟
وصف
معرف العميل
سلسلة
نعم
معرف العميل (تحتاج إلى سجل للحصول على معرف العميل الخاص بك)
بلد
سلسلة
كلا
رمز البلد لإرسال OTP إليه
البريد الإلكتروني
سلسلة
كلا
البريد الإلكتروني
مفتاح
سلسلة
نعم
كلمة مرور Base-64 المشفرة
نطاق
سلسلة
كلا
استخدم «جديد» لأول مرة

مسار عنوان 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: */*'

ملاحظة: لتحويل أمر cURL إلى كود باستخدام Postman، افتح Postman، واستورد الأمر cURL عبر زر «استيراد»، ثم قم بإنشاء الكود بلغتك المفضلة بالنقر فوق الزر «Code» على الجانب الأيمن من الطلب.

الاستجابة: جسون

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

مثال الكود

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());

أرسل OTP

لإرسال OTP على رقم هاتف محمول أدناه هي معاملات الطلب. رمز المصادقة مطلوب لإرسال OTP الذي تم إنشاؤه بواسطة واجهة برمجة تطبيقات الرمز المميز التي تم إنشاؤها (والتي يمكنك العثور عليها أعلاه في قسم المقدمة).

المعلمة API
النوع
إلزامي؟
رمز المصادقة
سلسلة
نعم

مسار عنوان URL للطلب:

ستؤدي الاستجابة الناجحة إلى إرجاع رمز الحالة 200.

/verification/v3/send

معاملات عنوان URL للطلب:

الحقل
النوع
إلزامي؟
وصف
معرف العميل
سلسلة
نعم
رمز البلد
الطول العلوي
عدد صحيح
كلا
أرسل رقمًا بين 4 و 8. القيمة الافتراضية هي 4
رقم الهاتف المحمول
سلسلة
نعم
رقم الهاتف المحمول للنص المفرد
نوع التدفق
سلسلة
نعم
نرسل OTP باستخدام وسائط متعددة مثل الرسائل القصيرة وWhatsApp والبريد الإلكتروني وما إلى ذلك، في الوقت الحالي، استخدم إما SMS أو WhatsApp

cURL

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

ملاحظة: لتحويل أمر cURL إلى كود باستخدام Postman، افتح Postman، واستورد الأمر cURL عبر زر «استيراد»، ثم قم بإنشاء الكود بلغتك المفضلة بالنقر فوق الزر «Code» على الجانب الأيمن من الطلب. يمكنك تغيير أساس FlowType للقناة التي تختارها.

الاستجابة: جسون

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}

مثال الكود

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());

تحقق من صحة OTP

طريقة ValidateOTP هي نقطة نهاية REST API للتحقق من كلمة المرور لمرة واحدة (OTP) للعملاء.

عنوان الطلب
النوع
إلزامي؟
رمز المصادقة
سلسلة
نعم

مسار عنوان URL للطلب:

ستؤدي الاستجابة الناجحة إلى إرجاع رمز الحالة 200.

/verification/v3/validateOtp/
الحقل
النوع
إلزامي؟
وصف
معرف التحقق
طويل
نعم
معرف التحقق من استجابة /send api
الشفرة
سلسلة
نعم
قمة
لاهث
سلسلة
كلا
رقم الهاتف المحمول للنص المفرد
نوع التدفق
سلسلة
نعم
  • للحصول على دعم متعدد اللغات
  • افتراضيًا هي اللغة الإنجليزية
  • في الوقت الحالي نحن ندعم اللغة الإنجليزية فقط

cURL

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

ملاحظة: لتحويل أمر cURL إلى كود باستخدام Postman، افتح Postman، واستورد الأمر cURL عبر زر «استيراد»، ثم قم بإنشاء الكود بلغتك المفضلة بالنقر فوق الزر «Code» على الجانب الأيمن من الطلب.

الاستجابة: جسون

ستؤدي الاستجابة الناجحة إلى إرجاع رمز الحالة 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}

مثال الكود

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());

رموز الاستجابة

الكود
نص العرض
200
نجاح
400
طلب سيء
409
مورد_مكرر
500
خطأ في الخادم
501
معرف_عميل غير صالح
505
معرف_تحقق غير صالح
506
الطلب موجود بالفعل
511
رمز بلد غير صالح
700
فشل التحقق
702
لم يتم تقديمه بشكل خاطئ
703
تم التحقق منه بالفعل
705
انتهت صلاحية التحقق
800
تم الوصول إلى الحد الأقصى

هل تحتاج إلى مساعدة؟

هل تحتاج إلى مساعدة؟ خبراؤنا متاحون على مدار الساعة طوال أيام الأسبوع لإرشادك في أي شيء وفي أي وقت.

البريد الإلكتروني للدعم: support@messagecentral.com

أسئلة متكررة

1. كيف يمكنني التنفيذ باستخدام كود مخصص؟

يمكنك استخدام ساعي البريد لإعادة كتابة مكالمات API بلغة البرمجة المفضلة لديك. ستحتاج إلى استخدام: -

  • طريقة POST لإرسال الرسائل القصيرة
  • طريقة GET للتحقق من صحة رسائل OTP

2. لماذا أتلقى الخطأ «الطريقة غير مسموح بها» أو رمز الخطأ 405؟

ستحتاج إلى التأكد من أن عنوان URL الخاص بنقطة النهاية لـ Token API يطابق العنوان المحدد في الوثائق. وقد تم ذكر نفس الشيء أدناه: -

أ. واجهة برمجة التطبيقات الرمزية باستخدام طريقة GET

ب. إرسال API باستخدام طريقة POST

ج. التحقق من صحة API باستخدام طريقة GET



3. كيف يمكنني اختبار واجهات برمجة تطبيقات التحقق من الرسائل القصيرة؟

يمكنك استخدام Postman لاختبار واجهات برمجة تطبيقات التحقق من الرسائل القصيرة في Message Central.

4. لماذا تظهر لي صفحة «خطأ التسمية البيضاء»؟

إذا كنت تحصل على صفحة Whitelabel Error، فيجب عليك التحقق من الأخطاء التالية: -

أ. أنت تستخدم حزمة API غير صحيحة

ب. لم تستبدل العناصر النائبة بالقيم الفعلية

ج. واجهة برمجة التطبيقات curl غير صحيحة

د. لم يتم تغيير موقع curl إلى «الإنتاج» بدلاً من «التدريج»

5. لماذا أتلقى رمز الخطأ 401؟

قد يكون هذا بسبب واجهة برمجة التطبيقات أو الرمز المميز غير الصحيح. تأكد من اتباع وثائق API الخاصة بنا لقيم الرموز الصحيحة.

6. لماذا أتلقى رمز الخطأ 400 أو «طلب سيء» في Postman؟

هناك عدة أسباب لـ «طلب سيء» في Postman. يمكنك التحقق من الأسباب المحتملة التالية: -

أ. تحقق مما إذا كان AuthToken صحيحًا

ب. تحقق مما إذا كانت أي معلمة مفقودة في API

ج- يجب تمرير العنوان بهذا الشكل - application-x-www-form-urlencoded

7. كيف أقوم بإنشاء AuthToken؟

من أجل إنشاء AuthToken في بوستمان، يجب عليك: -

أ. ابحث عن «مفتاح» في GET API

ب- ستحتاج إلى نسخ هذا المفتاح وترميزه باستخدام Base64 - https://www.base64encode.org/

ج. ضع كلمة المرور المشفرة في العنصر النائب «Key»

د. اضغط على واجهة برمجة تطبيقات GET

ستحصل على AuthToken.

8. أين يمكنني استخدام AuthToken؟

ستحتاج إلى وضع AuthToken في رأس واجهة برمجة تطبيقات SEND.

9. ما هي جميع العناصر النائبة التي أحتاج إلى تغييرها في GET API لإنشاء رمز مميز؟

ستحتاج إلى تغيير البلد ومعرف العميل والبريد الإلكتروني والمفتاح. سيظل النطاق دائمًا = «جديد»

الحقل
النوع
إلزامي؟
وصف
معرف العميل
سلسلة
نعم
معرف العميل (تحتاج إلى سجل للحصول على معرف العميل الخاص بك)
مفتاح
سلسلة
نعم
كلمة مرور Base-64 المشفرة

10. ما جميع العناصر النائبة التي أحتاج إلى تغييرها في SEND API؟

ستحتاج إلى تغيير رمز البلد ومعرف العميل وطول الخط ورقم الهاتف المحمول.

الحقل
النوع
إلزامي؟
وصف
معرف العميل
سلسلة
نعم
رمز البلد
نوع التدفق
سلسلة
نعم
نرسل OTP باستخدام وسائط متعددة مثل الرسائل القصيرة وWhatsApp والبريد الإلكتروني وما إلى ذلك، في الوقت الحالي، استخدم إما SMS أو WhatsApp

ما هي أفضل واجهة برمجة تطبيقات SMS OTP للهند بناءً على موثوقية التسليم ووقت الاستجابة؟

ابحث عن مزود واجهة برمجة تطبيقات SMS OTP التي تقدم مسارات المشغل المباشرة، ونظيرة شركات النقل الإقليمية، وإعادة المحاولة/التراجع المؤتمت، واتفاقيات مستوى الخدمة القابلة للقياس الخاصة بالتسليم. كما يدعم موفرو الخدمة الأفضل في فئته التوافق مع DLT وإيصالات التسليم (DLR) والتوجيه بزمن انتقال منخفض و الرد على الرسائل القصيرة+واتساب. قم بالتقييم من خلال قياس معدلات التسليم في العالم الحقيقي ومتوسط زمن الوصول (مللي ثانية) وتفاصيل الأخطاء عبر شركات النقل الهندية الكبرى (Jio و Airtel و Vi).

ما مدى السرعة التي يجب أن يتم بها تسليم OTP للتطبيقات الهندية، وما الذي يؤثر على وقت الاستجابة؟

تهدف إلى أقل من 2 ثانية التسليم لأفضل تجربة مستخدم (أقل من 5 ثوانٍ مقبولة). يتأثر وقت الاستجابة بتوجيه شركة الاتصالات، والانتظار في قائمة الانتظار أثناء ذروة حركة المرور، وازدحام الشبكة، وتقفزات مجمع الرسائل القصيرة، وتأخيرات DLT/Template. استخدم المسارات المباشرة والتوجيه المتوازي و الرسائل القصيرة المضمنة+الرد على WhatsApp لتقليل زمن انتقال OTP من البداية إلى النهاية وتعزيز معدلات الإكمال.

كيف يمكنني دمج واجهة برمجة تطبيقات SMS OTP في تطبيقي في الهند (Node.js، Python، PHP، Java)؟

التدفق الأساسي: إنشاء OTP آمن ← واجهة برمجة تطبيقات إرسال OTP لموفر الاتصال ← تخزين تجزئة OTP + انتهاء الصلاحية ← تحقق من إدخال المستخدم مقابل التجزئة المخزنة عبر Verify-OTP API/Webhook. يقدم معظم الموفرين نقاط نهاية REST و حزم SDK للتحقق من OTP. مثال (زائف):
ملف Node.js (جلب):
في انتظار الجلب ('https://api.provider/send', {
الطريقة: «POST»،
العناوين: {'التخويل': 'مفتاح الحامل'، 'نوع المحتوى': 'application/json'}،
النص الأساسي: json.stringify ({إلى: '+91XXXXXXXXXX'، القالب: 'OTP {{code}} '،
المتغيرات: {الكود: 123456}})})؛
استخدم HTTPS وHMAC/التوقيع وعمليات إعادة المحاولة وخطافات الويب لإيصالات التسليم (DLR).

كيف يمكنني منع إساءة استخدام OTP أو محاولات القوة الغاشمة في تدفق المصادقة الخاص بي؟

تنفيذ الحماية من جانب الخادم:

  • حدد محاولات إعادة الإرسال لكل هاتف لكل نافذة زمنية (على سبيل المثال، 3 إرسالات/10 دقائق).
  • يحاول التحقق من حد السعر وإضافة تأخيرات تدريجية أو كتل مؤقتة بعد حالات الفشل.
  • استخدام جهاز StaginUse + بصمة IP واختبار CAPTCHA لنقطة نهاية flows.g المشبوهة بدلاً من الإنتاج
  • اقفل الحساب أو اطلب التحقق الثانوي بعد N محاولات فاشلة. قم بتسجيل المحاولات وإخطار فرق الأمان.

ما أسباب فشل تسليم OTP في الهند وكيف يقوم المطورون بإصلاحها؟

الأسباب الشائعة: رفض DLT/القالب، أو تصفية الناقل (DND)، أو التوجيه السيئ، أو معرف المرسل غير الصحيح، أو مشكلات تنسيق الأرقام، أو الانقطاعات المؤقتة للمشغل. الإصلاحات: تأكد من موافقات DLT والقوالب، واستخدم تنسيق الهاتف E.164 الصحيح (+91)، وأعد المحاولة باستخدام مسارات بديلة، وقم بتمكين الرجوع إلى الرسائل القصيرة، ومراقبة DLRs، واستخدام مزود له علاقات مباشرة مع الناقل.

كيف يمكنني اختبار واجهات برمجة تطبيقات OTP في وضع الحماية دون إرسال رسائل SMS حقيقية؟

استخدم صندوق الحماية الخاص بالموفر أو مفاتيح الاختبار لمحاكاة الإرسالات/الإيصالات. عادةً ما تقوم ميزات Sandbox بإرجاع DLRs المحاكاة واستجابات التحقق. محليًا، قم باستجابات وهمية لواجهة برمجة التطبيقات لاختبارات الوحدة واستخدم بيانات اعتماد مرحلية لضمان الجودة من البداية إلى النهاية. تحقق دائمًا من صحة webhooks في التدريج (استخدم أدوات مثل ngrok) وقم بتسجيل جميع الأحداث لإعادة تشغيلها في الاختبارات.

كيف يمكنني تطبيق منطق تحديد المعدل وإعادة المحاولة لتسليم OTP؟

تحديد المعدل: فرض حدود لكل هاتف ولكل IP في بوابة API (على سبيل المثال، 3 عمليات إرسال لكل 10 دقائق). منطق إعادة المحاولة: تنفيذ التراجع الأسي للأخطاء العابرة وإعادة المحاولة الفورية عبر مسار بديل لحالات الفشل الناعمة. احرص دائمًا على الحد من عمليات إعادة المحاولة (على سبيل المثال، 3 محاولات) وتتبع نتائج إعادة المحاولة لتجنب الرسائل غير المرغوب فيها أو حظر الناقل.

هل يمكنني استخدام معرف المرسل الأبجدي الرقمي لـ OTP في الهند؟

لا — تتطلب الهند معرفات مرسلين رقمية عبر المسارات المعتمدة من DLT بالنسبة لمعظم تدفقات المعاملات؛ لا يُسمح عمومًا بالحروف الأبجدية الرقمية لـ OTPs. يجب أن تتبع أجهزة TOP قواعد Telecom/DLT. استخدم مزودًا متوافقًا يدير تسجيل DLT وإعداد معرف المرسل الرقمي نيابة عنك.

ما هو وقت انتهاء صلاحية OTP الموصى به ودورة إعادة المحاولة للمستخدمين الهنود؟

انتهاء الصلاحية: 3-5 دقائق هو المعيار لـ نصائح المعاملات (2FA). دورة إعادة المحاولة: السماح بإعادة إرسال 1 إلى 2 فورية مع حدود مكافحة إساءة الاستخدام (على سبيل المثال، 3 عمليات إرسال كحد أقصى لكل 10-15 دقيقة). تؤدي فترات انتهاء الصلاحية القصيرة إلى تقليل الاحتيال؛ كما تعمل حدود إعادة الإرسال المعقولة على تقليل عبء الدعم وتصفية المشغل.

ما الفرق بين مسارات OTP الضمنية للمعاملات مقابل الخدمة؟

المعاملات المسارات مخصصة للرسائل الحرجة والمتوقعة (OTP، تحديثات الطلبات) التي تتبع الامتثال الأكثر صرامة وعادة ما تكون لها أولوية تسليم أعلى. خدمة ضمنية (أو مسارات الخدمة الأخرى) يمكن أن تختلف باختلاف المشغل وغالبًا ما تطبق قواعد قالب/الموافقة المختلفة. تحقق من مستندات التوجيه الخاصة بمزود الخدمة - اختر مسارات المعاملات لـ قمم لتحقيق أقصى قدر من التسليم والامتثال.

كيف يمكنني الترحيل من مزود خدمة SMS آخر إلى واجهة برمجة تطبيقات OTP جديدة بدون توقف؟

خطط للانتقال التدريجي:

  • قم بتكوين موفر جديد وتوفير DLT/Templates بالتوازي.
  • قم بنسخ حركة المرور (إرسال دفعات الاختبار) وتحقق من مقاييس التسليم.
  • قم بتطبيق الإرسال المزدوج لنسبة صغيرة من حركة المرور المباشرة (A/B)، وراقب النتائج.
  • قم بتحويل حركة المرور تدريجيًا مع الاحتفاظ بالموفر القديم كإجراء احتياطي.
  • قم بتحديث نقاط نهاية DNS/Webhook وإلغاء المفاتيح القديمة بمجرد استقرارها. راقب السجلات ومعدلات التسليم عن كثب.

هل أنت جاهز للبدء؟

قم بحماية حسابات المستخدمين الخاصة بك وبناء الثقة مع عملائك باستخدام التحقق من الرسائل القصيرة. جرب التحقق الآن بدون أي بطاقة ائتمان.