الحصول على كود QR الخام

يستخرج هذا الرابط بيانات كود QR الخام كبيانات ثنائية أو بصيغة base64 مع تحديد نوع الملف (mimetype).

POST
https://api.wawp.net/v2/auth/qr?access_token=YOUR_ACCESS_TOKEN&format=raw&instance_id=Your_Instance_ID

تسجيل الدخول مطلوب

سجل الدخول لاستبدال المعرفات (Instance ID) ورمز الوصول (Access Token) بمعلومات حسابك الحقيقي لاختبار ال API مباشرة.

تسجيل الدخول
اختبار /v2/auth/qr
POSTGET

لا توجد معاملات استعلام مطلوبة

هذه النهاية الطرفية لا تتوقع بيانات في الرابط.

توصيات

  • استخدم نقطة النهاية هذه للوحات تحكم CLI المخصصة أو تكاملات تطبيقات الهاتف المحمول.

  • قم بفك تشفير حقل 'data' بتنسيق Base64 قبل تمريره إلى مكتبة توليد QR.

  • قم بتنفيذ آلية استطلاع لجلب رمز جديد عند انتهاء الصلاحية.

فك شيفرة البروتوكول: دليل بيانات QR الخام

يُعد الرابط /v2/auth/qr أداة متخصصة للمطورين الذين يحتاجون إلى تحكم دقيق في عملية المصادقة. بخلاف رابط الصورة، يوفر هذا المسار سلسلة البروتوكول الخام بتنسيق Base64، وهو أمر ضروري لإنشاء مولدات QR مخصصة، أو أدوات سطر الأوامر (CLI)، أو تطبيقات الهاتف الأصلية.


🏗️ التحليل التقني: مغلف JSON

تحصل من هذا الرابط على كائن JSON يحتوي على مكونين رئيسيين:

  1. mimetype: عادة ما يكون application/json، مما يشير إلى أن البيانات عبارة عن كائن بيانات مهيكل.
  2. data: سلسلة نصية مشفرة بصيغة Base64. بمجرد فك تشفيرها، تنتج كائن JSON يحتوي على توقيع البروتوكول المطلوب بواسطة WhatsApp WebSocket.

هيكل البيانات بعد فك التشفير

عند فك تشفير حقل data، ستجد:

  • value: السلسلة النصية الفعلية التي يجب تحويلها إلى نمط QR.
  • expiry: طابع زمني (Unix timestamp) يمثل اللحظة التي سينتهي فيها صلاحية هذا الكود من قبل خوادم واتساب.

🛡️ أفضل الممارسات الاستراتيجية

1. تنفيذ عارض ASCII لسطر الأوامر

إذا كنت تبني أداة لسطر الأوامر (مثل مدير VPS)، فإن الحصول على سلسلة QR الخام يسمح لك بعرض الكود مباشرة في الطرفية باستخدام أحرف ASCII.

  • إجراء المطور: استخدم مكتبة مثل qrcode-terminal في Node.js وقم بتمرير قيمة value إليها لعرض النمط القابل للمسح مباشرة للمسؤولين.

2. التزامن وحدود الطلبات

يعد جلب كود QR الخام عملية تستهلك موارد لأنها تتطلب فحص حالة المحرك في الوقت الفعلي.

  • نافذة الجلب: نوصي بفاصل زمني يتراوح بين 5-7 ثوانٍ. الجلب بمعدل أسرع من ذلك لن يعطي كوداً "أحدث" (لأن واتساب يقوم بتدوير الأكواد كل 20-30 ثانية) وقد يؤدي ذلك لظهور خطأ 429.

3. التعامل مع نافذة التعافي (حالة 422)

إذا كان المحرك مشغولاً بإعادة ضبط جسر واتساب الداخلي، ستتلقى خطأ 422 Session Status Not Expected.

  • الحل: هذا ليس فشلاً، بل إشارة "يرجى الانتظار". يجب أن ينفذ تطبيقك استراتيجية انتظار (exponential backoff) والانتظار لمدة 10 ثوانٍ قبل محاولة الجلب مرة أخرى.

💡 حالات الاستخدام القياسية

أ. تكامل تطبيقات الهاتف

يمكنك جلب سلسلة QR الخام واستخدام مكتبات إنشاء كود QR الأصلية في نظام iOS أو Android، مما يؤدي لظهور الكود بوضوح أعلى وتباين أفضل يسهل مسحه.

ب. لوحات التحكم عالية الأمان

في البيئات التي لا تريد فيها تحميل صور خارجية من خوادمنا، يمكنك جلب السلسلة الخام على خادمك الخاص، والتحقق منها، ثم إنشاء نمط QR محلياً باستخدام التصميم الخاص بشركتك.


