> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# التحقق من رقم الهاتف API: رمز OTP وSMS وWhatsApp

> تحقق من أرقام الهواتف مع Didit برموز OTP عبر SMS وWhatsApp وتيليجرام مقابل $0.02 للمكالمة + المشغّل مع كشف المشغّل وتقييم المخاطر.

توفّر ميزة التحقق من رقم الهاتف من Didit طريقة موثوقة للتحقق من أرقام هواتف المستخدمين عبر رموز المرور لمرة واحدة (OTP). وتضيف هذه الميزة طبقة أمان أساسية إلى عملية التحقق من الهوية الخاصة بك، مما يضمن صحة معلومات الاتصال الخاصة بالمستخدمين.

تعليمات دمج التحقق من رقم الهاتف
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\````# Goal
Integrate Didit Phone Verification (OTP send + check + carrier/risk lookup) into your app. Pick ONE mode.

\# Mode A — Session-based
Use this when the user goes through a hosted Didit flow — the SDK collects the number and OTP for you.

1\. Add the PHONE feature to the workflow (Business Console or POST /v3/workflows/). Configure risk actions: duplicated_phone_number_action, disposable_number_action, voip_number_action.
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

Decision surface: `phone_verifications[]` array on the decision payload.

\# Mode B — Standalone API (server-to-server, OTP pair)
Two endpoints, paired by phone_number.

