انتقل إلى المحتوى
TAQNIX
وحدات Odooإضافات ووردبريسقوالب ووردبريسقوالب Shopifyقوالب التطبيقاتالسكربتات والأدواتالمدونةبِع على TAQNIX

توثيق تطبيق سائق التوصيل لووكومرس

دليل خطوة بخطوة للجميع دون برمجة: أضف السائقين، وحدّد القواعد، وأسند الطلبات، وفعّل الإشعارات الفورية، وابنِ تطبيق أندرويد الخاص بك أونلاين، مع فصول للمطورين.

يشرح الإصدار 1.1.0حُدّث في 22 أكتوبر 2026

بداية سريعة

بكلمات بسيطة: يتيح لك هذا المنتج تسليم طلبات WooCommerce إلى سائقي التوصيل. تختار السائق من شاشة الطلب، فيصله إشعار على هاتفه، ثم يوصل الطلب إلى العميل ويسجّل كل خطوة في تطبيق صغير. وتتابع كل شيء مباشرة في WordPress.
طلبات بانتظار السائقتفاصيل الطلب مع زرّي Call وNavigateملف السائق وأرباحه
تطبيق السائق على الهاتف: قائمة الطلبات، وطلب، وأرباح السائق.

ما الذي اشتريته: ثلاثة أجزاء تعمل معًا

الجزءما هومن يحتاج إليه
1. الإضافة
delivery-driver-app-for-woocommerce-plugin.zip
تُثبَّت على متجر WordPress الخاص بك. منها تسند الطلبات، وتختار القواعد، وتضبط الرسائل النصية للعملاء والإشعارات الفورية، وتبني التطبيق، كل ذلك في مكان واحد.الجميع
2. أداة بناء التطبيق أونلاين (App Builder)
(تبويب داخل الإضافة)
تنشئ تطبيق أندرويد خاصًا بك (باسمك وأيقونتك وألوانك) على خوادمنا. تملأ نموذجًا قصيرًا وتضغط زرًا واحدًا.معظم المستخدمين
3. الشيفرة المصدرية للتطبيق
flutter-app-source.zip
الشيفرة الكاملة لتطبيق السائق (Flutter، لأندرويد وآيفون). استخدمها إذا أردت تعديل التطبيق أو بناءه بنفسك.المطورون
نصيحة: يمكنك البدء دون أي برمجة: ثبّت الإضافة، وأضف السائقين، وابنِ التطبيق أونلاين، ثم ثبّته على هاتف السائق. الفصول من 4 إلى 12 مكتوبة لأصحاب المتاجر، والفصلان 13 و14 للمطورين.

آلية التوصيل

بكلمات بسيطة: يمر كل طلب بالخطوات الأربع نفسها. يستطيع السائق تنفيذ الخطوة التالية فقط، فلا تُتخطى أي خطوة.
الخطوةمن ينفّذهاماذا يحدث
Assigned (مُسنَد)أنت (أو السائق، من المجموعة المفتوحة)يصل السائق إشعار فوري «New order assigned».
Accepted (مقبول)السائق ينقر Accept Routeتعرف أن السائق قبل المهمة.
Picked up (تم الاستلام)السائق ينقر Mark as Picked Upيمكن أن يصل العميل رسالة نصية «في الطريق».
Completed (مكتمل)السائق ينقر Complete Delivery (ويلتقط صورة إذا اشترطتها)تصبح حالة طلب WooCommerce Completed، وتُدفع عمولة السائق، ويصل العميل رسالة «تم التسليم».

خيارات إضافية يمكنك تشغيلها أو إيقافها: يستطيع السائقون الاستحواذ على الطلبات التي لم يأخذها أحد («المجموعة المفتوحة»)، ويستطيعون رفض الطلب، ويمكن جعل صورة التسليم إلزامية.

مهم: لا يرى السائق إلا الطلبات المسندة إليه (والمجموعة المفتوحة إذا سمحت بها). لا تظهر له أبدًا طلبات سائق آخر أو محفظته أو موقعه.

المتطلبات