⚠️ الأخطاء الشائعة

  • البيانات الثنائية مقابل النص: حقل data مشفر بصيغة Base64. إذا حاولت تمريره مباشرة لمولد QR دون فك تشفيره، سيفشل المسح لأنه سيتم تفسيره كنص حرفي بدلاً من كونه معرف بروتوكول واتساب.
  • تجاهل الصلاحية: تحقق دائماً من حقل expiry. إذا عرضت كوداً منتهي الصلاحية، سيظهر للمستخدم خطأ "منتهي" على هاتفه، مما يسبب تجربة مستخدم سيئة.

ملخص المسؤوليات:

  • استرجاع السلسلة التشفيرية الخام المطلوبة لمصادقة واتساب.
  • توفير مغلف JSON مغلف بـ Base64 لضمان توافق البروتوكول.
  • تمكين العرض المخصص في البيئات غير المتصفحية (CLI، Mobile).
  • تسهيل المراقبة المتقدمة لدورات تدوير كود QR وصلاحيته.

البارامترات

قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.

محتوى الطلب

يرسل كـ JSON
string

معرف النسخة المكون من 12 رمزاً

مثال:
string

مفتاح الوصول الخاص بـ API

مثال:
string

تنسيق المخرجات (الافتراضي: raw)

مثال:

أمثلة الكود

استخدم أمثلة الكود الجاهزة لدمج واجهة برمجة التطبيقات (API) في مشروعك بسرعة وكفاءة. اختر لغة البرمجة والمكتبة التي تفضلها.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/auth/qr";
3const params = new URLSearchParams({
4 "instance_id": "Your_Instance_ID",
5 "access_token": "YOUR_ACCESS_TOKEN"
6}).toString();
7const body = {
8 "format": "raw"
9};
10
11fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
12 method: "POST",
13 headers: { "Content-Type": "application/json" },
14 body: JSON.stringify(body)
15})
16 .then(async (response) => {
17 if (response.ok) {
18 const data = await response.json();
19 console.log("Success:", data);
20 return data;
21 }
22
23 // Error Handling
24 if (response.status === 400) {
25 console.error("Error 400: طلب غير صالح - معاملات مطلوبة مفقودة");
26 }
27 if (response.status === 400) {
28 console.error("Error 400: طلب غير صالح (تنسيق XML)");
29 }
30 if (response.status === 400) {
31 console.error("Error 400: طلب غير صالح (نص عادي)");
32 }
33 if (response.status === 401) {
34 console.error("Error 401: غير مصرح - مفتاح الوصول غير صالح أو مفقود");
35 }
36 if (response.status === 401) {
37 console.error("Error 401: غير مصرح (تنسيق XML)");
38 }
39 if (response.status === 404) {
40 console.error("Error 404: غير موجود - الجلسة غير موجودة");
41 }
42 if (response.status === 404) {
43 console.error("Error 404: غير موجود (تنسيق XML)");
44 }
45 if (response.status === 500) {
46 console.error("Error 500: خطأ في الخادم الداخلي - فشل غير متوقع");
47 }
48 if (response.status === 500) {
49 console.error("Error 500: خطأ في الخادم الداخلي (HTML)");
50 }
51 if (response.status === 502) {
52 console.error("Error 502: بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي");
53 }
54 if (response.status === 502) {
55 console.error("Error 502: بوابة غير صالحة (تنسيق XML)");
56 }
57 if (response.status === 422) {
58 console.error("Error 422: Unprocessable Entity - Session Status Mismatch");
59 }
60
61 const errorText = await response.text();
62 console.error(`Error ${response.status}: ${errorText}`);
63 })
64 .catch((error) => console.error("Network Error:", error));
عينات تفاعلية
Ln 64, Col 1javascript

الردود المتوقعة

استكشف كافة الردود والنتائج المحتملة من الخادم. قمنا بتوثيق كل كود حالة (Status Code) مع أمثلة للبيانات لتسهيل معالجة الأخطاء والنجاح.

ناجح - بيانات QR الخام
النوع:
application/json
string *
string *

Example

{
"mimetype": "application/json; charset=utf-8",
"data": "eyJ2YWx1ZSI6IjJAR0JoWWtpTkV1U0tpeXpIeVVOYy9RQi9lTnhpSkJWSE96bGhOQ1daRERvRUZyOEhDWEhxTENKdEVpZHh6WWoxWkpqRzZ4K2NOaFVlVGlZeUJHWExJQzU1Z2ppKzRHQ2VyakRvPSIsImV4cGlyeSI6MTIzNDU2Nzg5MH0="
}
طلب غير صالح - معاملات مطلوبة مفقودة
غير مصرح - مفتاح الوصول غير صالح أو مفقود
غير موجود - الجلسة غير موجودة
Unprocessable Entity - Session Status Mismatch
خطأ في الخادم الداخلي - فشل غير متوقع
بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي
الموضوع السابقحول نظام المصادقة
الموضوع التاليالحصول على صورة كود QR

Command Palette

Search for a command to run...