أرسل رموز 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). استخدمه من خادمك فقط.
إذا فعّلت الخيار 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,
أرسل طلب 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 — ستحتاجه في خطوة التحقق.
أرسل طلب 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.
نستخدم ملفات ضرورية لتشغيل الموقع. وبإذنك نقيس الاستخدام وأداء الإعلانات كذلك. تقدر تغيّر اختيارك في أي وقت. سياسة الخصوصية