ما تحتاج إليهالسبب
موقع WordPress مع WooCommerce 8.0 أو أحدث، وPHP 7.4+تقرأ الإضافة طلبات WooCommerce وتحدّثها.
HTTPS (قفل في المتصفح) وروابط ثابتة «جميلة» (pretty permalinks)يتصل الهاتف بمتجرك عبر https://yourstore.com/wp-json/.
مشروع Firebase مجاني (حساب Google)مطلوب للإشعارات الفورية. يعرض الفصل 7 كل نقرة.
اختياري: إضافة TeraWallet المجانيةتدفع عمولة السائق في محفظة يراها السائق داخل التطبيق.
اختياري: حساب لدى مزوّد رسائل SMS (Twilio أو Unifonic أو 2Factor أو OTPless)يرسل رسائل «في الطريق» و«تم التسليم» إلى العملاء.
رمز الشراء الخاص بكتحتاج إليه أداة بناء التطبيق أونلاين (الفصل 12).

التثبيت

  1. فك ضغط الحزمة التي نزّلتها. ستجد بداخلها الملفين delivery-driver-app-for-woocommerce-plugin.zip وflutter-app-source.zip. لا تفك ضغط هذين الملفين.
  2. في WordPress افتح Plugins → Add New → Upload Plugin، واختر delivery-driver-app-for-woocommerce-plugin.zip، ثم انقر Install Now ثم Activate.
  3. افتح Settings → Delivery App. إذا ظهرت الصفحة بخمسة تبويبات (Operations وMobile App وSMS & WhatsApp وPush Notifications وApp Builder) فالإضافة جاهزة.
  4. تحقق من Settings → Permalinks: أي خيار عدا «Plain» مناسب. انقر Save Changes مرة واحدة إذا تعذّر على التطبيق الوصول إلى متجرك.
مهم: إذا كنت تستخدم إضافة «Delivery Boy for WooCommerce» القديمة، أو إضافة «Taqnix App Builder» المنفصلة، فاقرأ الفصل 17 أولًا: هذه الإضافة تحل محلهما معًا.

إنشاء السائقين

بكلمات بسيطة: السائق مجرد مستخدم WordPress بدور Delivery Boy. يسجّل السائق الدخول إلى التطبيق باسم المستخدم وكلمة المرور هذين.
  1. افتح Users → Add New.
  2. املأ اسم المستخدم (مثل maria) والبريد الإلكتروني والاسم وكلمة مرور قوية.
  3. اضبط Role على Delivery Boy وانقر Add User.
  4. سلّم اسم المستخدم وكلمة المرور إلى السائق. هذا كل شيء.
إضافة سائق: مستخدم جديد عادي بدور «Delivery Boy».
إضافة سائق: مستخدم جديد عادي بدور «Delivery Boy».
نصيحة: إدخال كلمة مرور خاطئة خمس مرات متتالية يقفل اسم المستخدم هذا على ذلك الهاتف لمدة 15 دقيقة. استخدم Users → Edit لإعادة تعيين كلمة المرور في أي وقت.

الإعدادات تبويبًا تبويبًا

بكلمات بسيطة: افتح Settings → Delivery App. غيّر ما تحتاج إليه ثم انقر Save Settings. يقرأ التطبيق هذه القواعد عند تشغيله، فيرى السائقون التغيير عند فتح التطبيق في المرة التالية.

Operations: قواعد عملك في التوصيل

تبويب Operations.
تبويب Operations.
الإعدادوظيفته
Delivery History (Days)عدد أيام عمليات التوصيل المنتهية التي يستطيع السائق رؤيتها. 1 = اليوم فقط، 7 = الأسبوع الأخير.
Driver Commission per Deliveryمبلغ يُدفع إلى TeraWallet الخاصة بالسائق مرة واحدة عند اكتمال الطلب. 0 = لا يُدفع شيء.
Allow Self-Assignment (Open Pool)يضيف إلى التطبيق تبويب Available فيه الطلبات قيد المعالجة التي لم يأخذها أحد. ينقر السائق Claim Order ليأخذ أحدها.
Allow Order Rejectionيعرض زر Reject this order على الطلبات المسندة حديثًا. يعود الطلب المرفوض إلى حالة «غير مُسنَد» (ولن يُعرض على السائق نفسه مرة أخرى).
Require Photo Proofيجب أن يلتقط السائق صورة قبل أن يمكن إكمال الطلب.
Dispatch Hotline Phone Numberيظهر في التطبيق تحت Contact Dispatch؛ ينقر السائق للاتصال بك.

Mobile App

تبويب Mobile App.
تبويب Mobile App.
الإعدادوظيفته
Force App Updateأدنى إصدار مسموح به للتطبيق، مثل 1.2.0. تعرض التطبيقات الأقدم شاشة «Update Required» ولا يمكن استخدامها.
App Update Linkالوجهة التي يفتحها زر «Update Now»: صفحة تطبيقك في Google Play أو App Store.
Privacy Policy / Terms linksتُفتح من شاشة الملف الشخصي للسائق.

