مقدمة
🎯 ماذا يفعل هذا الموديل؟
يتيح لك موديل Orders إنشاء وإدارة وتتبع طلبات العملاء - من إنهاء عملية الدفع في عربة التسوق إلى معالجة الدفع وتلبية الطلبات - مع التعامل مع دورة حياة الطلبات الكاملة في التجارة الإلكترونية.
فكر في الأمر كنظام إدارة الطلبات الخاص بك - يضيف العملاء العناصر إلى العربة، ويقومون بتقديم الطلبات، وإجراء المدفوعات، وأنت تتبع كل شيء من إنشاء الطلب إلى التسليم، كل ذلك ضمن OneEntry.
📖 شرح بسيط
تحتاج كل تطبيق تجارة إلكترونية إلى إدارة الطلبات:
- 🛒 عربة التسوق - يقوم المستخدمون بإضافة المنتجات، ثم الانتقال إلى الدفع
- 📋 إنشاء الطلب - تحويل العربة إلى طلب مع تفاصيل العميل
- 💳 معالجة الدفع - قبول المدفوعات (بطاقة ائتمان، باي بال، إلخ)
- 📦 تتبع الطلب - تتبع الحالة (معلق، قيد المعالجة، تم الشحن، تم التسليم)
- 📊 إدارة الطلبات - عرض جميع الطلبات، تصفية حسب الحالة، البحث
- 🧾 تفاصيل الطلب - عرض العناصر، الإجماليات، معلومات العميل
المشكلات:
- 🔒 لا يوجد تكامل للدفع - تتبع المدفوعات يدويًا
- 📊 تتبع ضعيف - صعوبة في العثور على الطلبات، تصفية حسب الحالة
- 🔄 لا توجد أتمتة - تحديثات الحالة يدويًا، لا توجد إشعارات
- 💸 لا يوجد حساب للضرائب/الشحن - حساب يدوي
حل الطلبات:
الفوائد:
- 🔒 مدفوعات متكاملة - Stripe، PayPal، بوابات أخرى
- 📊 تتبع متقدم - تصفية، بحث، تصدير الطلبات
- 🔄 عمليات تلقائية - تحديثات الحالة، إشعارات
- 💸 حسابات تلقائية - ضرائب، شحن، خصومات
✨ المفاهيم الأساسية
ما هو الطلب؟
الطلب هو معاملة شراء من العميل تحتوي على:
- عناصر الطلب - المنتجات/الخدمات التي يتم شراؤها (الكمية، السعر)
- معلومات العميل - الاسم، البريد الإلكتروني، الهاتف
- عنوان الشحن - موقع التسليم
- عنوان الفواتير - معلومات فواتير الدفع
- تفاصيل الدفع - طريقة الدفع، معرف المعاملة
- إجماليات الطلب - المجموع الفرعي، الضريبة، الشحن، الإجمالي
- حالة الطلب - الحالة الحالية (معلق، قيد المعالجة، مكتمل)
- الطوابع الزمنية - تواريخ الإنشاء، التحديث، الاكتمال
هيكل الطلب
كل طلب له هذا الهيكل:
{
id: 179,
storageId: 1,
createdDate: '2025-07-03T00:43:02.908Z',
statusIdentifier: 'inProgress',
formIdentifier: 'orderForm',
formData: [
{
marker: 'order_name',
type: 'string',
value: 'Ivan'
}
],
attributeSetIdentifier: 'order_form',
totalSum: '300.00',
currency: 'USD',
paymentAccountIdentifier: 'cash',
paymentAccountLocalizeInfos: { title: 'Cash' },
products: [
{
id: 2957,
title: 'Cosmo',
sku: null,
previewImage: null,
price: 150,
quantity: 2,
},
],
isCompleted: true,
}
دورة حياة الطلب
1. Customer adds items to cart
↓
2. Proceeds to checkout
↓
3. Enters shipping/billing info
↓
4. Selects payment method
↓
5. Order created (status: pending)
↓
6. Payment processed (status: processing)
↓
7. Order confirmed (status: confirmed)
↓
8. Items prepared (status: processing)
↓
9. Order shipped (status: shipped)
↓
10. Order delivered (status: completed)
أمثلة على حالات الطلب
| الحالة | المعنى | متى تستخدم |
|---|---|---|
| معلق | تم إنشاء الطلب، في انتظار الدفع | تم تقديمه للتو، لم تتم معالجة الدفع |
| قيد المعالجة | تم استلام الدفع، يتم تحضير العناصر | تم تأكيد الدفع، تعبئة العناصر |
| مؤكد | تم تأكيد الطلب، جاهز للشحن | تم تصفية الدفع، تم التحقق من الطلب |
| تم الشحن | تم إرسال الطلب إلى العميل | تم إرسال الطرد عبر الناقل |
| تم التسليم | تم استلام الطلب من قبل العميل | تم تأكيد التسليم |
| مكتمل | تم الانتهاء من الطلب، لا حاجة لأي إجراء | المعاملة مكتملة |
| ملغى | تم إلغاء الطلب | تم إلغاءه من قبل العميل/المسؤول |
| مسترد | تم إرجاع الدفع إلى العميل | تمت معالجة الاسترداد |
| فشل | فشل الدفع أو المعالجة | تم رفض الدفع |
العمليات الشائعة للطلب
| العملية | الوصف | مثال على الاستخدام |
|---|---|---|
| إنشاء طلب | تحويل العربة إلى طلب | تم النقر على زر الدفع |
| الحصول على الطلبات | قائمة بجميع الطلبات (مقسمة) | لوحة تحكم المسؤول |
| الحصول على طلب بواسطة المعرف | جلب طلب محدد | عرض تفاصيل الطلب |
| تحديث الحالة | تغيير حالة الطلب | وضع علامة على أنه تم شحنه |
| حساب الإجماليات | حساب الضريبة، الشحن، الإجمالي | ملخص الدفع |
| إلغاء الطلب | إلغاء الطلب المعلق | طلب العميل للإلغاء |
| استرداد الطلب | إرجاع الدفع إلى العميل | إرجاع المنتج |
لماذا تستخدم موديل الطلبات؟
| الفائدة | الوصف |
|---|---|
| إدارة الطلبات التلقائية | لا تتبع يدوي، كل شيء تلقائي |
| تكامل الدفع | Stripe، PayPal، بوابات أخرى مدمجة |
| تتبع الحالة | تحديثات حالة الطلب في الوقت الحقيقي |
| إشعارات العملاء | إرسال تأكيدات الطلب تلقائيًا، تحديثات الشحن |
| إدارة المخزون | خصم تلقائي من المخزون عند الطلب |
| التحليلات والتقارير | تقارير المبيعات، تتبع الإيرادات |
| الأمان | معالجة الدفع متوافقة مع PCI |
📋 ما تحتاج إلى معرفته
يتم إنشاء الطلبات من بيانات العربة
تحتاج إلى تقديم:
- معلومات العميل - الاسم، البريد الإلكتروني، الهاتف
- عناصر الطلب - المنتجات، الكميات، الأسعار
- عنوان الشحن - موقع التسليم
- طريقة الدفع - كيف سيدفع العميل
إدارة حالة الطلب
تتبع تقدم الطلب من خلال الحالات:
تدفقات الحالة الشائعة:
- المنتجات الرقمية: معلق → قيد المعالجة → مكتمل
- المنتجات المادية: معلق → قيد المعالجة → تم الشحن → تم التسليم → مكتمل
- ملغى: أي حالة → ملغى
- مسترد: مكتمل → مسترد
معالجة الدفع
تتكامل الطلبات مع بوابات الدفع
💡 ملاحظات مهمة
يتم إنشاء الطلبات في OneEntry
يتعامل موديل الطلبات مع دورة حياة الطلب الكاملة:
- ✅ إنشاء الطلبات من بيانات العربة
- ✅ معالجة المدفوعات
- ✅ تحديث حالة الطلب
- ✅ تتبع الشحن
- ❌ لا يتعامل مع واجهة عربة التسوق (أنت تبني ذلك)
مسؤوليتك:
- بناء واجهة عربة التسوق
- جمع معلومات العميل
- عرض تأكيد الطلب
معالجة الدفع
تتكامل الطلبات مع بوابات الدفع:
- Stripe (موصى به)
- PayPal
- بوابات مخصصة
مهم:
- لا تخزن تفاصيل بطاقة الائتمان مباشرة
- استخدم التوكن (Stripe.js، PayPal SDK)
- يتعامل OneEntry مع معالجة الدفع الآمنة
إدارة المخزون
تقوم الطلبات تلقائيًا:
- ✅ خصم المخزون عند إنشاء الطلب
- ✅ استعادة المخزون عند الإلغاء
- ✅ تتبع مستويات المخزون
أفضل ممارسة: تحقق من المخزون قبل إنشاء الطلب
الأمان
تحتوي الطلبات على بيانات حساسة:
- معلومات شخصية للعميل
- تفاصيل الدفع
- عناوين الشحن
دائمًا:
- استخدم HTTPS لصفحات الدفع
- تحقق من البيانات قبل إنشاء الطلبات
- نفذ المصادقة المناسبة
- اتبع معايير PCI DSS للمدفوعات
📊 جدول مرجعي سريع
| الطريقة | الوصف |
|---|---|
| createOrder() | إنشاء طلب جديد |
| getAllOrdersByMarker() | الحصول على جميع الطلبات (مقسمة) |
| getOrdersStorageByMarker() | الحصول على كائن تخزين طلب واحد بواسطة العلامة. |
| getAllOrdersStorage() | الحصول على جميع كائنات تخزين الطلبات. |
| getOrderByMarkerAndId() | الحصول على طلب واحد بواسطة العلامة والمعرف من كائن تخزين الطلب الذي أنشأه المستخدم. |
| updateOrderByMarkerAndId() | تحديث طلب واحد بواسطة العلامة والمعرف من كائن تخزين الطلب الذي أنشأه المستخدم. |
❓ الأسئلة الشائعة (FAQ)
كيف يمكنني إنشاء طلب مع عدة منتجات؟
مرر مصفوفة من كائنات المنتجات في بيانات الطلب.
يجب أن يتضمن كل منتج id و quantity و price.
يتم حساب المجموع الكلي تلقائيًا بناءً على كميات وأسعار المنتجات.
هل يمكنني تحديث الطلب بعد إنشائه؟
نعم، استخدم updateOrderByMarkerAndId() لتعديل تفاصيل الطلب مثل الحالة، عنوان الشحن، أو بيانات الطلب.
ومع ذلك، بمجرد معالجة الدفع، كن حذرًا عند تعديل عناصر الطلب أو الإجماليات.
كيف يمكنني تتبع تغييرات حالة الطلب؟
استخدم حقل statusIdentifier لتتبع الحالة الحالية للطلب.
يمكنك أيضًا إعداد webhooks أو استخدام موديل الأحداث لتلقي إشعارات عند تغيير حالة الطلب.
ما الفرق بين تخزين الطلبات والطلبات الفردية؟
تخزين الطلبات هو حاوية تجمع الطلبات ذات الصلة (مثل الطلبات من نموذج معين أو قناة مبيعات). الطلبات الفردية هي المعاملات الفعلية للشراء ضمن ذلك التخزين. استخدم العلامات لتحديد وتنظيم تخزين الطلبات المختلفة.
كيف يمكنني التعامل مع إلغاء الطلبات والاستردادات؟
قم بتحديث حالة الطلب إلى "ملغى" باستخدام updateOrderByMarkerAndId().
للاستردادات، استخدم موديل المدفوعات لمعالجة معاملة الاسترداد، ثم قم بتحديث حالة الطلب إلى "مسترد".
هل يمكنني استرجاع تاريخ طلبات العميل؟
نعم، استخدم getAllOrdersByMarker() مع الفلاتر المناسبة لجلب جميع الطلبات لعميل معين.
يمكنك تصفية حسب معرف المستخدم، نطاق التاريخ، أو معايير أخرى.
🎓 أفضل الممارسات
- تحقق من العربة قبل إنشاء الطلب - تحقق من توفر المخزون
- احسب الإجماليات على الخادم - لا تثق في الحسابات من جانب العميل
- أرسل تأكيدات الطلب - أرسل بريدًا إلكترونيًا للعملاء بعد تقديم الطلب
- تتبع حالة الطلب - تحديث الحالة مع تقدم الطلب
- تعامل مع فشل الدفع - منطق إعادة المحاولة، رسائل خطأ واضحة
- نفذ بحث الطلبات - دع العملاء يجدون طلباتهم بسهولة
- احتفظ بسجل تاريخ الطلبات - احتفظ بالسجلات لخدمة العملاء
- استخدم التقسيم - لا تقم بتحميل جميع الطلبات دفعة واحدة
مزيد من المعلومات حول واجهة المستخدم للموديل https://doc.oneentry.cloud/docs/category/orders
تعريف موديل الطلبات
const { Orders } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
🔗 الوثائق ذات الصلة
- موديل المنتجات - إدارة المنتجات المتاحة للشراء
- موديل المستخدمين - إدارة العملاء الذين يقدمون الطلبات
- موديل IntegrationCollections - تكاملات بوابة الدفع
- موديل الأحداث - إشعارات حالة الطلب