Step 1 — send the code:
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/send/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"options": {
  "code_size": 6,
  "preferred_channel": "whatsapp",
  "locale": "en-US"
},
"vendor_data": "user-1234"
}'
\```
Channels: `whatsapp` (default), `sms`, `telegram`, `voice` — delivery falls back to SMS if the preferred channel is unavailable. Codes are valid for **5 minutes**; one free retry per number within the window.
Branding: SMS codes carry your app's SMS sender name ("123456 is your verification code for Acme Bank") on every send, at no extra cost; set it in the Business Console. Pass `options.sms_sender_name` to sign one code with another name (1 to 30 characters). WhatsApp codes use a fixed message; connect your own WhatsApp Business number in the Business Console to send them under your business name.

Step 2 — check the code (user types it into your UI):
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/check/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"code": "123456",
"voip_number_action": "DECLINE"
}'
\```
Each session accepts **up to 3** code-entry attempts. The check response includes the full phone metadata (carrier, line_type, disposable, voip, ported).

\# Status enum (per phone_verifications[].status / phone.status)
"Not Started" | "In Progress" | "Approved" | "Declined" | "Failed" | "Expired or Not Found" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.PHONE)
warnings[] risk codes include:
DUPLICATED_PHONE_NUMBER, DISPOSABLE_NUMBER, VOIP_NUMBER, INVALID_PHONE_NUMBER, OTP_DELIVERY_FAILED, OTP_MAX_ATTEMPTS_REACHED, OTP_EXPIRED, PHONE_NUMBER_BLOCKED.
Full catalogue: /core-technology/phone-verification/warnings-phone-verification.

\# Failure modes to handle
\- HTTP 400 — non-E.164 phone_number on /send/.
\- send response status="Blocked" with reason="spam" — anti-abuse block; no code sent, no charge.
\- check response status="Failed" — wrong code, attempts remaining; re-prompt.
\- check response status="Declined" — third failed attempt; restart with /v3/phone/send/.
\- check response status="Expired or Not Found" — outside the 5-minute window or no pending session for that number; restart.

\# See also
\- Canonical schema: /reference/data-models#phone-verification
\- Per-feature report: /core-technology/phone-verification/report-phone-verification
\- Risk catalogue: /core-technology/phone-verification/warnings-phone-verification
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

الصق في

في درس الأكاديمية حول قراءة نتيجة التحقق، يغطي الفصل عند الدقيقة 8:08 التحقق من الهاتف واكتشاف التكرار.[Phone verification and duplicates — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=488\&rel=0\&playsinline=1)![مخطط تدفق التحقق من الهاتف](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/phone-verification-flow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=6c12863ce97e5ad6a11757b598918932)## كيف يعمليوفّر حل التحقق من رقم الهاتف لدينا تحققاً شاملاً من أرقام الهواتف عبر عملية بسيطة وسهلة الاستخدام. يجمع النظام بين التحقق عبر OTP وتقييم المخاطر المتقدم لتوفير تحقق موثوق من أرقام الهواتف على نطاق واسع.**1. جمع رقم الهاتف**يجمع النظام المعلومات التالية بأمان:| البيانات المجمعة | التفاصيل |
| - | - |
| **رقم الهاتف** | إذا لم يتم توفيره أثناء إنشاء الجلسة، يُدخل المستخدم رقم هاتفه بالصيغة الدولية. وفي حال تم توفيره، يجب على المستخدم التحقق من الرقم المعبأ مسبقاً. |
| **رمز الدولة** | يُقترح تلقائياً بناءً على موقع عنوان IP أو اختيار المستخدم. |
| **نوع شركة الاتصالات** | يتم اكتشاف ما إذا كان الرقم هاتفاً محمولاً أم خطاً أرضياً. |**2. توليد رمز OTP وتسليمه**يقوم نظام التحقق لدينا بـ:- توليد رمز مرور آمن ومحدد بفترة زمنية لمرة واحدة
- تسليم الرمز عبر رسالة نصية قصيرة SMS إلى الرقم المقدَّم
- ضمان التسليم المحسّن من خلال عمليات التكامل مع العديد من شركات الاتصالات
- توفير خيارات بديلة عند مواجهة صعوبات في التسليم**3. التحقق من صحة الرمز**يُكمل المستخدم عملية التحقق عن طريق:- إدخال الرمز المستلَم في واجهة التحقق
- إرسال الرمز ضمن الإطار الزمني المحدد (عادةً بين 5 إلى 10 دقائق)
- طلب رمز جديد عند الحاجة (مع تطبيق حد المعدل المناسب)**4. تقييم المخاطر**يُجري نظامنا فحوصات متقدمة:| الفحص | الوصف |
| - | - |
| **الصيغة وشركة الاتصالات** | يتحقق من صيغة رقم الهاتف ومعلومات شركة الاتصالات. |
| **الأرقام المؤقتة** | يتحقق من الأرقام بمقارنتها بقواعد بيانات الأرقام الافتراضية/المؤقتة المعروفة. |
| **اكتشاف تبديل شريحة SIM** | يحدد المخاطر المحتملة لتبديل شريحة SIM. |
| **أنماط النشاط** | يكتشف أنماط النشاط المشبوهة. |
| **البيانات التاريخية** | يقارنها ببيانات التحقق التاريخية. |**5. تسليم النتائج**الوصول إلى نتائج التحقق عبر قنوات متعددة:| القناة | الوصف |
| - | - |
| **لوحة التحكم** | تحديثات في الوقت الفعلي على لوحة التحكم. |
| **webhook** | إشعارات فورية عبر webhook. |
| **API** | تكامل عبر RESTful API. |
| **التقارير** | تقارير شاملة تتضمن معلومات تحقق تفصيلية. |## ميزات التحققتوفر خدمة التحقق من رقم الهاتف لدينا العديد من الميزات الأساسية لتحسين عملية التحقق لديك:#### التحقق عبر OTP- **توليد آمن للرموز**: رموز مرور تُنشأ عشوائياً لمرة واحدة
- **التسليم عبر SMS**: تسليم سريع وموثوق إلى الأجهزة المحمولة
- **مهلات قابلة للتهيئة**: تعيين أوقات انتهاء الصلاحية بناءً على متطلبات الأمان لديك
- **خيارات إعادة المحاولة**: السماح للمستخدمين بطلب رموز جديدة مع تطبيق حد المعدل المناسب
- **رموز تحمل علامتك التجارية**: تذكر رموز SMS اسم علامتك التجارية بدلاً من إرسال رسالة عامة، دون أي تكلفة إضافية. راجع [رسائل التحقق التي تحمل علامتك التجارية](#رسائل-التحقق-التي-تحمل-علامتك-التجارية).
- **رقم WhatsApp الخاص بك**: يمكن أن تصدر رموز WhatsApp من رقم WhatsApp Business الخاص بك. راجع [إرسال رموز WhatsApp من رقمك الخاص](#إرسال-رموز-whatsapp-من-رقمك-الخاص).#### رسائل التحقق التي تحمل علامتك التجاريةيمكن لرموز التحقق عبر SMS أن تذكر اسم علامتك التجارية، حتى يتعرف مستخدموك على أن الرسالة صادرة منك:> 123456 هو رمز التحقق الخاص بك لـ **Acme Bank**الاسم فقط هو القابل للتخصيص.
أما باقي الصياغة فهي نص قياسي مسجل لدى مشغلي شبكات الجوال في كل دولة، مما يمنع تصنيف الرموز كرسائل غير مرغوب فيها، وتتم ترجمته إلى لغة المستلم.
إضافة العلامة التجارية مجانية: تكلفة الرمز الذي يحمل علامتك التجارية مطابقة لتكلفة الرمز العادي.**عيّن اسم مرسل SMS الخاص بك** في Business Console، ضمن **Phone Verification → Settings** لسير العمل أو تحت **White Label → SMS**.
ينتمي هذا الاسم إلى تطبيقك، وليس لسير عمل واحد: فهو يوقّع كل رمز SMS يرسله التطبيق، في كل سير عمل وعبر API المستقل، مع أو بدون تخصيص العلامة البيضاء.**الاسم الذي يحمله الرمز**، يُعتمد أول تطابق:1) `options.sms_sender_name` في [`POST /v3/phone/send/`](https://docs.didit.me/ar/standalone-apis/phone-send)، لهذا الرمز المحدد.
2) اسم مرسل SMS الخاص بتطبيقك.
3) في عمليات الإرسال بالعلامة البيضاء فقط (سير عمل مزود بتخصيص العلامة البيضاء، أو `options.use_white_label_customization: true` عبر API)، اسمك العلني للعلامة البيضاء.
4) بخلاف ذلك، يُرسل الرمز بدون اسم.يتكون اسم المرسل من 1 إلى 30 حرفاً: أحرف وأرقام ومسافات و ' & - ! فقط، ولا يمكن أن يتكون من أرقام فقط، مع مسافات مفردة بين الكلمات.
يرفض API أي اسم يخالف هذه القواعد برمز `400` قبل إرسال أي رمز.- **القنوات**: يُضاف الاسم إلى رسائل SMS، بما في ذلك رسائل SMS المرسلة كبديل احتياطي من قناة أخرى. تُرسل رموز WhatsApp برسالة ثابتة ولا تحمله؛ لإظهار اسم شركتك عليها، [أرسلها من رقمك الخاص](#إرسال-رموز-whatsapp-من-رقمك-الخاص).
- **التغييرات في اليوم**: يمكن لكل تطبيق البدء في استخدام ما يصل إلى اسمين جديدين يومياً (UTC)، باحتساب كلٍّ من أسماء المرسلين الجديدة وقيم `sms_sender_name` الجديدة. بعد ذلك، تحتفظ الرموز بالاسم الحالي للتطبيق حتى اليوم التالي، ويُرسل أي اسم جديد محدد لكل طلب بالاسم الحالي للتطبيق. ولا يُحسب الاسم الذي استخدمته من قبل مرة أخرى.
- **التسليم أولاً**: لا توقف مشكلة في العلامة التجارية إرسال الرمز أبداً. إذا تعذر تطبيق الاسم، يُرسل الرمز بالاسم الحالي للتطبيق أو بدونه.#### كتابة نص SMS ومعرّف المرسل الخاصين بكيمكنك استبدال نص رموز SMS والمرسل الذي يراه مستخدموك.
يمكنك تعيين كليهما في Business Console تحت **White Label → SMS**.
فهما ينتميان إلى تطبيقك، مثل اسم مرسل SMS، وينطبقان على كل رمز SMS يرسله، في كل سير عمل وعبر API المستقل.يُكتب **النص الخاص بك** لكل لغة على حدة.
يُرسل الرمز بنصك المخصص عندما تكون قد كتبت نصاً للغة التي يُرسل بها الرمز؛ بينما تحتفظ باقي اللغات بنص Didit المترجم.
استخدم `{code}` للرمز، واختيارياً `{brand}` لاسم مرسل SMS الخاص بك، على سبيل المثال `Acme: {code} is your login code for {brand}.`يجب أن يستوفي النص الشروط التالية:- أن يحتوي على `{code}` مرة واحدة بالضبط، وألا يحتوي على أي عنصر نائب آخر بخلاف `{code}` و `{brand}`؛
- ألا يحتوي على أي روابط: إذ يحظر مشغلو الشبكات رموز التحقق التي تتضمن روابط؛
- أن يتسع في رسالة SMS واحدة برمز مكون من 8 أرقام واسم مكون من 30 حرفاً: حتى 160 حرفاً، أو 70 حرفاً عند استخدام أحرف خارج الأبجدية اللاتينية الأساسية (مثل السيريلية أو العربية أو الرموز التعبيرية).يستخدم **معرّف المرسل الخاص بك** من 3 إلى 11 حرفاً ورقماً ومسافة، ولا يمكن أن يتكون من أرقام فقط، على سبيل المثال `AcmeBank`.
ويُستخدم في الدول التي تتيح فيها Didit معرّفات مرسل مخصصة، وهي الدول التي يقبل مشغلو الشبكات فيها اسم المرسل دون تسجيله مسبقاً؛ وفي أي مكان آخر، تصدر رموزك تحت اسم مرسل Didit.
تواصل مع الدعم لطلب إضافة دولة تتطلب تسجيل اسم المرسل مسبقاً.- **التسليم أولاً**: عند إعادة إرسال رمز عبر مسار لا يمكنه حمل نصك أو معرّف المرسل الخاص بك، يُرسل الرمز بنص Didit، موقّعاً باسم مرسل SMS الخاص بك، مع معرّف المرسل الخاص بـ Didit، لضمان وصول الرمز دائماً.#### إرسال رموز WhatsApp من رقمك الخاصبشكل افتراضي، تصدر رموز WhatsApp من رقم WhatsApp Business الخاص بـ Didit.
يمكنك ربط رقم WhatsApp Business الخاص بك بدلاً من ذلك، حتى يتلقى مستخدموك رموزهم من اسم شركتك ورقمها.**اربط رقماً** في Business Console، ضمن **Phone Verification → Settings → WhatsApp number** لسير العمل، وحدد **Connect WhatsApp number**.
ستفتح نافذة لتسجيل الدخول: سجّل الدخول إلى حساب الأعمال الذي يدير رقم WhatsApp Business الخاص بك، ثم اختر حساب WhatsApp Business والرقم المطلوب الإرسال منه.
تقوم Didit بعد ذلك بتسجيل الرقم للإرسال وإنشاء رسالة التحقق الخاصة به.
يتطلب تعديله إذناً لتعديل التخصيص، تماماً مثل اسم مرسل SMS.ينتمي الرقم إلى تطبيقك، وليس لسير عمل واحد: بمجرد ربطه، يقوم بإرسال كل رمز WhatsApp يرسله التطبيق، في كل سير عمل وعبر API المستقل.- **الموافقة**: تحتاج رسالة التحقق الجديدة إلى موافقة قبل أن يتمكن الرقم من إرسال الرموز، وعادةً ما يستغرق ذلك بضع دقائق. وتُظهر البطاقة الرقم على أنه في انتظار الموافقة حتى ذلك الحين، بينما تستمر الرموز في الصدور من رقم Didit في هذه الأثناء.
- **نص الرسالة**: تستخدم رسائل التحقق عبر WhatsApp نصاً قياسياً بلغة المستخدم: الرمز وملاحظة أمان وزر نسخ. لا يمكن تعديل النص، لكن المرسل هو شركتك.
- **التسليم**: إذا تعذر تسليم الرمز عبر WhatsApp، يُرسل عبر SMS موقّعاً باسم مرسل SMS الخاص بك.
- **الفوترة**: تتم فوترة الرسائل التي يرسلها رقمك على حساب WhatsApp Business الخاص بك، لذا تفرض Didit رسوم التحقق الخاصة بها فقط (\$0.02) مقابل تلك الرموز. أما الرموز المرسلة عبر SMS فتتم فوترتها كالمعتاد.
- **تحتاج إلى اتخاذ إجراء**: إذا تعذر على الرقم الإرسال بعد الآن (على سبيل المثال، أُزيلت صلاحية الوصول إليه من حساب الأعمال الخاص بك)، تصدر الرموز من رقم Didit مرة أخرى وتطلب منك البطاقة ربط الرقم من جديد.
- **قطع الاتصال** في أي وقت من البطاقة نفسها. تصدر الرموز من رقم Didit مجدداً؛ بينما يظل الرقم ورسالة التحقق الخاصة به في حساب WhatsApp Business الخاص بك.#### تحليل رقم الهاتف- **التحقق من صحة التنسيق**: التأكد من أن رقم الهاتف يتبع التنسيق الدولي الصحيح
- **الكشف عن شركة الاتصالات**: تحديد مزود خدمات الاتصالات المرتبط بالرقم
- **نوع الرقم**: التمييز بين أرقام الهواتف المحمولة والأرضية وأرقام VoIP
- **التحقق من الدولة**: التحقق من تطابق رقم الهاتف مع التنسيق المتوقع للدولة#### تقييم المخاطر- **الكشف عن الأرقام المؤقتة**: تحديد الأرقام المؤقتة المستخدمة لتجنب إمكانية التتبع
- **تحديد الأرقام الافتراضية**: وضع علامة على الأرقام التي قد تكون افتراضية أو معتمدة على VoIP
- **مراقبة النشاط**: تتبع الأنماط المشبوهة عبر محاولات التحقق
- **فحص قائمة الحظر**: التحقق من خلال القوائم الداخلية للأرقام التي أُسيء استخدامها سابقاً## الأسعاريتم احتساب رسوم التحقق من رقم الهاتف **لكل رسالة مُرسلة** وفق تسعير شفاف يعتمد على الدفع حسب الاستخدام:| المكون | التكلفة |
| - | - |
| **رسوم Didit** | \$0.02 لكل عملية تحقق |
| **رسوم شركة الاتصالات** | تختلف حسب الدولة والقناة |
| **الإجمالي** | \$0.02 + رسوم شركة الاتصالات |ينطبق خصم خطتك على رسوم Didit البالغة \$0.02 فقط؛ ويتم تمرير رسوم شركة الاتصالات بسعر التكلفة ولا تخضع للخصم مطلقاً. راجع [الخصومات](https://docs.didit.me/ar/getting-started/pricing.md#الخصومات).ندعم قنوات تسليم متعددة بأسعار مختلفة (يختلف التوفر حسب الدولة):| القناة | الوصف |
| - | - |
| **رسالة نصية** | تسليم الرسائل النصية التقليدية |
| **WhatsApp** | التسليم عبر رسائل WhatsApp |
| **Telegram** | التسليم عبر رسائل Telegram |
| **RCS** | رسائل خدمات الاتصال الغنية (RCS) |
| **Viber** | التسليم عبر رسائل Viber |
| **Zalo** | التسليم عبر رسائل Zalo (فيتنام) |> [!NOTE]
>
> تدفع فقط عند إرسال رسالة. إذا غادر المستخدم قبل تسليم OTP، فلن يتم تحصيل أي رسوم منك.→ [أسعار التحقق من رقم الهاتف](https://docs.didit.me/ar/getting-started/phone-verification-pricing.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.