SMS & WhatsApp

تبويب SMS & WhatsApp.
تبويب SMS & WhatsApp.

فعّل Enable Automated Texts، واختر المزوّد، والصق المفتاح (والسر إن كان لدى مزوّدك سر)، واكتب اسم المرسِل أو رقمه، وعدّل الرسالتين. يمكنك استخدام {order_id} و{customer_name} و{total} في الرسائل. تُرسل رسالة «في الطريق» عندما ينقر السائق Mark as Picked Up، وتُرسل رسالة «تم التسليم» عند اكتمال الطلب.

Push Notifications

تبويب Push Notifications: الصق هنا ملف حساب الخدمة في Firebase.
تبويب Push Notifications: الصق هنا ملف حساب الخدمة في Firebase.

هنا يوضع مفتاح Firebase الخاص بك (الفصل 7).

نصيحة: الأسرار مثل سر SMS لا تظهر مرة أخرى بعد حفظها. اترك الحقل فارغًا للإبقاء على القيمة المحفوظة.

الإشعارات الفورية (Firebase)

بكلمات بسيطة: الإشعارات الفورية هي «التنبيه» الذي يصل هاتف السائق عند إسناد طلب إليه. توفّرها Google مجانًا عبر Firebase. تضبط هذا مرة واحدة. يتطلب ملفين: أحدهما يخبر التطبيق بمشروع Firebase المستخدم، والآخر يتيح لـمتجرك إرسال الرسائل.

أ. أنشئ مشروع Firebase

  1. انتقل إلى console.firebase.google.com وسجّل الدخول بحساب Google.
  2. انقر Add project، واكتب اسمًا (مثل «Acme Drivers»)، وأكمل المعالج. يمكنك إيقاف Google Analytics.

ب. ملف التطبيق: google-services.json (أندرويد)

  1. في مشروعك انقر أيقونة Android («Add app»).
  2. Android package name: اكتب الاسم الفريد لتطبيقك، مثل com.acme.drivers. دوّنه: يجب أن تستخدم الاسم نفسه تمامًا في App Builder (الفصل 12).
  3. انقر Register app ثم Download google-services.json. احتفظ بهذا الملف للفصل 12 أو 13. يمكنك تخطي شاشات Firebase المتبقية.

ج. ملف المتجر: مفتاح حساب الخدمة

  1. في Firebase انقر أيقونة الترس ← Project settings ← تبويب Service accounts.
  2. انقر Generate new private key وأكّد. سيُنزَّل ملف .json.
  3. افتح هذا الملف في محرر نصوص، وحدّد كل محتواه وانسخه.
  4. في WordPress افتح Settings → Delivery App → Push Notifications، والصق المحتوى في الحقل، وانقر Save Settings.
مهم: ملف حساب الخدمة بمثابة كلمة مرور لمشروع Firebase الخاص بك. لا ترسله بالبريد الإلكتروني ولا تضعه في مكان عام.

د. للآيفون فقط

للآيفون أضف أيضًا تطبيق iOS في Firebase (باستخدام معرّف الحزمة bundle ID)، ونزّل GoogleService-Info.plist، وارفع مفتاح APNs من Apple ضمن Project settings → Cloud Messaging. التفاصيل في الفصل 13.

جرّبه

سجّل الدخول إلى التطبيق على هاتف (الفصل 9)، ثم أسند إلى ذلك السائق طلبًا (الفصل 8). يجب أن يرنّ الهاتف خلال ثوانٍ. تقول ملاحظات الطلب في شاشة الطلب «Push notification sent to driver…» أو تعرض الخطأ الدقيق الصادر من Google إذا حدث خلل.

إسناد طلب إلى سائق

بكلمات بسيطة: افتح أي طلب. ستجد على اليمين مربعًا اسمه Assign Delivery Boy. اختر سائقًا وانتهى الأمر. يُحفظ فورًا ولا حاجة إلى النقر على Update.
شاشة الطلب: مربع Assign Delivery Boy في العمود الأيمن.
شاشة الطلب: مربع Assign Delivery Boy في العمود الأيمن.
  1. افتح WooCommerce → Orders وانقر طلبًا حالته Processing.
  2. في Assign Delivery Boy افتح القائمة واختر السائق.
  3. يعرض سطر الحالة «Assigned» ويصل السائق إشعار فوري.

