Fynchat · فينشات

إرسال OTP عبر الـ API

أرسل رموز OTP وتحقّق منها عبر واتساب الأعمال باستخدام واجهة Fynchat OTP API.

توثيق واجهة OTP

ما هي واجهة Fynchat OTP API؟

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

الرابط الأساسي لكل الطلبات:

https://fynchat.com

صفحة التوثيق الكاملة متاحة داخل لوحة التحكم على المسار /settings/otp/docs، وتضمّ أمثلة كود جاهزة للنسخ بعدّة لغات. القيم الواردة في الأمثلة (رقم الهاتف، ومعرّف الطلب، وصيغة المفتاح) توضيحية — استبدلها بقيمك الحقيقية.

نقاط النهاية

الطريقة المسار الوظيفة
POST /api/v1/otp/send إرسال كود OTP
POST /api/v1/otp/verify التحقق من الكود
POST /api/v1/otp/resend إعادة الإرسال (مع cooldown)
GET /api/v1/otp/status/{request_id} حالة الطلب
GET /api/v1/otp/stats إحصاءات (سنّت / تحقّق / فشل)

المصادقة

كل طلب يحمل مفتاح الوصول في ترويسة Authorization:

Authorization: Bearer flk_otp_xxxxxxxx_yyyyyyyy

⚠️ لا تضع المفتاح في كود الواجهة الأمامية (frontend). استخدمه من خادمك فقط.

توقيع HMAC (اختياري)

إذا فعّلت الخيار require_hmac على المفتاح، يجب توقيع كل طلب. تُضاف ترويستان: X-Timestamp وX-Signature، ويُحسب التوقيع من sha256= متبوعاً بـ hash_hmac('sha256', timestamp . '.' . body, secret).

مثال بلغة PHP:

$timestamp = time();
$body = json_encode(['phone' => '+966501234567', 'purpose' => 'login']);
$signature = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $body, 'YOUR_HMAC_SECRET');

// أرسلهما ضمن الترويسات:
// 'X-Timestamp' => (string) $timestamp,
// 'X-Signature' => $signature,

إرسال كود (send)

أرسل طلب POST إلى /api/v1/otp/send بالحقول التالية:

الحقل الوصف
phone رقم هاتف العميل بالصيغة الدولية (مثل +966501234567)
purpose الغرض من الكود (مثل login)
code_length طول الكود المطلوب (اختياري؛ الافتراضي 6 ويقبل 4–8)
language لغة رسالة الكود (اختياري؛ مثل ar)
metadata بيانات إضافية تُعاد كما هي في الاستجابة (اختياري؛ مثل {"user_id": 123})

مثال بالطلب:

curl -X POST https://fynchat.com/api/v1/otp/send \
  -H "Authorization: Bearer flk_otp_xxxxxxxx_yyyyyyyy" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+966501234567",
    "purpose": "login",
    "code_length": 6,
    "language": "ar",
    "metadata": {"user_id": 123}
  }'

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

{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "phone_masked": "+966***4567",
  "expires_at": "2026-05-22T10:35:00Z"
}

احفظ request_id — ستحتاجه في خطوة التحقق.

التحقق من الكود (verify)

أرسل طلب POST إلى /api/v1/otp/verify بالحقلين:

الحقل الوصف
request_id معرّف الطلب المُعاد من خطوة الإرسال
code الكود الذي أدخله المستخدم
{
  "request_id": "550e8400-...",
  "code": "123456"
}

عند النجاح تعود الاستجابة بالحقل verified مع رقم الهاتف والبيانات الإضافية:

{ "verified": true, "phone": "+966501234567", "metadata": {...} }

وعند فشل التحقق يظهر الحقل attempts_remaining (المحاولات المتبقية) والحقل error الذي يوضّح السبب.

أمثلة الكود الجاهزة

توفّر صفحة التوثيق عارض أمثلة بتبويبات تنقلك بين اللغات: cURL، وPHP، وNode.js، وPython، إضافةً إلى تبويب HMAC للتوقيع. اضغط زر نسخ لنسخ المثال المعروض إلى الحافظة.

رموز الأخطاء

HTTP الرمز المعنى
401 missing_api_key / invalid_api_key مفتاح مفقود أو غير صالح
401 signature_invalid / signature_expired توقيع HMAC غير صالح أو منتهي الصلاحية
403 ip_not_allowed / phone_blocked عنوان IP غير مسموح أو رقم محظور
404 request_not_found معرّف الطلب غير موجود
410 expired انتهت صلاحية الكود
429 rate_limit_exceeded / cooldown / too_many_attempts تجاوزت الحد — انتظر retry_after ثانية
400 invalid_code كود خاطئ — راجع attempts_remaining
502 delivery_failed فشل تسليم الرسالة

الإعدادات الافتراضية

الإعداد القيمة
طول الكود 6 أرقام (قابل للضبط 4–8)
مدة الصلاحية 5 دقائق
محاولات التحقق القصوى 3 ثم قفل 15 دقيقة
cooldown قبل إعادة الإرسال 60 ثانية
حد الدقيقة 60 طلب لكل مفتاح
الحد اليومي 10,000 طلب لكل مفتاح
حد الرقم 5 طلبات إرسال لنفس الرقم خلال 10 دقائق

العودة للإعدادات

لضبط مفتاحك ومراجعة صفحة التوثيق كاملةً، افتح إعدادات OTP.

روابط سريعة