يمكنك تغيير السائق ما دام التوصيل لم ينتهِ. يبدأ السائق الجديد من جديد عند «Assigned». اختيار السطر الفارغ يزيل السائق.

ما تراه في الطلب بعد ذلك

العنصرالمعنى
Current StatusAssigned أو Accepted أو Picked up أو Completed.
Track Driver on Mapيفتح Google Maps عند آخر موقع للسائق، مع وقت آخر تحديث.
Proof of Deliveryالصورة (والتوقيع) التي رفعها السائق.
ملاحظات الطلبتُكتب كل خطوة في ملاحظات الطلب، مثل «Order assigned to Ahmed Khan».
توصيل منتهٍ: الحالة وموقع السائق وصورة التسليم.
توصيل منتهٍ: الحالة وموقع السائق وصورة التسليم.

دليل السائق (سلّمه لسائقيك)

بكلمات بسيطة: في التطبيق أربعة تبويبات وزر واحد لكل طلب. يرى السائق دائمًا الخطوة التالية الوحيدة.

التثبيت وتسجيل الدخول

  1. ثبّت تطبيقك (ملف APK من رسالة App Builder الإلكترونية، أو من Google Play).
  2. افتحه، واسمح بـالإشعارات والموقع عند الطلب، وسجّل الدخول باسم المستخدم وكلمة المرور اللذين أنشأتهما.
  3. تفتح لوحة التحكم. يبقى السائق مسجّلًا للدخول حتى ينقر Logout أو تغيّر كلمة مروره.
شاشة تسجيل الدخول.
شاشة تسجيل الدخول.

لوحة التحكم

AvailableAssignedAccepted
التبويبات: Available (فقط إذا كانت المجموعة المفتوحة مفعّلة) وAssigned وAccepted وCompleted.
التبويبالمحتوى
Availableطلبات لم يأخذها أحد بعد. انقر أحدها ثم Claim Order.
Assignedالطلبات الجديدة لهذا السائق.
Acceptedالطلبات التي قبلها السائق أو استلمها.
Completedتوصيلات اليوم (أو آخر الأيام التي اخترتها في Operations).

تنفيذ توصيل

الاستحواذ على طلب مفتوحقبول الطلب أو رفضهإكمال التوصيل
شاشة الطلب نفسها في خطوات مختلفة. الزر الكبير في الأسفل يعرض دائمًا الإجراء التالي.
  1. انقر الطلب. يتصل Call بالعميل، ويفتح Navigate العنوان في تطبيق الخرائط.
  2. انقر Accept Route (أو Reject this order إذا سمحت بذلك).
  3. عند المتجر انقر Mark as Picked Up. يمكن الآن أن يصل العميل رسالة «في الطريق».
  4. عند الباب انقر Complete Delivery. إذا لم يكن العميل قد دفع بعد (الدفع عند الاستلام) يعرض الزر Collect Cash & Complete. وإذا فعّلت إثبات الصورة تُفتح الكاميرا: التقط صورة للطرد عند الباب فيكتمل التوصيل.

الأرباح والملف الشخصي

تعرض شاشة الملف الشخصي (أيقونة الشخص أعلى اليمين) Total Earnings من TeraWallet، ورقم هاتف الإرسال (dispatch)، وسجل التوصيل، والخصوصية والشروط، وإصدار التطبيق، وLogout.

الملف الشخصي والأرباح.
الملف الشخصي والأرباح.
نصيحة: يشارك التطبيق موقع السائق ما دام مفتوحًا، كل 10 دقائق تقريبًا. ولا يتتبع هاتفًا أُغلق فيه التطبيق أو سُجّل منه الخروج.

عمولة السائق والأرباح

حدّد مبلغًا في Operations → Driver Commission per Delivery. عند اكتمال التوصيل تضيف الإضافة هذا المبلغ إلى رصيد TeraWallet الخاص بالسائق. يُدفع مرة واحدة لكل طلب، حتى لو عُدّل الطلب لاحقًا. تعرض ملاحظات الطلب «Credited … to driver». ويرى السائق الرصيد باسم Total Earnings في التطبيق.

ثبّت إضافة TeraWallet المجانية (محفظة WooCommerce) وفعّلها لهذا الغرض. بدونها تعمل عمليات التوصيل، لكن ملاحظة الطلب تقول «Commission not paid: TeraWallet is not active» ويعرض التطبيق 0.00. لصرف مستحقات سائقيك استخدم شاشات TeraWallet نفسها (قائمة Wallet ← تعديل الرصيد أو السحب).

رسائل العملاء

فعّل Settings → Delivery App → SMS & WhatsApp → Enable Automated Texts. يُستخدم رقم هاتف الفوترة للعميل، لذا اجعله حقلًا إلزاميًا في صفحة الدفع واطلب إدخال رمز الدولة.

المزوّدمناسب لـالمفتاح / السر
Twilioرسائل SMS وWhatsApp حول العالمAccount SID / Auth Token؛ المرسِل = رقم Twilio الخاص بك (لـ WhatsApp: whatsapp:+1…)
Unifonicالسعودية والإمارات والخليجAppSid؛ المرسِل = اسم مرسِل معتمد
2Factorرسائل SMS للمعاملات في الهندمفتاح API؛ معرّف المرسِل (sender id)
OTPlessرسائل WhatsAppClient ID / Client Secret
نصيحة: إذا لم تصل الرسائل، افتح الطلب: يُكتب الإرسال الفاشل في ملاحظات الطلب مع رد مزوّدك.

بناء تطبيقك الخاص أونلاين (دون برمجة)

بكلمات بسيطة: يُنشئ تبويب App Builder ملف أندرويد (APK) باسم تطبيق خاص بك وأيقونتك وألوانك، موجَّهًا إلى متجرك. تملأ نموذجًا، وبعد دقائق تصلك رسالة بريد إلكتروني برابط التنزيل. لا تحتاج إلى تثبيت أي شيء على حاسوبك.
Settings → Delivery App → App Builder.
Settings → Delivery App → App Builder.

قبل أن تبدأ

  • رمز الشراء الخاص بك.
  • أيقونة التطبيق (PNG مربعة، 1024×1024)، وشعار، وصورة شاشة البداية (splash).
  • ملف google-services.json من الفصل 7، المُنشأ لاسم الحزمة (package name) الذي ستكتبه أدناه.

خطوة بخطوة

  1. افتح Settings → Delivery App → App Builder.
  2. Step 1. تحقق من عنوان موقعك (https، دون شرطة مائلة في النهاية)، والصق رمز الشراء، وانقر Connect & load my app. تظهر علامة «Connected» الخضراء. يُخزَّن رمزك على خادمك ولا يظهر مرة أخرى.
  3. Step 2. اكتب App name (يظهر تحت الأيقونة على الهاتف) وPackage name (الاسم نفسه الذي أعطيته لـ Firebase، مثل com.acme.drivers) وبريدك الإلكتروني. نرسل رابط التنزيل إلى هذا البريد.
  4. Step 3. اختر صور الأيقونة والشعار وشاشة البداية (تُرفع بمجرد اختيارها)، واختر لون شاشة البداية، وارفع google-services.json.
  5. Step 4. اختر APK (للتثبيت مباشرة على هاتف وتجربته) أو App Bundle (للرفع إلى Google Play). انقر Save details ثم Start Android build.
  6. انتظر رسالة البريد الإلكتروني (عادةً بضع دقائق؛ تُصفّ عمليات البناء في طابور واحدة تلو الأخرى). افتح الرابط على الهاتف لتنزيل ملف APK وتثبيته.
مهم: يجب أن يكون اسم الحزمة في الأداة وفي Firebase متطابقًا. إذا اختلفا يتوقف البناء برسالة تخبرك بالاسمين اللذين وجدهما.

معلومات مفيدة

  • تبني الأداة تطبيقات أندرويد. للآيفون استخدم الشيفرة المصدرية (الفصل 13).
  • يمكن لكل رمز شراء بناء تطبيق واحد. لتغيير الاسم أو الأيقونة أو الشاشات لاحقًا، احفظ النموذج مرة أخرى وانقر Build مرة أخرى.
  • المُرسَل إلى خادم البناء: عنوان موقعك، ورمز الشراء، واسم التطبيق، واسم الحزمة، وبريدك الإلكتروني وهاتفك، ولون شاشة البداية، وصورك الثلاث، وملف Firebase. لا حاجة إلى كلمات مرور المتجر ولا إلى مفاتيح WooCommerce.
  • لا يستطيع استخدام هذا التبويب إلا المديرون، وكل طلب محمي برمز أمان.

لتثبيت APK على هاتف: افتح الرابط في متصفح الهاتف، واسمح بـ«التثبيت من هذا المصدر» إذا طلب أندرويد ذلك، ثم افتح التطبيق. سجّل الدخول بحساب سائق من الفصل 5.

للمطورين: بناء التطبيق من الشيفرة المصدرية

بكلمات بسيطة: تخطَّ هذا الفصل إذا كنت تستخدم أداة البناء أونلاين. الشيفرة المصدرية الكاملة لتطبيق السائق في flutter-app-source.zip: Flutter (Dart)، وDio للاتصال بالشبكة، وFirebase Messaging، وGeolocator، وSecure Storage.

المتطلبات

  • Flutter 3.41 أو أحدث (يجب أن يكون flutter doctor أخضر)، وAndroid Studio لأندرويد، وXcode وCocoaPods للآيفون.

1. افتح المشروع ووجّهه إلى متجرك

unzip flutter-app-source.zip -d driver_app && cd driver_app
flutter pub get

# run on a connected phone or emulator
flutter run --dart-define=API_DOMAIN=https://yourstore.com

أو غيّر القيمة الافتراضية بشكل دائم في lib/core/constants/app_config.dart:

class ApiConstants {
  static const String domain = String.fromEnvironment(
    'API_DOMAIN',
    defaultValue: 'https://yourstore.com',   // <- your store, no slash at the end
  );
  ...
}

2. أضف ملفات Firebase

  • أندرويد: android/app/google-services.json (يعمل إضافة Gradle تلقائيًا عند وجود الملف).
  • آيفون: ios/Runner/GoogleService-Info.plist، ثم افتح ios/Runner.xcworkspace في Xcode واسحبه إلى مجموعة Runner إذا ظهر باللون الأحمر.

3. الاسم والحزمة والأيقونات

# unique app id (must match Firebase)
dart run change_app_package_name:main com.acme.drivers

# replace assets/images/icon.png (1024x1024) and assets/images/splash.png, then:
dart run flutter_launcher_icons
dart run flutter_native_splash:create

اسم التطبيق الظاهر على الهاتف موجود في android/app/src/main/AndroidManifest.xml (android:label) وفي ios/Runner/Info.plist (CFBundleDisplayName). وألوان العلامة التجارية في lib/core/constants/app_colors.dart.

4. التوقيع والبناء (أندرويد)

# create a signing key once and keep it safe
keytool -genkey -v -keystore ~/acme-drivers.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

# android/key.properties
storeFile=/Users/you/acme-drivers.jks
storePassword=...
keyAlias=upload
keyPassword=...

في android/app/build.gradle.kts اقرأ هذه القيم داخل كتلة signingConfigs { create("release") { … } } واستخدمها في buildTypes.release بدلًا من مفتاح التصحيح (debug) (في الملف تعليق يوضح الموضع). ثم:

flutter build apk --release --dart-define=API_DOMAIN=https://yourstore.com          # APK to test
flutter build appbundle --release --dart-define=API_DOMAIN=https://yourstore.com     # AAB for Google Play

5. آيفون

cd ios && pod install --repo-update && cd ..
flutter build ipa --release --dart-define=API_DOMAIN=https://yourstore.com

في Xcode اختر Team الخاص بك، وعيّن Bundle Identifier فريدًا (نفسه المستخدم في Firebase)، وأبقِ إمكانية Push Notifications. وارفع مفتاح APNs في Firebase لتعمل الإشعارات الفورية.

أين توجد الأشياء

المجلدالمحتوى
lib/core/network/dio_client.dartعميل الشبكة؛ يضيف رمز تسجيل الدخول إلى كل طلب ويسجّل خروج السائق عندما يقول الخادم إن تسجيل الدخول انتهى.
lib/features/authتسجيل الدخول وشاشة البداية والجلسة.
lib/features/ordersلوحة التحكم وقائمة الطلبات وتفاصيل الطلب وإثبات الصورة والسجل.
lib/features/profileالأرباح والتواصل والروابط القانونية وتسجيل الخروج.
lib/core/servicesمشاركة الموقع وإعدادات المتجر والتخزين الآمن.
default_files/قوالب تستخدمها أداة البناء أونلاين. تجاهلها.

للمطورين: واجهة REST API

بكلمات بسيطة: يتواصل التطبيق والإضافة عبر واجهة REST API صغيرة. يمكنك استخدامها لبناء تطبيق سائق خاص بك، أو لوحة إرسال (dispatch)، أو تكامل مع نظام آخر.

العنوان الأساسي: https://yourstore.com/wp-json/taqnix/v1. كل شيء عدا /login و/settings يحتاج إلى الرمز (token) الذي تحصل عليه من تسجيل الدخول، ويُرسل في الترويسة X-Driver-Token (ويعمل Authorization: Bearer … أيضًا). مدة صلاحية الرموز 90 يومًا، ويمكن تسجيل دخول السائق على ما يصل إلى 5 هواتف، و/logout ينهي واحدًا منها.

الطريقة والمساروظيفته
POST /loginusername وpassword ← boy_id وtoken والاسم والبريد الإلكتروني. الرمز 429 بعد كلمات مرور خاطئة كثيرة.
POST /logoutينهي هذا الرمز ويوقف الإشعارات الفورية إلى هذا الهاتف.
GET /settingsالقواعد العامة: الحد الأدنى للإصدار، والرفض، وإثبات الصورة، والمجموعة المفتوحة، وهاتف الإرسال، وروابط الشروط والتحديث.
GET /ordersالطلبات النشطة للسائق (+ المجموعة المفتوحة عند تفعيلها).
GET /historyالطلبات المكتملة للسائق خلال عدد الأيام المختار.
POST /orders/{id}/statusstatus = assigned (الاستحواذ من المجموعة) أو accepted أو picked_up أو completed. الخطوة التالية فقط مسموحة؛ وإلا يُرجَع 409.
POST /orders/{id}/rejectreason اختياري. فقط عندما يكون الرفض مفعّلًا وما زال الطلب «assigned».
POST /orders/{id}/podرفع متعدد الأجزاء (Multipart): pod_photo (JPG/PNG/WebP)، وpod_signature اختياري. يُكمل الطلب.
POST /locationlatitude وlongitude.
POST /update-fcmfcm_token الخاص بالهاتف.
GET /walletالرصيد من TeraWallet (balance_raw وbalance_formatted).

جرّبه

# 1. log in
curl -s -X POST https://yourstore.com/wp-json/taqnix/v1/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"maria","password":"your-password"}'
# -> {"success":true,"data":{"boy_id":7,"token":"7.3f9c…","display_name":"Maria Lopez",...}}

# 2. list my orders
curl -s https://yourstore.com/wp-json/taqnix/v1/orders -H 'X-Driver-Token: 7.3f9c…'

# 3. accept an order
curl -s -X POST https://yourstore.com/wp-json/taqnix/v1/orders/123/status \
  -H 'X-Driver-Token: 7.3f9c…' -H 'Content-Type: application/json' -d '{"status":"accepted"}'

إسناد طلب من شيفرتك الخاصة

// PHP, inside WordPress
$order = wc_get_order( 123 );
$result = TDB_Flow::assign( $order, $driver_user_id );   // sends the push message too
if ( is_wp_error( $result ) ) {
    error_log( $result->get_error_message() );
}

بيانات الطلب التي يمكنك قراءتها

مفتاح البيانات الوصفية (Meta key)القيمة
_assigned_delivery_boy_idمعرّف مستخدم السائق.
_delivery_statusassigned أو accepted أو picked_up أو completed.
_tdb_pod_photo_idمعرّف الوسائط لصورة التسليم.
_tdb_commission_paidالعمولة المدفوعة لهذا الطلب (فارغ = لم تُدفع).

الأمان والخصوصية

  • كل طلب يحتاج إلى رمز تسجيل دخول. بدونه ترد الواجهة بالرمز «401». يُؤخذ معرّف السائق من الرمز وليس من الطلب أبدًا، فلا يستطيع سائق قراءة طلبات سائق آخر أو محفظته أو موقعه، ولا تغييرها.
  • الرموز عشوائية وتُخزَّن كتجزئة (hash) أحادية الاتجاه. تسجيل الخروج أو حذف المستخدم أو إزالة الدور ينهي الوصول فورًا.
  • ترتيب الخطوات مفروض على الخادم، وتُدفع العمولة مرة واحدة لكل طلب، ويجب أن تكون الملفات المرفوعة صور JPG أو PNG أو WebP حقيقية.
  • محاولات تسجيل الدخول محدودة (5 كلمات مرور خاطئة، ثم 15 دقيقة).
  • يتطلب تبويب App Builder وكل إجراء إداري صلاحية مدير ورمز أمان؛ ولا شيء متاح للزوار.
  • البيانات المخزَّنة: آخر 100 موقع للسائق، ورمز الإشعارات الفورية، ورموز تسجيل الدخول (بيانات المستخدم الوصفية user meta)، وصور التسليم (مكتبة الوسائط)، وملاحظات الطلب. اطلب موافقة سائقيك على مشاركة الموقع واذكر ذلك في سياسة الخصوصية الخاصة بك.

حل المشكلات

المشكلةما العمل
يقول التطبيق «Cannot reach the server»تحقق من عنوان المتجر في التطبيق (API_DOMAIN) ومن HTTPS، وافتح https://yourstore.com/wp-json/taqnix/v1/settings في المتصفح: يجب أن ترى نصًا يبدأ بـ {"success":true. وإلا فأعد حفظ Settings → Permalinks.
«Access denied» عند تسجيل الدخوليجب أن يكون دور المستخدم Delivery Boy (وليس Customer أو Subscriber).
«Too many failed attempts»انتظر 15 دقيقة. هذا يحمي الحساب من تخمين كلمة المرور.
يعرض التطبيق فجأة شاشة تسجيل الدخولانتهى تسجيل الدخول (سُجّل الخروج، أو تغيرت كلمة المرور، أو مرت 90 يومًا). سجّل الدخول مرة أخرى.
لا يصل إشعار فورياقرأ ملاحظات الطلب: تعرض رد Google. تحقق من ملف حساب الخدمة (الفصل 7، القسم ج)، ومن أن السائق سجّل الدخول على ذلك الهاتف مرة واحدة على الأقل، ومن أن الإشعارات مسموح بها على الهاتف.
لا يرى السائق الطلبيجب أن يكون الطلب Processing ومُسندًا إلى ذلك السائق. تنتقل الطلبات المكتملة إلى تبويب Completed.
تبويب «Available» مفقودفعّل Allow Self-Assignment وأعد تشغيل التطبيق.
يُرفض Complete Delivery برسالة «photo required»إثبات الصورة مفعّل. يفتح التطبيق الكاميرا؛ اسمح بالوصول إلى الكاميرا من إعدادات الهاتف.
تبقى الأرباح 0.00ثبّت TeraWallet وحدّد مبلغ العمولة. لا تُدفع عمولات الطلبات التي اكتملت قبل ذلك بأثر رجعي.
يقول App Builder «Not allowed»انتهت جلسة المدير: أعد تحميل الصفحة.
يقول App Builder إن اسم الحزمة غير متطابقاجعل اسم الحزمة في الأداة مطابقًا لاسمه في Firebase، أو نزّل ملف google-services.json جديدًا.
إضافات التخزين المؤقت (LiteSpeed وWP Rocket وCloudflare)استثنِ /wp-json/taqnix/ من التخزين المؤقت. يطلب التطبيق بالفعل بيانات حديثة.

التحديث والانتقال من الإضافات القديمة

التحديث

ارفع ملف zip الجديد للإضافة مع Replace current with uploaded؛ تبقى إعداداتك وسائقوك. ابنِ إصدارًا جديدًا من التطبيق (الفصل 12 أو 13) واطلب من السائقين التحديث. ارفع Force App Update إلى رقم الإصدار الجديد عندما تريد أن يحدّث الجميع.

إذا كنت تستخدم «Delivery Boy for WooCommerce» (1.0.x) و«Taqnix App Builder»

  • هذه الإضافة تحل محلهما معًا. عطّل «Taqnix App Builder» واحذفها؛ أداة البناء فيها صارت الآن تبويب App Builder هنا. أدخل رمز الشراء هناك مرة واحدة.
  • ارفع هذه الإضافة فوق القديمة. يبقى سائقوك وإعداداتك وطلباتك.
  • تتوقف تطبيقات السائقين القديمة عن العمل عن قصد. أغلق الإصدار 1.1 ثغرة خطيرة: كان بإمكان أي شخص يعرف معرّف السائق حتى ذلك الحين قراءة الطلبات وتغييرها. يسجّل التطبيق الجديد الدخول برمز (token). ابنِ التطبيق الجديد وثبّته، ثم ارفع Force App Update.
  • كانت العمولة سابقًا مبلغًا ثابتًا قدره 15، يُدفع من جديد في كل مرة يُحفظ فيها الطلب كمكتمل. أصبحت الآن إعدادًا (القيمة الافتراضية 0) وتُدفع مرة واحدة لكل طلب.

الإزالة

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

الدعم

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