M دليل متجرMatjar GuideVERSION 1.0.0
دليل الإعداد والإدارةSetup & administration guide

دليل إعداد وتشغيل متجر 1.0.0

مرجع عملي كامل لتثبيت المتجر، إضافة المنتجات، إعداد الدفع والشحن، إدارة الطلبات، الأمان، النسخ الاحتياطي، والمحتوى—مع توضيح ما يعمل آلياً وما يحتاج إجراءً يدوياً.

Matjar 1.0.0 Setup & Operations Guide

A complete practical reference for installation, products, payments, shipping, orders, security, backups, and content—with clear distinctions between automated and manual workflows.

Matjar 1.0.0العربية افتراضياًArabic by defaultيعمل دون اتصالWorks offline
1.0.0إصدار النظامSystem version
PHP 8.2+الحد الأدنى للخادمMinimum runtime
19عملة متاحةAvailable currencies
AR / ENواجهة ومحتوى باللغتينBilingual UI & content
لا توجد نتائج مطابقةNo matching sections

جرّب كلمة أقصر أو مساراً مثل الدفع، الشحن، المنتج.

Try a shorter term such as payment, shipping, or product.

01

نظرة عامة على النظامSystem overview

أبرز الإمكانات المتاحة لإدارة المتجر وتشغيله.Core capabilities for managing and operating the store.

يوفر متجر واجهة بيع عربية وإنجليزية، حسابات للعملاء، كتالوجاً بخيارات متعددة، سلة وCheckout، إدارة للمخزون والطلبات والمرتجعات، وأدوات للمحتوى والتشغيل ضمن لوحة إدارة موحدة.

الواجهة التجارية

منتجات وتصنيفات، بحث، مفضلة، سلة، Checkout، حساب العميل، تتبع الطلب والفاتورة.

تشغيل المتجر

مخزون وحجوزات، طلبات، مدفوعات، شحن ثابت، ليبل محلي، مرتجعات واستردادات.

المحتوى والتسويق

صفحات، محرر مرئي، مدونة، SEO، كوبونات، عروض، ولاء، نشرة، تقييمات ولافتات.

إدارة النظام

صلاحيات، أمان، SMTP، نسخ احتياطي، صيانة، ترقيات محلية، فحص صحة وسجلات أخطاء.

قاعدة مهمة: اتبع الأقسام بالترتيب عند الإطلاق الأول. المسارات المكتوبة مثل /admin/store/settings تُفتح بعد تسجيل دخول المدير.
نطاق التكاملات: Stripe هو تكامل الدفع الآلي المتاح. يعتمد الشحن على أسعار ثابتة وتتبع يدوي، والليبل عام محلي وليس بوليصة ناقل. PayPal غير متاح في Checkout، ولا تتوفر مزامنة مورّد أو تحديثات عن بُعد.

Matjar provides an Arabic and English storefront, customer accounts, a variant-aware catalog, cart and checkout, inventory, orders, returns, and content and operational tools within one administration area.

Storefront

Products, categories, search, wishlist, cart, checkout, customer account, order tracking, and invoices.

Store operations

Inventory and reservations, orders, payments, flat-rate shipping, local labels, returns, and refunds.

Content & growth

Pages, visual builder, blog, SEO, coupons, deals, loyalty, newsletter, reviews, and banners.

System administration

Permissions, security, SMTP, backups, maintenance, local upgrades, health checks, and error logs.

Working rule: follow the chapters in order for a first launch. Routes such as /admin/store/settings are opened after an administrator signs in.
Integration scope: Stripe is the available automated payment integration. Shipping uses flat rates and manual tracking; the built-in label is generic, not a carrier label. PayPal is unavailable at checkout, and supplier synchronization and remote updates are not provided.
02

متطلبات الخادم والتحضيرServer requirements & preparation

المواصفات الضرورية قبل رفع الملفات.What must be ready before files are uploaded.

العنصرالمطلوبملاحظات
PHP8.2 أو أحدثاستخدم إصداراً مدعوماً وحديثاً في الإنتاج.
قاعدة البياناتMySQL 8 أو MariaDB حديثةقاعدة فارغة ومستخدم يملك صلاحية الإنشاء والتعديل.
امتدادات PHPPDO, pdo_mysql, mbstring, OpenSSL, fileinfo, DOM/XML, cURL, JSON, ZipArchiveZipArchive للحزم والنسخ الشاملة؛ DOM/XML لتعقيم المحتوى الغني.
HTTPSإلزامي للإنتاجضروري للمفاتيح والجلسات وStripe Live والمحافظ.
Web Rootيفضل public/يمكن رفع الجذر إلى public_html مع قواعد الحماية المرفقة.

صلاحيات الكتابة وقت التثبيت

يجب أن يستطيع PHP إنشاء .env والكتابة في public/uploads وstorage وفروعه: app، app/backups، app/private، cache، cache/sessions، cache/rate-limits، وlogs. تُضبط الملكية والصلاحيات وفق نموذج الصلاحيات لدى مزود الاستضافة، مع تجنب منح 777 لجميع الملفات.

قائمة تحضير قصيرة

  • نطاق موجه إلى الاستضافة
  • شهادة SSL فعالة
  • قاعدة بيانات وبيانات دخول
  • إصدار PHP وامتداداته
  • بريد المدير الآمن
  • نسخة محفوظة من الحزمة الأصلية
ItemRequirementNotes
PHP8.2 or newerUse a currently supported production build.
DatabaseMySQL 8 or a modern MariaDBUse an empty database and a user allowed to create and alter tables.
PHP extensionsPDO, pdo_mysql, mbstring, OpenSSL, fileinfo, DOM/XML, cURL, JSON, ZipArchiveZipArchive is used by packages/backups; DOM/XML sanitizes rich content.
HTTPSRequired in productionNeeded for keys, sessions, Stripe Live, and wallets.
Web rootPrefer public/The root may also be placed in public_html using the included protection rules.

Writable locations during installation

PHP must be able to create .env and write to public/uploads plus storage and its app, app/backups, app/private, cache, cache/sessions, cache/rate-limits, and logs branches. Ownership and permissions follow the hosting provider’s permission model; 777 permissions should not be granted to all files.

Preparation checklist

  • Domain points to the host
  • Valid SSL certificate
  • Database and credentials
  • Correct PHP and extensions
  • Secure administrator email
  • Original package retained safely
03

تثبيت متجر على cPanelInstalling Matjar on cPanel

دليل كامل من إعداد النطاق وقاعدة البيانات إلى تشغيل Cron.A complete guide from domain and database setup through Cron.

نطاق الشرح: تنطبق الخطوات على حساب cPanel الذي يوفره مزود الاستضافة للعميل. قد تختلف أسماء القوائم قليلاً بين شركات الاستضافة، بينما تبقى المتطلبات والمسارات واحدة.

اختيار بنية النشر

الطريقةمثال للمسارمتى تُستخدم
الموصى بها/home/ACCOUNT/matjar
Document Root: /home/ACCOUNT/matjar/public
عندما تسمح صفحة Domains بتحديد Document Root للنطاق أو النطاق الفرعي. تبقى ملفات التطبيق الخاصة خارج جذر الويب.
المتوافقة مع public_html/home/ACCOUNT/public_htmlعندما لا تسمح الاستضافة بتغيير جذر النطاق الأساسي. تُرفع الحزمة كاملة، ويعمل index.php و.htaccess في الجذر على توجيه الطلبات وحماية المجلدات الخاصة.

ACCOUNT اسم توضيحي ويُستبدل باسم حساب cPanel الفعلي، كما يُستبدل example.com بالنطاق المرتبط بالتثبيت.

بنية الملفات مهمة: يجب أن تظهر index.php وapp وpublic وstorage مباشرة داخل جذر التثبيت، لا داخل مجلد إضافي مثل Matjar-1.0.0/Matjar-1.0.0. يجب أيضاً بقاء ملفات .htaccess و.user.ini المخفية في أماكنها.

خطوات التثبيت داخل cPanel

1. ربط النطاق وتفعيل SSL

يُضاف النطاق أو النطاق الفرعي من Domains ويُوجّه إلى مسار التثبيت المختار. تُفعّل شهادة AutoSSL أو Let’s Encrypt، ويُنتظر حتى يعمل العنوان بصيغة https:// من دون تحذير.

2. اختيار PHP والامتدادات

من MultiPHP Manager أو Select PHP Version يُحدد PHP 8.2 أو أحدث. تُفعّل PDO، pdo_mysql، mbstring، OpenSSL، fileinfo، DOM/XML، cURL، JSON وZipArchive، وتُضبط حدود الرفع بما يكفي لحجم الحزمة والصور.

3. إنشاء قاعدة MySQL

من MySQL Databases تُنشأ قاعدة فارغة ثم مستخدم بكلمة مرور قوية، ويُربط المستخدم بالقاعدة مع ALL PRIVILEGES. تُحفظ الأسماء الكاملة التي يضيف إليها cPanel بادئة الحساب. يكون المضيف عادة localhost والمنفذ 3306 ما لم يحدد مزود الاستضافة غير ذلك.

4. رفع الحزمة وفكها

من File Manager تُرفع حزمة ZIP إلى مسار التثبيت ثم تُستخرج. يمكن استخدام SFTP للحزم الكبيرة. بعد الاستخراج يُتحقق من الحجم وبنية المجلدات، ثم يُحذف ملف ZIP من مساحة الويب.

5. التحقق من ملفات الحماية

يُفعّل خيار Show Hidden Files في File Manager للتأكد من وجود .htaccess في جذر المشروع وداخل public. عند استخدام public_html لا تُنقل محتويات public منفردة ولا يُحذف مجلد public.

6. ضبط الملكية والصلاحيات

تبدأ الملفات عادة بصلاحية 644 والمجلدات 755. يجب أن يتمكن PHP من إنشاء .env والكتابة داخل storage وفروعه وpublic/uploads. عند ظهور فشل كتابة يمكن استخدام 775 للمجلد المطلوب إذا كان نموذج الاستضافة يسمح به؛ لا تُمنح 777 لجميع الملفات.

7. فتح معالج التثبيت

يُفتح https://example.com/install من المتصفح، وليس /public/install. يفحص المعالج إصدار PHP والامتدادات والكتابة، ويوقف زر التثبيت إلى أن تنجح المتطلبات الأساسية.

8. إدخال بيانات الموقع

تُدخل أسماء المتجر بالعربية والإنجليزية، بريد التواصل، والرابط الكامل في APP URL مثل https://shop.example.com من دون مسار إضافي غير مستخدم. العربية هي اللغة الافتراضية.

9. إدخال قاعدة البيانات والمدير

تُستخدم أسماء قاعدة البيانات والمستخدم الكاملة كما يعرضها cPanel، مع المضيف والمنفذ وكلمة المرور. ثم يُنشأ حساب المدير الأساسي باسم واضح وبريد صالح وكلمة مرور قوية وفريدة.

10. تنفيذ التثبيت

ينشئ المعالج الجداول والبيانات الأساسية وحساب المدير، ويولّد APP_KEY آمناً وملف .env، ثم ينقل إلى /signin. بعد نجاح التثبيت يعيد المسار /install التوجيه إلى تسجيل الدخول.

حماية .env: يحتوي الملف على بيانات قاعدة البيانات ومفتاح التشفير. يجب ألا يكون قابلاً للتنزيل أو مضموماً في تذكرة دعم. بعد التثبيت يمكن ضبطه إلى 600 أو 640 إذا كانت الاستضافة تدعم ذلك وكان PHP ما يزال قادراً على قراءته.

اختبارات ما بعد التثبيت

  • فتح الصفحة الرئيسية و/signin عبر HTTPS
  • الدخول بحساب المدير وفتح /admin/license
  • رفع صورة اختبار للتأكد من صلاحية public/uploads
  • التأكد أن طلب /.env و/app/ يعيد 403 أو 404 ولا يعرض محتوى
  • فتح صفحة System Health ومراجعة الأخطاء

إعداد Cron من cPanel

من Cron Jobs تُضاف مهمة كل 5–15 دقيقة. يُستخدم مسار PHP CLI الذي يعرضه مزود الاستضافة والمسار المطلق الفعلي للتثبيت. أمثلة:

/usr/local/bin/php /home/ACCOUNT/matjar/bin/cron.php
/usr/local/bin/php /home/ACCOUNT/public_html/bin/cron.php

تدير المهمة النسخ التلقائي المستحق وتنظف جلسات Checkout والطلبات اليدوية والحجوزات المنتهية. يُفضّل إبقاء بريد أخطاء Cron مفعلاً أثناء الاختبار الأول؛ حركة الزوار ليست بديلاً موثوقاً عن Cron.

مشكلات cPanel الشائعة

العرضالفحص المقترح
خطأ 500 بعد الرفعمراجعة Errors في cPanel، إصدار PHP والامتدادات، سلامة .htaccess، وملكية الملفات.
الرئيسية تعمل وبقية الروابط 404التأكد من وجود .htaccess ودعم mod_rewrite وAllowOverride لدى مزود الاستضافة.
التصميم أو الصور لا تظهرالتحقق من بقاء public/assets وبنية التثبيت وAPP URL وعدم حذف قواعد الجذر.
Access denied لقاعدة البياناتمراجعة بادئة cPanel في اسم القاعدة والمستخدم، كلمة المرور، وربط المستخدم بالقاعدة مع ALL PRIVILEGES.
فشل إنشاء .env أو الكتابةمراجعة ملكية جذر التثبيت وصلاحيات storage وpublic/uploads وفق نموذج PHP في الاستضافة.
Scope: these steps apply to the cPanel account supplied by the customer’s hosting provider. Menu names may vary slightly between hosts, while the requirements and application paths remain the same.

Choose the deployment layout

MethodExample pathWhen to use it
Recommended/home/ACCOUNT/matjar
Document Root: /home/ACCOUNT/matjar/public
Use when Domains allows the document root of a domain or subdomain to be changed. Private application files remain outside the general web root.
public_html compatible/home/ACCOUNT/public_htmlUse when the primary-domain document root cannot be changed. Upload the complete package; the root index.php and .htaccess route requests and protect private directories.

ACCOUNT is a placeholder for the actual cPanel account name, and example.com is replaced by the domain connected to the installation.

File structure matters: index.php, app, public, and storage must appear directly in the installation root, not inside an extra directory such as Matjar-1.0.0/Matjar-1.0.0. Hidden .htaccess and .user.ini files must remain in place.

Detailed cPanel installation

1. Connect the domain and enable SSL

Add the domain or subdomain under Domains and point it to the selected installation path. Enable AutoSSL or Let’s Encrypt and wait until the address loads through https:// without a certificate warning.

2. Select PHP and extensions

Use MultiPHP Manager or Select PHP Version to choose PHP 8.2 or newer. Enable PDO, pdo_mysql, mbstring, OpenSSL, fileinfo, DOM/XML, cURL, JSON, and ZipArchive, and ensure upload limits are sufficient for the package and product images.

3. Create the MySQL database

Under MySQL Databases, create an empty database and a user with a strong password, then assign that user to the database with ALL PRIVILEGES. Retain the complete cPanel-prefixed names. The host is normally localhost and the port 3306 unless the hosting provider specifies otherwise.

4. Upload and extract the package

Upload the ZIP through File Manager into the selected installation path and extract it. SFTP can be used for large packages. Verify the extracted size and folder structure, then remove the ZIP from the web space.

5. Verify protection files

Enable Show Hidden Files in File Manager and confirm that .htaccess exists in the project root and in public. For a public_html deployment, do not move only the contents of public or delete the public directory.

6. Set ownership and permissions

Files normally begin at 644 and directories at 755. PHP must be able to create .env and write to storage, its branches, and public/uploads. If a write check fails, 775 may be used for the required directory where the hosting model permits it; do not grant 777 to all files.

7. Open the installer

Open https://example.com/install, not /public/install. The wizard checks PHP, required extensions, and writable paths, and disables installation until essential checks pass.

8. Enter site information

Enter the Arabic and English store names, contact email, and complete APP URL such as https://shop.example.com without an unused extra path. Arabic is the default language.

9. Enter database and administrator details

Use the complete database and user names shown by cPanel, together with the host, port, and password. Create the primary administrator with a clear name, valid email, and a strong unique password.

10. Run installation

The wizard creates the schema, baseline data, and administrator, generates a secure APP_KEY and .env, then redirects to /signin. After completion, /install redirects to sign-in.

Protect .env: this file contains database credentials and the encryption key. It must not be downloadable or included in a support ticket. After installation, permissions may be set to 600 or 640 when supported by the host and PHP can still read the file.

Post-installation checks

  • Open the homepage and /signin over HTTPS
  • Sign in as the administrator and open /admin/license
  • Upload a test image to verify public/uploads access
  • Confirm that requests to /.env and /app/ return 403 or 404 without content
  • Open System Health and review reported issues

Configure Cron in cPanel

Under Cron Jobs, add a task every 5–15 minutes. Use the PHP CLI path supplied by the hosting provider and the actual absolute installation path. Examples:

/usr/local/bin/php /home/ACCOUNT/matjar/bin/cron.php
/usr/local/bin/php /home/ACCOUNT/public_html/bin/cron.php

The task runs due automatic backups and cleans expired checkout sessions, manual orders, and stock reservations. Cron error email should remain enabled during the first test; web traffic is not a reliable scheduler.

Common cPanel issues

SymptomSuggested check
HTTP 500 after uploadReview cPanel Errors, PHP version and extensions, .htaccess integrity, and file ownership.
Homepage works but other routes return 404Confirm that .htaccess exists and that the host supports mod_rewrite and AllowOverride.
Styles or images are missingConfirm that public/assets remains present, the installation structure is correct, APP URL is accurate, and root rewrite rules remain intact.
Database access deniedCheck cPanel prefixes in the database and user names, password, and the user-to-database assignment with ALL PRIVILEGES.
.env creation or write check failsReview installation-root ownership and permissions for storage and public/uploads according to the host’s PHP model.
04

إدارة الترخيصLicense management

التفعيل والفحص والتجديد وإلغاء التفعيل.Activation, checking, renewal, and deactivation.

بعد التثبيت تبقى واجهة المتجر العامة متاحة، بينما تُقفل صفحات الإدارة إلى أن يُفعّل ترخيص صالح. تتم إدارة العملية كاملة من /admin/license.

الحصول على كود الترخيص

1. فتح صفحة شراء متجر

يتم شراء الترخيص من dapn.net/digital-product-14.html. تُستكمل بيانات حساب العميل والطلب والدفع وفق الخيارات المعروضة في موقع المزود.

2. فتح تراخيص المشتريات

بعد اعتماد الطلب تُفتح صفحة تراخيص المشتريات من حساب العميل لدى dapn.net. تعرض الصفحة الترخيص المرتبط بالمنتج وبياناته المتاحة.

3. نسخ كود الترخيص

يُنسخ كود الترخيص كما يظهر في حساب العميل، من دون مسافات إضافية أو تغيير للأحرف. رقم الطلب أو رقم الفاتورة ليس بديلاً عن كود الترخيص.

4. التحقق من النطاق والمدة

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

5. معالجة الترخيص غير الظاهر

إذا اكتمل الطلب ولم يظهر الكود في صفحة التراخيص، تُفتح تذكرة من مركز الدعم مع رقم الطلب، من دون نشر بيانات الدفع أو كلمة المرور.

إضافة الكود وتفعيل المتجر

1. تسجيل دخول المدير الأساسي

يُفتح /signin ثم /admin/license. تظل صفحة الترخيص متاحة حتى عندما تكون بقية صفحات الإدارة مقفلة.

2. إدخال الكود فقط

يُلصق الكود في حقل «أدخل أو حدّث كود الترخيص» ثم يُضغط «تفعيل الترخيص» مرة واحدة. لا يُضاف اسم النطاق أو البريد أو أي API secret إلى الحقل.

3. إتمام التحقق الآمن

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

4. مراجعة نتيجة التفعيل

تُراجع الحالة والنطاق والمنتج وتاريخا التفعيل والانتهاء والمدة المتبقية وآخر فحص والفحص القادم. تعني الحالة «فعال» أن صفحات الإدارة أصبحت متاحة.

5. إعادة الفحص عند الحاجة

يُستخدم زر «إعادة الفحص» بعد تجديد الترخيص أو تصحيح النطاق. تُخزَّن نتيجة الفحص الناجح لمدة 12 ساعة، وتوجد مهلة اتصال حتى 48 ساعة لترخيص كان صالحاً ثم تعذر الوصول إلى المزود.

6. إلغاء التفعيل قبل النقل

قبل نقل المتجر إلى نطاق آخر، يُلغى التفعيل من الصفحة نفسها. تتطلب العملية كلمة مرور المدير الأساسي وتأكيد المزود عن بُعد قبل حذف بيانات التفعيل المحلية.

لا يوجد إعداد خادم إضافي: لا يلزم API secret أو متغير بيئة للترخيص. بيانات الاتصال بالمزود مدمجة، والتفعيل يحتاج كود الترخيص فقط.
عند فشل التفعيل: تُراجع صحة الكود وتطابق النطاق وHTTPS وDNS ووقت الخادم، وقدرة cURL على الاتصال بـdapn.net. تُتجنب محاولات التفعيل المتكررة بسرعة حتى لا يطبق المزود مهلة مؤقتة.
التواصل مع المزود

dapn.net/client/tickets.php

المزود

dapn.net

تجنب تعديل ملفات النواة المحمية: فحص السلامة قد يقفل إدارة الترخيص إذا تغيرت ملفات حساسة. نفّذ التخصيص من الأدوات والملفات المخصصة المتاحة.

After installation, the public storefront remains available while administration pages stay locked until a valid license is activated. The complete process is managed at /admin/license.

Obtain the license code

1. Open the Matjar purchase page

The license is purchased from dapn.net/digital-product-14.html. Customer account, order, and payment details are completed according to the options shown by the provider.

2. Open purchase licenses

After the order is approved, open Purchase Licenses in the customer’s dapn.net account. The page displays the license associated with the product and its available details.

3. Copy the license code

Copy the code exactly as shown in the customer account, without extra spaces or changed characters. An order number or invoice number is not a substitute for the license code.

4. Review domain and term

Review the domain, status, and expiry date before activation. If the license is attached to another domain, deactivate it from the previous installation or open a provider ticket.

5. Resolve a missing license

If the order is complete but no code appears under licenses, open a ticket through the support center and include the order number without sharing payment credentials or passwords.

Add the code and activate Matjar

1. Sign in as the primary administrator

Open /signin, then /admin/license. The license page remains available while other administration pages are locked.

2. Enter the code only

Paste the code into “Enter or update license key” and select “Activate license” once. Do not add the domain, email, or an API secret to this field.

3. Complete secure verification

The system submits the license code, product identifier, domain, and installation ID to the provider over HTTPS, then stores the code encrypted and displays a masked form.

4. Review activation

Review status, domain, product, activation and expiry dates, remaining time, last check, and next check. An Active status means administration pages are available.

5. Recheck when required

Use “Recheck license” after renewal or a domain correction. A successful result is cached for 12 hours, and a 48-hour connectivity grace period applies to a previously valid license when the provider cannot be reached.

6. Deactivate before migration

Before moving the store to another domain, deactivate the license from the same page. The primary administrator password and remote provider confirmation are required before local activation data is removed.

No extra server setting: no API secret or license environment variable is required. Provider connectivity is built in, and activation requires the license code only.
If activation fails: review code accuracy, domain match, HTTPS, DNS, server time, and outbound cURL access to dapn.net. Avoid repeated rapid activation attempts because the provider may apply a temporary cooldown.
Avoid modifying protected core files: the integrity check may lock license administration when sensitive files are changed. Use available configuration and customization tools instead.
05

أول تسجيل دخول وترتيب الإعدادFirst sign-in & setup order

ترتيب عملي يمنع إطلاق متجر ناقص.A practical order that avoids an incomplete launch.

الترخيصالهويةالبريدالدفعالشحنالمنتجاتاختبار طلبالإطلاق
  1. فعّل الترخيص ثم افتح /admin/system-health وعالج المتطلبات الحمراء.
  2. أكمل اسم المتجر والشعار والرابط والبريد والعنوان والعملة والدولة والضريبة.
  3. اضبط SMTP وأرسل رسالة اختبار قبل تفعيل التحقق البريدي أو OTP أو النشرة.
  4. اضبط Stripe Test أو طرق الدفع اليدوية، ثم الشحن وأسعار كل طريقة.
  5. أنشئ التصنيفات وراجع المنتجات والأسعار والمخزون والصور وحقوق استخدامها.
  6. نفّذ طلباً كاملاً: منتج بخيارات، دفع، فاتورة، تجهيز، ليبل، تتبع، وإشعار.
  7. أنشئ نسخة احتياطية، اضبط Cron، راجع سياسة الخصوصية والشحن والمرتجعات، ثم انشر.
بيانات الكتالوج المرفقة مرجعية: راجع الأسعار والتكلفة والمخزون وأرقام المبيعات والصور الخارجية وحقوقها قبل أي استخدام تجاري.
LicenseIdentityEmailPaymentsShippingProductsTest orderLaunch
  1. Activate the license, then open /admin/system-health and resolve red requirements.
  2. Complete the store name, logo, URL, email, address, currency, country, and tax.
  3. Configure SMTP and send a test before enabling email verification, administrator OTP, or newsletter flows.
  4. Configure Stripe Test or manual payments, then shipping and every method’s price.
  5. Create categories and review all products, prices, stock, images, and usage rights.
  6. Run a complete order: variant product, payment, invoice, fulfillment, label, tracking, and notification.
  7. Create a backup, configure Cron, review privacy/shipping/return policies, and then launch.
Bundled catalog data is reference material: verify prices, costs, stock, sales figures, externally sourced images, and usage rights before commercial use.
06

هوية الموقع وإعدادات المتجرSite identity & store settings

الاسم، الوصف، التواصل، العملة، والسياسات التشغيلية.Names, description, contact, currency, and operating policies.

الإعدادات العامة /settings

المجموعةالخياراتالأثر
الاسم والعنواناسم عربي، اسم إنجليزي، وصف الرئيسية حتى 160 حرفاًالرئيسية: «اسم المتجر | الوصف». بقية الصفحات: «اسم المتجر | اسم الصفحة».
الاتصالبريد التواصل وAPP URLيستخدمان في الروابط والتنبيهات وبيانات الصفحة.
الهيدرإظهار بحث الهيدر، خط الواجهةيتحكم في التصفح والمظهر العام.
الهويةشعارات Light/Dark لـRTL وLTR، شعار الليبل، faviconJPG/PNG/WebP حتى 5MB؛ favicon ICO/PNG حتى 2MB.
الفوترصورة وسائل الدفع حتى 3MBصورة تعريفية فقط؛ لا تفعّل بوابة دفع.
الاجتماعيFacebook, X, Instagram, LinkedIn, YouTube, TikTok, WhatsApp, Telegram, GitHubأدخل الرابط وفعّل الشبكة المطلوبة فقط.

إعدادات التشغيل /admin/store/settings

  • بريد وهاتف وعنوان المتجر
  • العملة والدولة
  • حد المخزون المنخفض
  • بادئة رقم الطلب
  • تشغيل/إيقاف المتجر
  • تشغيل المرتجعات ومدتها
  • اقتراحات السلة
  • عنوان خريطة التواصل

اضبط مدة انتهاء الطلب اليدوي غير المدفوع بين 1 و168 ساعة، وحدود طلب الضيف بحسب IP والبريد ونافذة الزمن، وخيار استثناء الدفع عند الاستلام من الانتهاء. الإعداد الافتراضي للانتهاء 24 ساعة.

العملات المتاحة

SEKEURUSDGBPNOKDKKCHFCADAUDSARAEDQARKWDBHDOMREGPJODMADTRY
تغيير العملة لا يحوّل الأرقام: راجع أسعار المنتجات والشحن والحدود والضرائب يدوياً بعد تغيير العملة.

General settings /settings

GroupOptionsEffect
Name & titleArabic name, English name, home description up to 160 charactersHome: “Store name | description”. Other pages: “Store name | page name”.
ContactContact email and APP URLUsed for generated links, alerts, and page identity.
HeaderHeader search visibility and interface fontControls navigation and general appearance.
Brand assetsLight/dark RTL and LTR logos, label logo, faviconJPG/PNG/WebP up to 5MB; ICO/PNG favicon up to 2MB.
FooterPayment-method image up to 3MBVisual information only; it does not enable a gateway.
Social linksFacebook, X, Instagram, LinkedIn, YouTube, TikTok, WhatsApp, Telegram, GitHubEnter a URL and enable only the required networks.

Operating settings /admin/store/settings

  • Store email, phone, and address
  • Currency and country
  • Low-stock threshold
  • Order-number prefix
  • Store enabled/disabled
  • Returns and return window
  • Cart suggestions
  • Contact-map address

Set manual unpaid-order expiry between 1 and 168 hours, guest-order limits by IP and email within a time window, and whether cash on delivery is exempt from expiry. The default expiry is 24 hours.

Available currencies

SEKEURUSDGBPNOKDKKCHFCADAUDSARAEDQARKWDBHDOMREGPJODMADTRY
Changing currency does not convert numbers: review product prices, shipping rates, thresholds, and taxes manually after a currency change.
07

اللغات وترجمة المنتجاتLanguages & product translation

العربية مصدر المحتوى، واللغات الأخرى واجهات مترجمة.Arabic is the content source; other languages are translated views.

العربية هي لغة المصدر الثابتة. الترجمة العامة عبر Google Translate مفعلة افتراضياً للرموز en,sv,de,fr,es,tr,it,nl، ويمكن تعديل القائمة بالفواصل. يدعم الكتالوج أيضاً pt, pl, da, no, fi, ru, uk, el, ro, cs, hu, he, fa, ur, hi, id, ms, th, ja, ko, zh-CN, zh-TW. يتغير الاتجاه تلقائياً للعربية والعبرية والفارسية والأردية.

ترجمة حقول المنتج من العربية إلى الإنجليزية

المزودالإعدادملاحظات
MyMemoryلا يحتاج مفتاحاًأسهل للبدء، مع حدود وجودة قد تكون أقل.
OpenAIAPI key + موديل، الافتراضي gpt-4o-miniالمفتاح يحفظ مشفراً؛ يرسل النص إلى خدمة خارجية.
Google Cloud Translate v2API keyيحتاج مشروعاً وفوترة حسب Google.

من نموذج المنتج استخدم «ترجمة حقول EN الفارغة» للحفاظ على النص الموجود، أو «ترجمة واستبدال EN» بعد التأكيد. الحد 40 طلباً بالدقيقة للجلسة و12,000 حرف للطلب.

راجع النص دائماً: الترجمة الآلية تساعد في المسودة، لكنها لا تضمن المصطلحات القانونية أو القياسات أو ادعاءات المنتج.

Arabic is the fixed source language. General Google Translate support defaults to en,sv,de,fr,es,tr,it,nl and accepts a comma-separated list. The catalog also supports pt, pl, da, no, fi, ru, uk, el, ro, cs, hu, he, fa, ur, hi, id, ms, th, ja, ko, zh-CN, and zh-TW. Direction switches automatically for Arabic, Hebrew, Persian, and Urdu.

Translating product fields from Arabic to English

ProviderConfigurationNotes
MyMemoryNo key requiredEasiest option to start with, with possible service limits and lower quality.
OpenAIAPI key + model; default gpt-4o-miniThe key is encrypted; text is sent to an external service.
Google Cloud Translate v2API keyRequires a Google project and any applicable billing.

In the product form, use “Translate empty EN fields” to preserve existing copy, or “Translate and replace EN” after confirmation. The limit is 40 requests per minute per session and 12,000 characters per request.

Always review the result: machine translation is a drafting aid; it does not guarantee legal language, measurements, or product claims.
08

تخطيط المتجر والمظهرStore layout & appearance

تخطيط الكتالوج، الفوتر، القالب والألوان.Catalog layout, footer, theme, and colors.

تخطيط الواجهة /admin/store/layout

  • عرض الكتالوج: شبكة، صفوف، أو شبكة كبيرة.
  • الرئيسية: جميع المنتجات مع تحميل مستمر، تصنيف واحد، أو كتل من عدة تصنيفات.
  • التصنيف الافتراضي، وعرض إطار صورة المنتج من 320–1400 وارتفاعه من 240–1200.
  • الفوتر: إظهار صورة الدفع، حقوق النشر، الخصوصية والشروط، ومبدّل اللغة؛ وتحديد Left/Center/Right لكل عنصر.

منشئ القالب /admin/theme-builder

اختر Preset: Matjar Blue أو Emerald أو Indigo أو Amber أو Slate، ثم عدّل ألوان الهوية والحالات والوضعين الفاتح/الداكن المتاحة. يمكن ضبط زوايا البطاقات والأزرار والحقول، عرض الشريط الجانبي، عرض المحتوى، الكثافة، الظلال، موضع الشعار، وCustom CSS حتى 20,000 حرف.

CSS المخصص متقدم: اختبر على الهاتف والكمبيوتر والوضع الداكن. احفظ نسخة قبل تغييرات كبيرة كي لا تحجب أزرار الإدارة.

Storefront layout /admin/store/layout

  • Catalog view: grid, rows, or large grid.
  • Homepage: all products with infinite loading, one category, or blocks from several categories.
  • Default category and product image frame width 320–1400, height 240–1200.
  • Footer: show payment image, copyright, privacy/terms, and language switcher; place each at Left/Center/Right.

Theme Builder /admin/theme-builder

Start with Matjar Blue, Emerald, Indigo, Amber, or Slate, then customize the available brand, status, light, and dark colors. Adjust card/button/input radii, sidebar widths, content width, density, shadows, logo position, and up to 20,000 characters of custom CSS.

Custom CSS is advanced: test mobile, desktop, and dark mode. Create a backup before major changes so administration controls remain accessible.
09

التصنيفات وأنواع المنتجاتCategories & product types

نظّم الكتالوج قبل إضافة المنتجات.Structure the catalog before adding products.

إنشاء تصنيف /admin/store/categories

أدخل الاسم بالعربية والإنجليزية، slug، التصنيف الأب، نوع المنتج الافتراضي، الترتيب، الوصفين، الصورة، وحالتي «فعال» و«يظهر في الرئيسية». استخدم slug قصيراً لاتينياً وثابتاً لأنه يدخل في الروابط والاستيراد.

عند الحذف: لا تُحذف التصنيفات الفرعية بل تنفصل عن الأب، وتصبح المنتجات المرتبطة بلا تصنيف. انقل المنتجات أولاً إذا أردت الحفاظ على تنظيمها.

الأنواع المضمنة

عامتلفزيونهاتفلابتوبجهاز لوحيسماعاتكاميراساعة ذكيةملابسأحذيةعطرتجميلكتابأثاثجهاز مطبخجهاز منزليمعدات رياضيةبقالة

النوع يحدد حقول المواصفات والخيارات المناسبة، مثل التخزين والذاكرة للإلكترونيات، المقاس والخامة للملابس، التركيز والحجم للعطور، أو ISBN واللغة للكتب. تُستخدم الأنواع والخصائص المضمنة مباشرة، بينما لا يتوفر إنشاء أنواع وخصائص مخصصة من لوحة الإدارة.

Create a category /admin/store/categories

Enter Arabic/English names, slug, parent, default product type, order, both descriptions, an uploaded image, and the Enabled/Homepage flags. Use a short, stable Latin slug because URLs and CSV import depend on it.

On deletion: child categories are detached rather than deleted, and assigned products become uncategorized. Move products first if organization must be preserved.

Built-in product types

GeneralTVPhoneLaptopTabletHeadphonesCameraSmartwatchClothingShoesPerfumeBeautyBookFurnitureKitchen applianceHome applianceSports equipmentGrocery

A type selects relevant specification and option fields—for example storage/RAM for electronics, size/material for clothing, concentration/volume for fragrance, or ISBN/language for books. Built-in types and properties are available directly; custom type and property creation is not available in administration.

10

إضافة وتحرير منتجAdd & edit a product

كل حقول المنتج ومسار عمل مقترح.Every product field and a recommended workflow.

افتح /admin/store/products ثم «إضافة منتج». ابدأ بالبيانات الإلزامية ثم أكمل المحتوى والتسعير والمخزون والصور والخيارات.

المجموعةالحقول الفعليةإرشاد
التعريفالاسم AR/EN، التصنيف، النوع، العلامة AR/EN، SKU/الموديل، slugالاسم والسعر إلزاميان. يُولّد SKU يبدأ MJ إن كان فارغاً.
الحالةمنشور/فعال، مسودة، مخفي، سلة المحذوفاتاستخدم المسودة حتى تكتمل الصور والسعر والمخزون.
المحتوىوصف قصير وكامل AR/EN، مواصفات، ملاحظة توصيل AR/EN، جدول مقاسات AR/ENاجعل الوصف القصير مساعداً على اتخاذ قرار شراء سريع، والوصف الكامل للمعلومات الدقيقة.
التسعيرسعر البيع، التكلفة، السعر القديمالسعر القديم يعرض المقارنة؛ لا تجعله أقل من سعر البيع.
المخزونالكمية، حد منخفض، كمية إعادة الطلبحدود التنبيه لا تطلب من المورد تلقائياً.
الشحنوزن الشحن وملاحظة التوصيلالوزن لا يدخل في تسعير طرق الشحن الثابتة الحالية.
الوسائطرفع صور متعدد وترتيبهاالأولى هي الرئيسية.

صياغة المحتوى

  • الوصف القصير: 1–3 جمل تلخص الفائدة وأبرز ما يميّزه.
  • الوصف الكامل: الاستخدام، المواد/المكونات، المقاسات، محتويات العبوة، العناية والتحذيرات الحقيقية.
  • المواصفات: قيم دقيقة قابلة للمقارنة، لا عبارات تسويقية.
  • ملاحظة التوصيل: وقت تجهيز أو شرط خاص، مع عرض المدد والشروط المؤكدة فقط.
قبل النشر: افتح صفحة المنتج كزائر، جرّب كل خيار، تحقق من السعر والمخزون والصورة الرئيسية، ثم أضفه للسلة حتى Checkout.

Open /admin/store/products and select “Add product.” Start with required fields, then complete content, pricing, stock, images, and options.

GroupActual fieldsGuidance
IdentityAR/EN name, category, type, AR/EN brand, SKU/model, slugName and price are required. An MJ-prefixed SKU is generated if empty.
StatusPublished/active, draft, hidden, trashKeep as draft until images, price, and stock are ready.
ContentAR/EN short/full description, specifications, AR/EN delivery note, AR/EN size chartUse the short copy for a quick decision and full copy for exact details.
PricingSelling price, cost, old priceOld price shows comparison; do not set it below the selling price.
InventoryQuantity, low-stock level, reorder quantityAlert thresholds do not order from a supplier automatically.
ShippingShipping weight and delivery noteWeight is not used by the current flat-rate shipping methods.
MediaMultiple image upload and orderingThe first image is primary.

Writing product copy

  • Short description: 1–3 sentences with the key benefit and differentiator.
  • Full description: use, materials/ingredients, sizing, box contents, care, and truthful warnings.
  • Specifications: exact, comparable values—not marketing phrases.
  • Delivery note: confirmed preparation times or special conditions only.
Before publishing: open the product as a visitor, test every option, verify price, stock, and primary image, then add it to cart and reach checkout.
11

الخيارات والمتغيراتOptions & variants

المقاس واللون والتخزين وكل تركيبة قابلة للبيع.Size, color, storage, and every sellable combination.

اختر نوع المنتج

يعرض النوع حقولاً ديناميكية قد تكون نصاً أو رقماً أو نعم/لا أو قائمة أو تاريخاً، وبعضها مواصفة وبعضها خيار متغير.

حدد قيم الخيارات

اختر القيم الجاهزة، أضف قيماً مخصصة عند الحاجة، وحدد القيمة الافتراضية التي تظهر أولاً.

ولّد التركيبات

ينشئ النظام حاصل ضرب القيم ويقصّ القائمة بصمت عند نحو 500 تركيبة؛ قد يحتفظ التنفيذ الحالي بـ501، لذلك قلل القيم غير الضرورية مسبقاً.

اضبط كل متغير

SKU، السعر، السعر القديم، التكلفة، المخزون، والصورة. الحقول الفارغة ترث المنتج الأب.

المخزون الموروث: مخزون المتغير NULL يعني استخدام مخزون المنتج الأساسي. إذا كان لكل المتغيرات مخزون مستقل، عدّلها من نموذج المنتج لا من كمية الأب.
تجنب انفجار التركيبات: 6 ألوان × 10 مقاسات × 5 خامات = 300 متغير. تُنشأ التركيبات المعروضة للبيع فقط، مع SKU فريد لكل متغير.
Select the product type

The type exposes dynamic text, number, yes/no, select, or date fields. Some are specifications; others generate variants.

Select option values

Choose prepared values, add custom values where needed, and mark the default selection shown first.

Generate combinations

The system creates the Cartesian product and limits it to roughly 500 combinations; the resulting total may reach 501, so reduce unnecessary values in advance.

Configure each variant

SKU, price, old price, cost, stock, and image. Blank fields inherit the parent product.

Inherited inventory: NULL variant stock uses the base product stock. When every variant has independent stock, edit variants in the product form rather than the parent quantity.
Avoid combination explosion: 6 colors × 10 sizes × 5 materials creates 300 variants. Create only combinations offered for sale and assign a unique SKU to each.
12

صور المنتجات والاستيرادProduct images & import

الرفع، تحليل الصورة، استيراد URL وCSV.Uploads, image analysis, URL import, and CSV.

رفع الصور

  • الصيغ: JPG/JPEG/PNG/GIF/WebP، حتى 10MB للصورة.
  • ارفع عدة صور واسحب لإعادة الترتيب؛ الأولى هي الصورة الرئيسية.
  • واجهة التفاصيل تعرض حتى 12 صورة. توصية 250×250 إرشادية فقط؛ لا يوجد Resize تلقائي.
  • يمكن إزالة الصور الجديدة قبل الحفظ. الصور المحفوظة تعرض خيار جعلها رئيسية، ولا يظهر حذف مباشر واضح لها من النموذج الحالي.

تحليل الصورة عبر Gemini

من إعدادات المتجر فعّل التحليل، أدخل Gemini API key واختر الموديل (الافتراضي gemini-2.5-flash-lite). يحلل أول صورة ويقترح الاسم والوصف والعلامة والمواصفات المرئية، بوضع ملء الفارغ أو الاستبدال. لا يولّد السعر أو المخزون أو SKU؛ راجع كل اقتراح.

استيراد منتج من رابط

تجلب الأداة صفحة HTTP/HTTPS حتى 2MB و4 تحويلات، وتستخرج JSON-LD Product وOpen Graph وTwitter والعنوان والوصف والعلامة وSKU/الموديل والسعر/العملة والصور. اختر الحقول المطلوبة ويمكن تنزيل حتى 6 صور.

ليس تكاملاً مع مورّد: هذا استخراج لمرة واحدة يعتمد على بنية الصفحة وسماح الموقع؛ لا يزامن السعر أو المخزون، ولا يحوّل العملة، وقد يفشل أو يحتاج تحريراً. تأكد من حقوق الصور والنصوص.

CSV /admin/store/import

النوعالأعمدةالسلوك
إلزاميsku, name_en, priceيُرفض الصف إذا غاب أحدها أو كان غير صالح.
مدعومslug, name_ar, old_price, stock_quantity, category_slug, status, is_activeيحدّث المنتج الموجود بحسب SKU أو ينشئ جديداً.
الحدود5MB افتراضياً، سقف 20MB، حتى 5000 صفالتصنيف يجب أن يكون موجوداً بنفس slug.
غير مدعوم في CSVصور، أوصاف، نوع، خيارات، متغيرات، مواصفات، تكلفة، وزن، SEOأكملها بعد الاستيراد أو استخدم نسخة Backup كاملة.

تصدير CSV للمنتجات لا يتضمن category_slug، لذلك ليس Round-trip كاملاً. استيراد/تصدير JSON أيضاً ليس بديلاً عن نسخة DB + files الموقعة.

Image upload

  • Formats: JPG/JPEG/PNG/GIF/WebP, up to 10MB per image.
  • Upload several images and drag to reorder; the first is primary.
  • The detail view displays up to 12 images. The 250×250 recommendation is advisory; no automatic resize is performed.
  • New images can be removed before saving. Existing images offer “make primary,” but the current form has no clear direct delete action.

Gemini image analysis

Enable analysis in store settings, enter a Gemini API key, and choose a model (default gemini-2.5-flash-lite). The first image can suggest names, descriptions, brand, and visible specifications in fill-empty or replace mode. It does not generate price, stock, or SKU; review every suggestion.

Import from a product URL

The tool fetches an HTTP/HTTPS page up to 2MB and four redirects, then extracts JSON-LD Product, Open Graph, Twitter data, title, description, brand, SKU/model, price/currency, and images. Select the desired fields and download up to six images.

Not a supplier integration: this is a one-time extraction dependent on page structure and site access. It does not synchronize price or stock, does not convert currency, and may fail or need editing. Verify image and text rights.

CSV /admin/store/import

TypeColumnsBehavior
Requiredsku, name_en, priceA row is rejected when one is missing or invalid.
Supportedslug, name_ar, old_price, stock_quantity, category_slug, status, is_activeUpdates by SKU or creates a new product.
Limits5MB default, 20MB hard cap, up to 5,000 rowsThe category must already exist with the same slug.
Not supported in CSVImages, descriptions, type, options, variants, specifications, cost, weight, SEOComplete these later or use a full signed backup.

Product CSV export omits category_slug, so it is not a complete round trip. General JSON import/export is also not a substitute for a signed DB + files backup.

13

إدارة المخزونInventory management

الكميات والحركات والحجوزات والتنبيهات.Quantities, movements, reservations, and alerts.

من /admin/store/inventory راقب إجمالي المخزون، منخفض/نافد المخزون، مستويات إعادة الطلب، قيمة المخزون بسعر التكلفة، وجدول آخر 200 حركة. يمكن تصدير CSV.

إضافة

تزيد الكمية الحالية بالقيمة المدخلة وتسجل السبب والمستخدم والوقت.

طرح

تخفض الكمية مع منع النتيجة غير الصالحة وتسجيل الحركة.

تعيين

يستبدل الكمية بقيمة دقيقة؛ استخدمه بعد الجرد الفعلي مع ملاحظة.

حجوزات Checkout

يحجز النظام مخزون المنتج أو المتغير أثناء بوابة الدفع ثم يلتقطه أو يحرره بصورة آمنة.

يتحقق Checkout من المخزون على الخادم، لا من الرقم الظاهر في المتصفح فقط. عند نجاح الدفع يثبت الخصم؛ عند الفشل أو الإلغاء أو الانتهاء يحرر الحجز مع منع التكرار.

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

At /admin/store/inventory, monitor total, low/out-of-stock counts, reorder levels, inventory value at cost, and the latest 200 movements. CSV export is available.

Add

Increases current stock by the entered amount and records reason, user, and time.

Subtract

Reduces stock while preventing an invalid result and recording the movement.

Set

Replaces stock with an exact value; use after a physical count and add a note.

Checkout reservations

The system reserves product or variant stock during gateway payment, then captures or releases it safely.

Checkout verifies stock on the server, not only the browser. Successful payment commits the deduction; failure, cancellation, or expiry releases the reservation idempotently.

Low-stock and reorder values are alerts only: Matjar does not create supplier purchase orders or replenish automatically.
Variants: when every variant has independent stock, the inventory page blocks parent edits. Open the product and set each variant quantity.
14

بوابات وطرق الدفعPayment gateways & methods

مستوى الأتمتة المتاح لكل طريقة دفع.The available automation level for each payment method.

تدار الطرق من /admin/store/payment-gateways. تفعيل صف أو رفع أيقونة لا يعني وجود تكامل API؛ يعتمد Checkout على وجود Adapter حقيقي ومفاتيح صالحة.

الطريقةنوع التكاملحالة الطلبملاحظة
Stripe + البطاقات والمحافظ وKlarna/iDEAL/Swish/Bancontactآلي فعلييُؤكد من Stripe وWebhookيحتاج مفاتيح صحيحة وHTTPS في Live.
تحويل بنكييدويPending / غير مدفوعالإدارة تؤكد بعد التحقق خارج النظام.
USDTيدويPending / غير مدفوعأدخل الشبكة والعنوان والتعليمات في الوصف.
الدفع عند الاستلاميدويPending حتى التحصيليمكن تجهيزه وشحنه قبل تعليم الدفع.
PayPalإعداد أولي فقطلا يظهر في Checkoutلا يتوفر Adapter للإنشاء أو الالتقاط أو الاسترداد.
نطاق الأتمتة: Stripe وطرقه المؤهلة مدعومة آلياً؛ USDT والتحويل البنكي والدفع عند الاستلام يدوية؛ وPayPal غير متاح في Checkout لعدم توفر Adapter.

حالات الدفع

pending — معلقpaid — مدفوعfailed — فشلrefunded — مسترد

سجل المعاملات Append-only ولا يمكن حذفه من واجهة الإدارة. يمنع تكرار مرجع المزود، وتسجيل أكثر من دفعة ناجحة للطلب، أو استرداداً يتجاوز الإجمالي. الطلب المدفوع لا يعود إلى Pending/Failed.

Methods are managed at /admin/store/payment-gateways. Enabling a row or uploading an icon does not create an API integration; checkout requires a real adapter and valid credentials.

MethodIntegration typeOrder resultNote
Stripe + cards, wallets, Klarna/iDEAL/Swish/BancontactReal automationConfirmed by Stripe and webhookNeeds valid keys and HTTPS in Live.
Bank transferManualPending / unpaidAdministration confirms after external verification.
USDTManualPending / unpaidPut network, address, and instructions in the description.
Cash on deliveryManualPending until collectedMay be prepared and shipped before payment is marked.
PayPalConfiguration placeholderUnavailable at checkoutNo create, capture, or refund adapter is available.
Automation scope: Stripe and eligible Stripe methods are automated; USDT, bank transfer, and cash on delivery are manual; PayPal is unavailable at checkout because no adapter is provided.

Payment states

pendingpaidfailedrefunded

The transaction ledger is append-only and cannot be deleted from administration. It prevents duplicate provider references, more than one successful payment per order, and refunds beyond the total. A paid order cannot be moved back to Pending/Failed.

15

إعداد Stripe بالتفصيلDetailed Stripe setup

Test أولاً، Webhook صحيح، ثم الانتقال إلى Live.Test first, correct webhook, then move to Live.

أنشئ/جهّز حساب Stripe

أكمل التحقق التجاري، العملة والدولة وطرق الدفع المتاحة في Stripe Dashboard.

اختر وضع Test في متجر

فعّل Stripe وأدخل Publishable key يبدأ pk_test_ وSecret key يبدأ sk_test_ أو rk_test_. لا تخلط وضعين.

احفظ واختبر الاتصال

زر Test connection يتصل بحساب Stripe ويعرض Account ID. ترك حقل Secret فارغاً عند تعديل لاحق يحافظ على القيمة المخزنة.

أنشئ Webhook

استخدم زر الإنشاء/المزامنة أو أنشئ Endpoint في Stripe إلى https://YOUR-DOMAIN/webhooks/stripe.

اختر الأحداث المطلوبة

payment_intent.succeeded وpayment_intent.payment_failed وcharge.refunded، ثم انسخ Signing secret الذي يبدأ whsec_.

نفّذ طلب Test كاملاً

تحقق من نجاح الدفع، إنشاء الطلب والفاتورة، تحديث المخزون، وصول Webhook، وسجل المعاملة.

انتقل إلى Live

تأكد من HTTPS وAPP URL، ثم أدخل مفاتيح pk_live_ وsk_live_/rk_live_ وWebhook Live مستقل واختبر بمبلغ صغير.

طرق Stripe الموجودة

العرضالتنفيذشرط الظهور الأهم
Visa / Mastercard / American Expresscardحساب Stripe وعملة/دولة مدعومة.
Apple Paycard walletجهاز/متصفح مؤهل ونطاق مسجل إن فُرض التحقق.
Google Paycard walletجهاز/متصفح مؤهل ونطاق مسجل إن فُرض التحقق.
Linkcard / Linkيمكن تقييده للعملاء المحفوظين.
Klarnaklarnaبلد وعميل وعملة مؤهلة؛ دول الكود تشمل شمال/غرب أوروبا وUS.
iDEALidealEUR فقط.
SwishswishSEK فقط.
BancontactbancontactEUR فقط.

Apple Pay وGoogle Pay ليسا بوابتين مستقلتين؛ يظهران كخيارين مؤهلين داخل Stripe Payment Element بحسب الحساب والعميل والجهاز. بيانات البطاقة يجمعها Stripe.js ولا يخزنها المتجر.

أمان المفاتيح: لا تضع Secret key في JavaScript أو قالب عام أو لقطة شاشة. تحفظ المفاتيح مشفرة بواسطة APP_KEY. غياب Webhook secret يجعل أحداث Stripe غير موثوقة وغير مقبولة.
كيف يتحقق متجر من الدفع؟
ينشئ الخادم PaymentIntent بمفتاح Idempotency وmetadata للجلسة والطريقة. عند العودة يجلب PaymentIntent سراً ويتحقق من المعرف وcheckout token والحالة succeeded وتطابق العملة والمبلغ حرفياً. يضيف Webhook الموقع بـHMAC طبقةً من الموثوقية للأحداث غير المتزامنة ويمنع تكرار event ID.
Create or prepare the Stripe account

Complete business verification, currency/country setup, and eligible methods in Stripe Dashboard.

Select Test mode in Matjar

Enable Stripe and enter a pk_test_ publishable key plus an sk_test_ or rk_test_ secret. Never mix modes.

Save and test the connection

Test connection calls the Stripe account and displays its Account ID. Leaving a stored secret blank during a later edit preserves it.

Create the webhook

Use create/synchronize, or add an endpoint in Stripe pointing to https://YOUR-DOMAIN/webhooks/stripe.

Select required events

payment_intent.succeeded, payment_intent.payment_failed, and charge.refunded; copy the whsec_ signing secret.

Run a complete Test order

Verify payment, order and invoice creation, stock update, webhook receipt, and the transaction record.

Move to Live

Confirm HTTPS and APP URL, enter independent pk_live_, sk_live_/rk_live_, and Live webhook values, then test a small real amount.

Available Stripe methods

PresentationImplementationMain visibility condition
Visa / Mastercard / American ExpresscardSupported Stripe account, currency, and country.
Apple Paycard walletEligible device/browser and registered domain when enforced.
Google Paycard walletEligible device/browser and registered domain when enforced.
Linkcard / LinkMay be limited to saved customers.
KlarnaklarnaEligible buyer, country, and currency; code covers Northern/Western Europe and US.
iDEALidealEUR only.
SwishswishSEK only.
BancontactbancontactEUR only.

Apple Pay and Google Pay are not independent gateways; they appear as eligible Stripe Payment Element wallet presentations based on account, buyer, device, and browser. Stripe.js collects card details; Matjar does not store them.

Key security: never put the secret key in JavaScript, a public template, or a screenshot. Keys are encrypted with APP_KEY. Without a webhook secret, Stripe events cannot be trusted or accepted.
How does Matjar verify payment?
The server creates a PaymentIntent with an idempotency key and session/method metadata. On return, it retrieves the intent privately and verifies its ID, checkout token, succeeded state, exact currency, and exact amount. The HMAC-signed webhook adds reliable asynchronous processing and event-ID deduplication.
16

إعداد الدفع اليدويConfigure manual payments

التحويل البنكي وUSDT والدفع عند الاستلام.Bank transfer, USDT, and cash on delivery.

التحويل البنكي

فعّل الطريقة واكتب في الوصف العربي/الإنجليزي: اسم البنك، المستفيد، IBAN/الحساب، BIC/SWIFT عند الحاجة، ما يكتبه العميل كمرجع، والمهلة. لا تعرض بيانات لا ترغب في نشرها على Checkout.

USDT

اذكر الشبكة بدقة (مثل TRC20 أو ERC20)، عنوان المحفظة، العملة المطلوبة، من يتحمل رسوم الشبكة، والمرجع المطلوب. لا يتوفر اتصال Blockchain أو فحص آلي للمحفظة.

الدفع عند الاستلام

اكتب المناطق والشروط والرسوم في الوصف، واضبط الشحن الملائم. يمكن استثناء COD من انتهاء الطلب اليدوي. لا تعلّم الطلب مدفوعاً حتى يتم التحصيل.

العميل ينشئ الطلب

ينشأ Order ومعاملة Pending ويحجز/يخصم المخزون حسب مسار الطلب.

تحقق خارج النظام

راجع كشف البنك أو المحفظة أو تحصيل شركة الشحن. رفع إثبات الدفع غير متاح.

أكد من الإدارة

افتح الطلب وعدّل Payment status إلى Paid ثم Update، أو استخدم Bulk action → Mark as paid.

الانتهاء التلقائي: الطلب اليدوي غير المدفوع ينتهي حسب إعداد 1–168 ساعة ويحرر المخزون والكوبون والنقاط. Cron ضروري. لا تؤكد دفعة اعتماداً على رسالة عميل فقط.

Bank transfer

Enable the method and put bank name, beneficiary, IBAN/account, BIC/SWIFT if needed, required customer reference, and deadline in the Arabic/English description. Sensitive information not intended for checkout should remain excluded.

USDT

State the network exactly (for example TRC20 or ERC20), wallet address, required asset, who pays network fees, and the required reconciliation reference. Blockchain connectivity and automatic wallet verification are not available.

Cash on delivery

State regions, conditions, and fees in the description and configure suitable shipping. COD can be exempted from manual-order expiry. Do not mark it paid before collection.

The buyer creates an order

An order and Pending transaction are created, with stock reserved/deducted according to the order path.

Verify outside Matjar

Check the bank statement, wallet, or carrier collection. Payment-proof upload is not available.

Confirm in administration

Open the order, set Payment status to Paid and update, or use Bulk action → Mark as paid.

Automatic expiry: unpaid manual orders expire after the configured 1–168 hours and release stock, coupon, and loyalty points. Cron is required. Never confirm a payment from a customer message alone.
17

إعداد طرق الشحنConfigure shipping methods

أسعار ثابتة وشحن مجاني، من دون تكاملات API مع شركات الشحن.Flat rates and free shipping, without carrier APIs.

من /admin/store/shipping-methods عدّل اسم ووصف/تعليمات AR/EN والتكلفة الثابتة والترتيب والأيقونة والحالة. يعرض Checkout الطرق الفعالة وتكلفتها في عملة المتجر.

الطريقة الجاهزةالسعر الابتدائينوع التكامل
PostNord79يدوي / ثابت
DHL99يدوي / ثابت
Aramex119يدوي / ثابت
FedEx149يدوي / ثابت
UPS139يدوي / ثابت
Bring89يدوي / ثابت
Budbee69يدوي / ثابت
DB Schenker109يدوي / ثابت
Early Bird59يدوي / ثابت
TNT129يدوي / ثابت

هذه أسعار مبدئية وتصبح في عملة المتجر الحالية من دون تحويل. تُستبدل بالأسعار الفعلية المتفق عليها مع شركة الشحن. التسعير لا يتغير حسب العنوان أو الوزن؛ وزن المنتج ليس مستخدماً في هذا المسار.

الشحن المجاني

فعّله وحدد الحد الأدنى، وهل يحسب قبل الخصم أو بعده، واكتب الرسالة AR/EN باستخدام {amount} لعرض المبلغ المتبقي.

لا توجد Carrier APIs: لا أسعار لحظية، لا شراء شحنة، لا بوليصة ناقل رسمية، ولا تتبع آلي. أسماء الشركات مجرد طرق يدوية مُعدّة مسبقاً، وأي تعاقد أو حجز شحنة يتم خارج متجر.

At /admin/store/shipping-methods, edit AR/EN name and description/instructions, flat cost, sort order, icon, and enabled state. Checkout displays enabled methods and their cost in the store currency.

Prepared methodInitial priceIntegration type
PostNord79Manual / flat
DHL99Manual / flat
Aramex119Manual / flat
FedEx149Manual / flat
UPS139Manual / flat
Bring89Manual / flat
Budbee69Manual / flat
DB Schenker109Manual / flat
Early Bird59Manual / flat
TNT129Manual / flat

These are initial rates in the current store currency, without conversion. Replace them with the actual rates agreed with the carrier. Pricing does not vary by address or weight; product weight is not used by this path.

Free shipping

Enable it, set the minimum, decide whether the threshold is before or after discounts, and write AR/EN messages using {amount} for the remaining amount.

No carrier APIs: there are no live rates, shipment purchases, official carrier labels, or automatic tracking. Carrier names are preconfigured manual methods only; booking happens outside Matjar.
18

الطلبات والفواتيرOrders & invoices

من الطلب الجديد حتى التسليم، مع القيود المحاسبية.From new order to delivery, with accounting safeguards.

صفحة /admin/store/orders توفر البحث والفلاتر والتبويبات، بيانات العميل والعنوان، عناصر الطلب وخياراتها وSKU، الإجماليات والدفع والشحن، سجل الأحداث، الفاتورة، الملاحظات والإشعارات.

الحالات

المجموعةالحالات
الطلبnew, pending_payment, paid, processing, ready_to_ship, shipped, in_transit, delivered, cancelled, returned, refunded
الدفعpending, paid, failed, refunded
الشحنpending, ready_to_ship, shipped, in_transit, delivered
جديددفع/تأكيدتجهيزجاهز للشحنتم الشحنفي الطريقتم التسليم

إجراءات يومية

  • تصفية المدفوع وغير المدفوع
  • نسخ العنوان والهاتف والبريد
  • تعليم جاهز للشحن
  • إدخال التتبع وإرسال الإشعار
  • طباعة ليبل مفرد أو جماعي
  • عرض/تنزيل فاتورة HTML
  • إعادة إرسال رابط الفاتورة
  • مراجعة سجل الأحداث

الإجراءات الجماعية تشمل Mark as paid وReady to ship وMark sent without tracking وطباعة الليبلات. لا تستخدم الحذف كمسار تشغيلي؛ الإلغاء والاسترداد يحافظان على السجل.

حالات نهائية وقيود: cancelled وrefunded نهائيتان؛ returned يمكن أن يصبح refunded؛ وdelivered لا يعود إلى حالة تنفيذ سابقة لكنه قد ينتقل إلى returned أو refunded. الدفع المدفوع لا يعود Pending/Failed، والطلب المشحون لا يُفشل دفعه. الفشل/الإلغاء/الاسترداد يحرر المخزون غير المنفذ بطريقة تمنع التكرار.

الفاتورة

الفاتورة ثنائية اللغة وتعرض العميل والعنوان والدفع والمرجع والمنتجات والخيارات وSKU والشحن والضريبة والحالات. زر التنزيل يعطي ملف HTML للطباعة من المتصفح، وليس PDF مولداً.

/admin/store/orders provides search, filters, tabs, customer/address details, line items with options and SKU, totals, payment, shipping, event history, invoice, notes, and notifications.

Statuses

GroupStates
Ordernew, pending_payment, paid, processing, ready_to_ship, shipped, in_transit, delivered, cancelled, returned, refunded
Paymentpending, paid, failed, refunded
Shippingpending, ready_to_ship, shipped, in_transit, delivered
NewPay/confirmProcessingReadyShippedIn transitDelivered

Daily actions

  • Filter paid and unpaid
  • Copy address, phone, and email
  • Mark ready to ship
  • Add tracking and notify
  • Print single or bulk labels
  • View/download HTML invoice
  • Resend invoice link
  • Review event history

Bulk actions include Mark as paid, Ready to ship, Mark sent without tracking, and label printing. Do not use deletion as a normal workflow; cancellation and refund preserve the record.

Final states and constraints: cancelled and refunded are terminal; returned may become refunded; delivered cannot move back to an earlier fulfillment state but may become returned or refunded. Paid cannot return to Pending/Failed, and shipped orders cannot have payment failed. Failure/cancellation/refund releases unfulfilled stock idempotently.

Invoice

The bilingual invoice includes customer, address, payment/reference, products, options, SKU, shipping, tax, and states. Download returns an HTML file for browser printing, not a generated PDF.

19

طباعة الليبل وإرسال المنتج وتتبّعهPrint labels, ship, and track

مسار التنفيذ اليدوي السريع والواضح.A fast, clear manual fulfillment workflow.

راجع الطلب والدفع

تأكد من العنوان والمنتج والخيارات والكمية، ومن أن الدفع Paid أو أن الطريقة COD.

جهّز العبوة

غيّر الحالة إلى Ready to ship، اطبع الفاتورة/قائمة العناصر عند الحاجة، وافحص المنتج.

احجز الشحنة خارج متجر

تُستخدم بوابة شركة الشحن أو الحساب التعاقدي للحصول على بوليصة الناقل الفعلية ورقم التتبع.

اطبع الليبل المحلي

من /admin/store/orders/label اطبع ليبل 100×150mm، أو حدد حتى 80 طلباً واطبع جماعياً.

أدخل رقم ورابط التتبع

من إجراء Ship أدخل الرقم والرابط HTTP/HTTPS، ثم علّم Shipped. يمكن الشحن بلا تتبع عند الضرورة.

أرسل الإشعار وراقب

يرسل النظام إشعاراً داخلياً/بريداً عند تهيئة SMTP. حدّث إلى In transit ثم Delivered حسب معلومات الناقل.

ما هو الليبل المحلي؟ ورقة General Parcel فيها المرسل والمستلم والطلب وSKU/الكمية وCode39 من رقم التتبع أو الطلب. ليست بوليصة صادرة من PostNord/DHL وغيرها، ولا تتضمن Routing barcode أو دفع شحنة.

يمكن تعديل التتبع أو التراجع عن Shipped قبل الحالة النهائية؛ عند التراجع يختفي رابط التتبع من حساب العميل حتى إضافته مجدداً.

Review order and payment

Confirm address, product, options, quantity, and that payment is Paid or the method is COD.

Prepare the parcel

Move to Ready to ship, print the invoice/pick details if needed, and inspect the item.

Book outside Matjar

Use the carrier portal or contracted account to obtain the real carrier label and tracking number.

Print the local label

Print a 100×150mm label from /admin/store/orders/label, or select up to 80 orders for bulk printing.

Enter tracking number and URL

In Ship, enter the number and HTTP/HTTPS URL, then mark Shipped. Shipping without tracking is also possible.

Notify and monitor

Matjar sends internal/email notice when SMTP is configured. Move to In transit and Delivered using carrier information.

What is the local label? A General Parcel sheet with sender, recipient, order, SKU/quantity, and Code39 from the tracking/order number. It is not issued by PostNord/DHL/etc., has no carrier routing barcode, and does not purchase postage.

Tracking may be edited or Shipped undone before a final state; undoing temporarily hides the customer tracking link until it is added again.

20

المرتجعات والاسترداداتReturns & refunds

طلب العميل، الاستلام، الفحص، إعادة المخزون ورد المبلغ.Customer request, receipt, inspection, restocking, and refund.

الإعداد الأولي

  1. من /admin/store/settings فعّل المرتجعات وحدد النافذة بالأيام؛ الافتراضي 14 يوماً.
  2. من /admin/store/return-instructions أدخل العنوان AR/EN، المستلم، عنوان الإرسال، شركة مقترحة، البريد، الهاتف، التعليمات وملاحظة التغليف.
  3. راجع صفحة سياسة الإرجاع كي تتفق مع التنفيذ والقانون المحلي.

مسار الطلب

تم التسليمطلب إرجاعالعميل يشحناستلام المتجرفحص العناصراسترداد/رفض
المرحلةما يحدثالقيود
طلب العميليحدد المنتجات والكميات والسبب والملاحظة ويرفع صورة واحدة على الأقل.لطلب Delivered داخل النافذة؛ حتى 10 صور، JPG/PNG/WebP، 5MB للصورة.
إرسال العميليدخل شركة الشحن ورقم التتبع إلزامياً ورابطاً اختيارياً.الحالة awaiting_store_receipt؛ الشحن يُحجز ويدفع خارج النظام.
استلام المتجرالإدارة تؤكد الاستلام ثم تفحص كل عنصر.لا يمكن إنهاء الفحص قبل تأكيد الاستلام.
قرار العنصرمقبول/مرفوض مع ملاحظة وسبب رفض، وللمقبول Restock أو Damaged/No restock.إعادة المخزون تعود لنفس المنتج/المتغير مرة واحدة فقط.
رد المبلغStripe آلي عند توفر المرجع والمفتاح؛ غيره تسجيل يدوي.يدعم جزئياً ويمنع تجاوز المبلغ المتبقي والتكرار.

أسباب العميل: تالف، منتج مختلف، عيب مصنع، غير مناسب، أخرى. الصور خاصة لا يفتحها إلا المالك أو مدير الطلبات. يمكن للعميل الإلغاء قبل استلام المتجر وقبل بدء الاسترداد.

تكلفة وقيمة الإرجاع: تُحتسب قيمة المنتجات المقبولة فقط من دون إضافة رسوم الشحن الأصلية تلقائياً. تُحدد تكلفة إرسال الإرجاع وفق سياسة المتجر والأنظمة المحلية.
ليبل المرتجع: صفحة HTML/A4 محلية تعرض المرسل والمستلم والعناصر ورقم المرتجع، ولا تحتوي باركود ولا تشتري شحنة ناقل.

Initial configuration

  1. At /admin/store/settings, enable returns and set the day window; default is 14 days.
  2. At /admin/store/return-instructions, enter AR/EN title, recipient, address, suggested carrier, email, phone, instructions, and packing note.
  3. Review the published return policy so it matches implementation and local law.

Return flow

DeliveredReturn requestCustomer shipsStore receivesInspectRefund/reject
StageWhat happensConstraints
Customer requestSelects items, quantities, reason, note, and uploads at least one photo.Delivered order within window; up to 10 JPG/PNG/WebP images, 5MB each.
Customer shipmentEnters required carrier and tracking number, with optional URL.Moves to awaiting_store_receipt; postage is booked/paid externally.
Store receiptAdministration confirms receipt and inspects each line.Review cannot be finalized before receipt confirmation.
Item decisionApprove/reject with note and rejection reason; approved lines get Restock or Damaged/No restock.Restock returns once to the same product/variant source.
RefundAutomated for Stripe with key/reference; otherwise recorded manually.Partial refunds are supported; over-refund and duplicate are blocked.

Customer reasons are damaged, wrong item, manufacturing defect, unsuitable, or other. Photos are private to the owner and order managers. The customer may cancel before store receipt and refund processing.

Return cost and value: accepted product value is calculated without automatically adding original shipping. Return postage follows the store policy and applicable local regulations.
Return label: a local HTML/A4 page showing sender, recipient, items, and return number. It has no barcode and does not purchase carrier postage.
21

الضرائب وVATTaxes & VAT

النسبة الافتراضية، قواعد الدولة، الأسعار والشحن.Default rate, country rules, catalog prices, and shipping.

افتح /admin/store/taxes واضبط تفعيل الضريبة، بلد الضريبة، نسبة VAT، نسبة Income Tax، اسم الضريبة، هل أسعار الكتالوج شاملة الضريبة، وهل الشحن خاضع للضريبة.

قواعد حسب الدولة

أدخل قاعدة في كل سطر بصيغة COUNTRY=RATE، حتى 200 قاعدة ونسبة 0–100. يقبل رمزاً أو اسماً، مثلاً:

SE=25 Germany=19 GB=20

عند عدم مطابقة بلد العميل تُستخدم النسبة الافتراضية. تعرض الصفحة معاينة، ويسجل الطلب والفاتورة معدل الضريبة والمبلغ المطبقين وقت الشراء.

ليس استشارة ضريبية: اختيار نسبة الضريبة، بلد التوريد، الإعفاءات، والفرق بين B2C/B2B مسؤولية مالك المتجر ومحاسبه. اختبر حالة شاملة وغير شاملة قبل الإطلاق.

Open /admin/store/taxes and configure tax enablement, tax country, VAT rate, income-tax rate, tax label, whether catalog prices include tax, and whether shipping is taxable.

Country-specific rules

Enter one COUNTRY=RATE rule per line, up to 200 rules with a 0–100 rate. Codes and names are accepted, for example:

SE=25 Germany=19 GB=20

When the buyer’s country has no match, the default rate applies. The page previews the calculation, and the order/invoice records the rate and amount applied at purchase time.

Not tax advice: selecting rates, place of supply, exemptions, and B2C/B2B treatment is the store owner’s and accountant’s responsibility. Test tax-inclusive and tax-exclusive cases before launch.
22

العملاء والحساباتCustomers & accounts

الملفات الشخصية والعناوين والطلبات والدعم.Profiles, addresses, orders, and support.

من /admin/store/customers اعرض ملف العميل وطلباته وإجمالي الإنفاق والتذاكر والتقييمات ونقاط الولاء. إدارة المستخدمين الأوسع في /admin/users تعرض الدور والحالة والدولة والهاتف وIP والتاريخ وتتيح التعديل والتفعيل والتعطيل والحذف وفق الصلاحية.

حساب العميل

الملف والعناوين والطلبات وتفاصيلها والفواتير والتتبع والمرتجعات والمفضلة والتفضيلات.

الطلب كضيف

تطبق حدود IP والبريد ونافذة الزمن، ويمكن تتبعه برقم الطلب مع البريد أو الهاتف المطابق.

التحقق البريدي

فعّله فقط بعد نجاح SMTP؛ روابط التحقق واستعادة كلمة المرور تعتمد على البريد.

حماية الحسابات

Rate limits وقفل محاولات الدخول وCaptcha وكلمات المرور، مع حماية المدير الأساسي.

استخدم /admin/store/track-order للبحث الإداري بالرقم أو العميل، بينما صفحة العميل العامة /track-order تطلب رقم الطلب مع بريد أو هاتف مطابق وتطبق Rate limit كي لا تكشف بيانات الطلبات.

الخصوصية: صدّر أو شارك الحد الأدنى من بيانات العميل، واقصر الوصول على من يحتاجه. لا تنسخ عناوين أو أرقام هواتف إلى قنوات غير آمنة.

At /admin/store/customers, view customer profile, orders, total spend, tickets, reviews, and loyalty points. Broader user management at /admin/users shows role, state, country, phone, IP, and dates, with permission-controlled editing, enabling, disabling, and deletion.

Customer account

Profile, addresses, orders/details, invoices, tracking, returns, wishlist, and notification preferences.

Guest checkout

Applies IP/email/time-window limits and can be tracked using order number plus matching email or phone.

Email verification

Enable only after SMTP succeeds; verification and password reset depend on email delivery.

Account protection

Rate limits, login lockout, Captcha, password rules, and primary administrator protection.

Use /admin/store/track-order for administrative lookup by order/customer. The public /track-order page requires order number plus matching email or phone and is rate-limited to prevent disclosure.

Privacy: export or share the minimum customer data and restrict access to those who need it. Do not copy addresses or phone numbers into insecure channels.
23

التسويق والولاءMarketing & loyalty

الكوبونات والعروض واللافتات والتقييمات والنشرة.Coupons, deals, banners, reviews, and newsletter.

الأداةالمسارالاستخدام الموصى
الكوبونات/admin/store/couponsأنشئ رمزاً واضحاً، خصماً وحدوداً وتواريخ، ثم اختبره مع الشحن والضريبة.
العروض السريعة/admin/store/flash-dealsحدد منتجات وفترة حقيقية؛ لا تستخدم سعراً قديماً مضللاً.
اللافتات/admin/store/bannersاستخدم صورةً ونصاً ورابطاً مناسبين للهاتف والكمبيوتر.
الولاء/admin/store/loyaltyاضبط كسب واستخدام النقاط واختبر الإلغاء والاسترداد.
التقييمات/admin/store/reviewsراجع المحتوى والخصوصية، ولا تحذف النقد المشروع لمجرد أنه سلبي.
النشرةاشتراك عام + تصدير JSONلا تتوفر صفحة لإدارة المشتركين أو إرسال الحملات؛ تُستخدم أداة إرسال خارجية.

النشرة البريدية

الاشتراك يبدأ Pending ثم رسالة تأكيد صالحة 48 ساعة. بعد التأكيد يحصل كل بريد على رابط Unsubscribe. الحدود: 8 محاولات/IP/ساعة و2/email/ساعة مع انتظار 15 ثانية. تصدير المشتركين متاح بصيغة JSON للاستخدام مع أداة إرسال خارجية، بينما لا تتوفر صفحة مدمجة لإدارة المشتركين أو إرسال الحملات. لا ترسل قبل اختبار SMTP ومراجعة موافقة المستخدم والقانون المحلي.

تناسق الخصم: اختبر الكوبون مع السعر القديم، العرض السريع، النقاط، حد الشحن المجاني والضريبة. تحقق من أن إلغاء الطلب يعيد الكوبون والنقاط كما تتوقع.
ToolRouteRecommended use
Coupons/admin/store/couponsCreate a clear code, discount, limits, and dates; test with shipping and tax.
Flash deals/admin/store/flash-dealsSelect products and a genuine period; avoid misleading comparison prices.
Banners/admin/store/bannersUse an image, copy, and valid link that work on mobile and desktop.
Loyalty/admin/store/loyaltyConfigure earning/redemption and test cancellation and refund.
Reviews/admin/store/reviewsModerate content/privacy; do not remove legitimate criticism merely for being negative.
NewsletterPublic opt-in + JSON exportSubscriber administration and campaign sending use an external tool.

Newsletter

Subscription starts Pending and uses a confirmation link valid for 48 hours. Confirmed subscribers receive an unsubscribe link. Limits are 8 attempts/IP/hour, 2/email/hour, with a 15-second wait. Subscriber export is available in JSON for use with an external sending tool; built-in subscriber administration and campaign sending are not available. Sending requires tested SMTP, confirmed consent, and compliance with local requirements.

Discount interaction: test coupons with old price, flash deal, points, free-shipping threshold, and tax. Verify cancellation restores coupons and points as expected.
24

البريد والإشعارات والقوالبEmail, notifications & templates

SMTP موثوق قبل التحقق وOTP ورسائل الطلب.Reliable SMTP before verification, OTP, and order emails.

SMTP /settings/mail

احصل على بيانات المزود

SMTP host، المنفذ، SSL/TLS/None، البريد/اسم المستخدم، كلمة المرور، واسم المرسل.

أدخل البيانات واحفظ

المنفذ 465 يستخدم SSL، و587 يستخدم TLS. نفس بريد SMTP يصبح بريد الإرسال ومستلم تنبيهات الإدارة.

احفظ وأرسل اختباراً

أدخل بريد اختبار واقرأ مرحلة الاتصال ورمز استجابة الخادم عند الفشل. التحقق من الشهادة مفعّل.

فعّل الميزات المعتمدة على البريد

بعد نجاح الاختبار فقط: تحقق البريد، OTP المدير، استعادة كلمة المرور، النشرة وإشعارات الطلبات.

عند تعديل الإعداد لاحقاً، ترك كلمة المرور فارغة يحافظ على القيمة المشفرة السابقة. لا تستخدم بريد From مختلفاً لا يسمح به مزود SMTP.

قوالب الرسائل /admin/message-templates

حرر العنوان والمحتوى AR/EN والمتغيرات، فعّل/عطّل، استعد الافتراضي، عاين واختبر. تشمل الأحداث: توثيق البريد، استعادة كلمة المرور، عضو جديد، تواصل، إنشاء/رد/إغلاق تذكرة، شحن الطلب، طلب مدفوع للمدير، وإعلان إداري.

الإرسال الجماعي يدعم الأعضاء والمدراء والجميع عبر القناة الداخلية أو البريد، مع سجل تسليم وأخطاء. أرسل عينة صغيرة أولاً ولا تستخدمه دون موافقة المستلمين.

القنوات الفعلية: الإشعار الداخلي والبريد فقط. SMS وWhatsApp معطلان قسراً حتى تركيب موصل مزود حقيقي؛ لا تعتمد عليهما.

SMTP /settings/mail

Obtain provider credentials

SMTP host, port, SSL/TLS/None, mailbox/username, password, and sender name.

Enter and save

Port 465 uses SSL; 587 uses TLS. The SMTP mailbox becomes the sender address and recipient for administrator alerts.

Save and send a test

Enter a test recipient and inspect connection stage, code, and server response if it fails. Certificate validation is enabled.

Enable dependent features

Only after the test succeeds: email verification, administrator OTP, password reset, newsletter, and order notices.

On later edits, leaving the password blank preserves its previous encrypted value. The From address must be permitted by the SMTP provider.

Message templates /admin/message-templates

Edit AR/EN subject/body and variables, enable/disable, restore defaults, preview, and test. Events include verification, password reset, new member, contact, ticket creation/reply/close, order shipment, paid order alert to admin, and admin announcement.

Broadcast supports members, administrators, or everyone through internal/email delivery with delivery/error logs. Start with a small sample and do not send without recipient consent.

Working channels: internal notification and email only. SMS and WhatsApp are forcibly disabled until a real provider connector is installed; do not rely on them.
25

الصفحات والمحتوى والمنشئ المرئيPages, content & visual builder

صفحات ثنائية، قوالب، مدونة، FAQ وقاعدة معرفة.Bilingual pages, templates, blog, FAQ, and knowledge base.

الصفحات /admin/pages

أدخل الاسم والوصف وHTML الاحتياطي AR/EN، slug/path، الأيقونة، الحالة، الجمهور (زائر/عضو/إدارة)، الصفحة الأب، الترتيب وتصنيفات القائمة. يمكن السحب والإفلات والمعاينة والحذف. لكل صفحة حقول SEO مستقلة.

المنشئ المرئي /admin/visual-page-builder

سحب وإفلات، معاينة مباشرة Desktop/Mobile، مكتبة عناصر محفوظة وصور آمنة حتى 5MB. الحاويات تشمل Structure وHero وRich content وFeature cards وImage+text وStats وTestimonials وFAQ وHomepage blocks وContact form وCTA. الويدجات تشمل Heading/Text/Button/Image/Icon/List/Stat/Divider/Spacer/Nested structure/Safe HTML.

قوالب المشاريع /admin/project-templates

القوالب النظامية: Store landing وSupport portal وService overview. يمكن إنشاء قالب AR/EN مخصص وتطبيقه لإنشاء صفحة Public أو Members. القوالب النظامية للقراءة فقط ولا يمكن حذفها.

المدونة

من /admin/blog أنشئ عنواناً وslug وتصنيفاً وحالة Draft/Published/Scheduled/Archived وتاريخاً وملخصاً ومحتوى ووسوماً AR/EN وصورة غلاف وFeatured. التعليقات Pending افتراضياً وتدار بالموافقة/الرفض/الحذف. Blog supervisor يدير المدونة دون إدارة كاملة.

قاعدة المعرفة وFAQ

/admin/knowledge-base يدير تصنيفات ومقالات AR/EN مع الجمهور والوسوم والتمييز والترتيب والبحث والمشاهدات والتقييم. /admin/faq يدير تصنيفات وأسئلة/إجابات وجمهوراً وحالة وترتيباً.

صفحات المعلومات: /general-information يجمع FAQ وسياسة الشحن والإرجاع ومن نحن والرؤية ولماذا نحن والشروط والخصوصية والكوكيز من صفحات الإدارة، مع محتوى احتياطي عند الفراغ.

Pages /admin/pages

Enter AR/EN title, description, and fallback HTML, slug/path, icon, state, audience (guest/member/admin), parent, order, and menu categories. Drag/drop ordering, preview, and delete are available. Each page has independent SEO fields.

Visual builder /admin/visual-page-builder

Drag/drop, live Desktop/Mobile preview, saved element library, and safe image uploads up to 5MB. Containers include Structure, Hero, Rich content, Feature cards, Image+text, Stats, Testimonials, FAQ, Homepage blocks, Contact form, and CTA. Widgets include Heading/Text/Button/Image/Icon/List/Stat/Divider/Spacer/Nested structure/Safe HTML.

Project templates /admin/project-templates

System templates are Store landing, Support portal, and Service overview. Create custom AR/EN templates and apply them as Public or Members pages. System templates are read-only and cannot be deleted.

Blog

At /admin/blog, set title, slug, category, Draft/Published/Scheduled/Archived state, publication date, AR/EN excerpt, content, tags, cover image, and Featured. Comments start Pending and can be approved/rejected/deleted. Blog supervisors manage the blog without full administration.

Knowledge base & FAQ

/admin/knowledge-base manages AR/EN categories/articles with audience, tags, featured, order, search, views, and helpful rating. /admin/faq manages categories, AR/EN questions/answers, audience, state, and order.

Information hub: /general-information combines FAQ, shipping/return policies, About, Vision, Why us, Terms, Privacy, and Cookies from managed pages, with fallback content when empty.
26

الدعم والتواصل والنماذجSupport, contact & forms

قنوات الدعم والتواصل والحقول المخصصة.Support and contact channels with custom fields.

دعم عملاء المتجر /support و/admin/store/support

يسجّل العميل الدخول ثم يفتح تذكرة مرتبطة بطلب أو من دونه، ويختار Low/Normal/High/Urgent ويضيف رسالة ومرفق JPG/PNG/GIF/WebP/PDF. يتابع المحادثة من حسابه. الإدارة تستخدم Open/Pending customer/Closed، وتعيّن الموظف وموعد SLA، وترد أو تستخدم رداً جاهزاً ثنائي اللغة. المرفقات خاصة للعميل صاحب التذكرة ومدير العملاء.

مركز التذاكر العام /admin/tickets

يوفر مركز التذاكر الإداري أقساماً للمبيعات والدعم المدفوع والواجهة والخوادم والمالية والدعم التقني، مع أولويات وحالات وأسباب إغلاق ومرفقات. تظهر للعملاء قناة دعم المتجر عبر /support، بينما يبقى مركز التذاكر العام مخصصاً للإدارة ولا يملك واجهة عميل عامة مستقلة.

التواصل /contact

الاسم والبريد والموضوع والرسالة مطلوبة، والهاتف اختياري، مع Captcha/Honeypot/Rate limit وحقول مخصصة. تحفظ الرسالة ويصل تنبيه للمدير. /admin/contact-messages للعرض والحذف؛ لا يوجد زر رد مدمج، فالرد من البريد/القناة الخارجية.

النماذج والحقول

من /admin/forms أنشئ نموذجاً عاماً أو للأعضاء أو الإدارة، رسالة نجاح وتنبيه مدير وبريد استلام، ثم راقب New/Reviewed/Archived. من /admin/custom-fields أضف text, email, phone, number, date, url, textarea, select, radio, checkbox, file واربطه بالعضو أو التذكرة أو التواصل أو نموذج.

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

Store customer support /support and /admin/store/support

A signed-in customer opens a ticket with or without a related order, selects Low/Normal/High/Urgent, and adds a message plus JPG/PNG/GIF/WebP/PDF attachment. The conversation remains in the account. Administration uses Open/Pending customer/Closed, staff assignment, SLA due dates, replies, and bilingual canned responses. Attachments are private to the ticket owner and customer managers.

General ticket center /admin/tickets

The administrative ticket center provides departments for sales, paid support, storefront, server requests, finance, and technical support, with priorities, states, closing reasons, and attachments. Customers access store support through /support; the general ticket center remains administration-only and has no separate public customer interface.

Contact /contact

Name, email, subject, and message are required; phone is optional, with Captcha/Honeypot/Rate limit and custom fields. Messages are stored and administrators are alerted. /admin/contact-messages is used to view/delete them; there is no built-in reply button, so reply through email or another channel.

Forms & fields

At /admin/forms, create guest/member/admin forms, success message, administrator notification and recipient email, then manage New/Reviewed/Archived. At /admin/custom-fields, add text, email, phone, number, date, url, textarea, select, radio, checkbox, or file and attach it to profile, ticket, contact, or form.

Attachments are sensitive: do not request passports or payment data without need and a protection policy. Test access control and ensure private files cannot be opened by a public URL.
27

SEO وتسجيل الدخول الاجتماعيSEO & social sign-in

العناوين والوصف والفهرسة والمشاركة ومزودات OAuth.Titles, descriptions, indexing, sharing, and OAuth providers.

SEO العام /admin/seo

  • تفعيل SEO
  • عنوان ووصف افتراضي AR/EN
  • كلمات مفتاحية افتراضية
  • صورة Open Graph
  • index/follow الافتراضي
  • sitemap.xml
  • robots.txt مخصص
  • توليد بيانات الصفحات

حقول الصفحة تشمل meta title/description/keywords AR/EN، Open Graph، canonical، robots، schema JSON وصورة المشاركة. المخرجات تتضمن canonical وOpen Graph/Twitter وJSON-LD بعد التحقق.

قواعد كتابة سريعة

  • اجعل عنوان الصفحة فريداً ومباشراً؛ لا تكرر اسم المتجر أكثر من مرة.
  • اكتب وصفاً حقيقياً للصفحة لا قائمة كلمات.
  • استخدم Canonical عند وجود مسارات متشابهة.
  • لا تجعل صفحات الحساب وCheckout أو نتائج البحث صفحات هبوط مفهرسة.
  • اختبر صورة المشاركة والرابط النهائي بعد تفعيل HTTPS.

تسجيل الدخول الاجتماعي /settings/social-login

أدخل Client ID/Secret وRedirect URI لكل مزود ظاهر في الصفحة، وأنشئ نفس URI في لوحة المطور للمزود. احفظ الأسرار على الخادم فقط، واختبر ربط حساب جديد وحساب ببريد موجود وتسجيل الخروج. توفر المزودات يعتمد على ما يظهر في هذا التثبيت وإعداد التطبيق الخارجي.

لا تخلط الروابط الاجتماعية مع OAuth: روابط Facebook/Instagram في الإعدادات العامة تعرض حساباتك فقط، ولا تفعّل تسجيل الدخول.

Global SEO /admin/seo

  • SEO enabled
  • Default AR/EN title and description
  • Default keywords
  • Open Graph image
  • Default index/follow
  • sitemap.xml
  • Custom robots.txt
  • Generate page metadata

Page fields include AR/EN meta title/description/keywords, Open Graph, canonical, robots, schema JSON, and share image. Output includes canonical, Open Graph/Twitter, and validated JSON-LD.

Quick writing rules

  • Make each page title unique and direct; do not repeat the store name.
  • Write an honest page summary rather than a keyword list.
  • Use canonical for substantially similar paths.
  • Do not treat account, checkout, or search-result pages as indexable landing pages.
  • Test the final share image and URL after HTTPS is enabled.

Social sign-in /settings/social-login

Enter Client ID/Secret and Redirect URI for each provider shown on the page, and register that exact URI in the provider console. Keep secrets server-side, and test a new account, an existing-email account, and logout. Provider availability depends on this installation and the external app.

Social links are not OAuth: Facebook/Instagram URLs in general settings display the configured profile links only; they do not enable sign-in.
28

التقارير والسجلات التشغيليةReports & operational records

ماذا تراجع يومياً وأسبوعياً وشهرياً.What to review daily, weekly, and monthly.

من /admin/store/reports راقب المبيعات والطلبات والعملاء والمنتجات ضمن الفلاتر المتاحة، ومن صفحات المخزون والمعاملات والمرتجعات استخدم CSV للتحليل والمحاسبة.

الدوريةالمراجعةالإجراء
يومياًطلبات مدفوعة بانتظار الشحن، فشل الدفع، منخفض المخزون، تذاكر SLA، Webhooksنفّذ الطلبات وعالج الاستثناءات فوراً.
أسبوعياًأفضل المنتجات، المرتجعات، الكوبونات، أخطاء البريد، تقييمات Pendingصحح المحتوى والمخزون والحملات.
شهرياًالإيراد والضرائب والاستردادات وتكلفة المخزون والعملاء المتكررينطابق Stripe/البنك/الفواتير مع المحاسبة.

سجلات منفصلة

  • /admin/store/payment-transactions: سجل دفعات واستردادات غير قابل للحذف.
  • /admin/store/webhooks: أحداث المزود، الحالة، التكرار والخطأ.
  • سجل تسليم الرسائل: القناة والمستلم والحالة والخطأ.
  • /admin/error-logs: أخطاء PHP والتشخيص والحل.
لا يتوفر Audit Log عام مستقل. سجلات الطلب والدفع وWebhook والرسائل والأخطاء متاحة ضمن وظائفها، لكنها لا تشكل سجلاً موحداً لكل إجراء إداري.

At /admin/store/reports, review sales, orders, customers, and products with available filters; use inventory, transaction, and return CSV exports for analysis and accounting.

FrequencyReviewAction
DailyPaid awaiting shipment, payment failures, low stock, SLA tickets, webhooksFulfill and resolve exceptions promptly.
WeeklyTop products, returns, coupons, email errors, pending reviewsCorrect content, inventory, and campaigns.
MonthlyRevenue, tax, refunds, inventory cost, repeat customersReconcile Stripe/bank/invoices with accounting.

Separate records

  • /admin/store/payment-transactions: non-deletable payment/refund ledger.
  • /admin/store/webhooks: provider events, state, duplicates, and errors.
  • Message delivery log: channel, recipient, state, and error.
  • /admin/error-logs: PHP errors, diagnostics, and resolution.
A standalone global Audit Log is not available. Order, payment, webhook, message, and error histories are available within their respective functions, but do not form a unified record of every administrative action.
29

الأدوار والصلاحياتRoles & permissions

امنح أقل وصول لازم لكل شخص.Give each person only the access they need.

الأدوار النظامية

AdministratorStore managerSupport agentContent editorBlog supervisorMember

من /admin/roles أنشئ دوراً مخصصاً باسم ووصف AR/EN وslug وترتيب وحالة، ثم حدد الصلاحيات الدقيقة. دور Administrator يملك كل الصلاحيات ولا يُحذف، والدور المرتبط بمستخدم لا يحذف حتى تنقل مستخدميه.

مدراء المتجر /admin/store/admins

يحوّل المدير الأساسي مستخدماً مسجلاً إلى Store manager محدود ثم يمنحه مجموعات Products أو Orders أو Customers أو Marketing أو Settings أو Reports. اختبر الحساب بعد الحفظ ولا تمنح Settings لمن لا يدير مفاتيح الدفع أو سياسات المتجر.

صلاحيات محجوزة: المدير الأساسي وحده يدير أدوار المدراء والمدراء الآخرين، الاستيراد الحساس، وإدارة الترخيص. لا تشارك حساب المدير الأساسي بين الموظفين.

نموذج عملي

الشخصالدور المقترحما لا يحتاجه عادة
موظف تنفيذStore manager: Orders + CustomersSettings، الترخيص، النسخ، الدفع.
كاتب محتوىContent editor / Blog supervisorالطلبات والعملاء والمفاتيح.
دعم عملاءSupport agentالمخزون والدفع وإدارة النظام.
مالك المتجرAdministratorيستخدمه فقط للإدارة الحساسة.

System roles

AdministratorStore managerSupport agentContent editorBlog supervisorMember

At /admin/roles, create a custom role with AR/EN name/description, slug, order, state, and exact permissions. Administrator has all permissions and cannot be deleted; a role assigned to users cannot be deleted until they are moved.

Store administrators /admin/store/admins

The primary administrator can turn a registered user into a limited Store manager and grant Products, Orders, Customers, Marketing, Settings, or Reports groups. Test the account after saving, and do not grant Settings to staff who should not manage payment keys or policies.

Reserved capabilities: only the primary administrator manages administrator roles/other admins, sensitive import, and licensing. Do not share the primary administrator account.

Practical model

PersonSuggested roleUsually unnecessary
Fulfillment staffStore manager: Orders + CustomersSettings, license, backups, payment.
Content writerContent editor / Blog supervisorOrders, customers, and keys.
Customer supportSupport agentInventory, payment, system administration.
Store ownerAdministratorUse only when sensitive administration is needed.
30

إعدادات الأمانSecurity settings

الدخول وCaptcha وOTP وHTTPS وIP والرفع.Sign-in, Captcha, OTP, HTTPS, IP, and uploads.

الأمان الأساسي /settings/security

  • فتح/إغلاق التسجيل
  • التحقق من البريد
  • OTP بريدي للمدير
  • Captcha حسابية
  • Google reCAPTCHA site/secret
  • أقصى محاولات الدخول
  • مدة قفل الحساب
  • حظر Exact/Wildcard/CIDR IP

لا تفعّل تحقق البريد أو OTP قبل نجاح اختبار SMTP، وإلا قد تُغلق الحسابات خارج النظام. اختبر في نافذة خاصة مع بقاء جلسة المدير الحالية مفتوحة.

الأمان المتقدم /settings/advanced-security

الخياروظيفتهالتحذير
Security headersترويسات حماية فعلية للمتصفح.اختبر Stripe والوسائط بعد Custom CSP/CSS.
Force HTTPSيعيد توجيه ويفرض الاتصال الآمن.لا تفعّله قبل SSL وAPP URL صحيحين.
Admin IP allowlistيقصر الإدارة على Exact/Wildcard/CIDR.قاعدة خاطئة تعطي 403 وقد تحجب الوصول الإداري.
Trusted proxyيثق بترويسات العميل فقط من Proxy موثوق.لا تثق بأي Proxy أو X-Forwarded-For عشوائياً.
Minimum password6–128، والموصى 12+.تغيير الحد يؤثر على كلمات المرور الجديدة/المعدلة.
Upload limit/types1–1024MB وقائمة امتدادات.حد PHP/الخادم قد يكون أقل؛ لا تسمح بامتدادات تنفيذية.

إجراءات إنتاج أساسية

  • HTTPS وAPP URL صحيحان، .env غير عام، وdebug=false.
  • كلمات مرور فريدة + مدير أساسي منفصل + أقل صلاحية.
  • اختبار النسخ والاستعادة، Cron، وتحديث PHP والاستضافة.
  • عدم مشاركة مفاتيح Stripe/SMTP/الترجمة، وتدويرها عند الاشتباه.
  • مراجعة uploads والمرفقات الخاصة وسجلات الأخطاء دورياً.

Core security /settings/security

  • Registration enabled/disabled
  • Email verification
  • Administrator email OTP
  • Math Captcha
  • Google reCAPTCHA site/secret
  • Maximum login attempts
  • Lockout duration
  • Exact/Wildcard/CIDR IP blocks

Do not enable email verification or OTP before SMTP testing succeeds, or accounts may be locked out. Test in a private window while keeping the current administrator session open.

Advanced security /settings/advanced-security

OptionPurposeWarning
Security headersReal browser security headers.Test Stripe and media after custom CSP/CSS changes.
Force HTTPSRedirects and enforces secure transport.Do not enable before SSL and APP URL are correct.
Admin IP allowlistRestricts administration to Exact/Wildcard/CIDR entries.An incorrect rule returns 403 and may block administrative access.
Trusted proxyTrusts client headers only from a known proxy.Never trust arbitrary proxies or X-Forwarded-For.
Minimum password6–128; 12+ recommended.The setting affects new/changed passwords.
Upload limit/types1–1024MB and allowed extensions.PHP/server may be lower; never allow executable types.

Production essentials

  • Correct HTTPS/APP URL, private .env, and debug=false.
  • Unique passwords, separate primary admin, least privilege.
  • Test backups/restore, Cron, and keep PHP/hosting patched.
  • Do not share Stripe/SMTP/translation keys; rotate on suspicion.
  • Review uploads, private attachments, and error logs regularly.
31

النسخ الاحتياطي والاستعادةBackup & restore

ما يدخل في الحزمة، وما يمكن استعادته من الويب.What packages contain and what web restore can recover.

إنشاء نسخة /backup-wizard

الخيارالمحتوىملاحظات
SQLقاعدة البيانات الكاملةالعنصر الأهم للطلبات والمنتجات والإعدادات.
JSONإعدادات وصفحات وسجلات ومستخدمون ومحتوى مختارللنقل المنظم، وليس بديلاً كاملاً عن SQL.
Uploadsالصور والملفات العامة المرفوعةالمرفقات الخاصة الحساسة مستبعدة.
ملفات التطبيقملفات التطبيق بعد الاستثناءاتيتطلب كلمة مرور المدير؛ يستبعد vendor/node_modules/.git/cache/logs/exports/backups.

.env مستبعد دائماً، وكذلك أدلة الدعم/الإرجاع الخاصة. الحزمة تتضمن backup-info.json وversion.json وتوقيع سلامة خاص بالتثبيت. إن غاب ZipArchive يمكن إنشاء نسخة DB فقط بصيغة .sql.txt.

النسخ التلقائي

فعّلها وحدد كل 1–8760 ساعة، والاحتفاظ بآخر 1–100 نسخة (الافتراضي 7)، واختر SQL/JSON/uploads/files. «حفظ وتشغيل الآن» يختبرها مباشرة. يحتاج التنفيذ الموثوق Cron.

الاستعادة الآمنة

  1. اجعل الموقع في صيانة، أنشئ نسخة خارجية، وتحقق من إصدار الحزمة.
  2. الاستعادة عبر الويب معطلة افتراضياً. افتحها مؤقتاً فقط بـMATJAR_BACKUP_RESTORE_ENABLED=true ثم أعدها false.
  3. المدير الأساسي يعيد المصادقة ويكتب RESTORE/استعادة. ينشئ النظام Safety Backup ويتحقق من توقيع حزمة Matjar.
  4. واجهة الويب تستعيد uploads فقط. DB/JSON وملفات التطبيق و.env لا تُستعاد من الويب.
  5. استعد SQL يدوياً على الخادم في نافذة صيانة مضبوطة، ثم افحص الصحة وسجّل الدخول واختبر طلباً.
اختبر قبل الكارثة: النسخة التي لم يُختبر تنزيلها وفتحها واستعادتها ليست خطة استعادة. خزّن نسخة مشفرة خارج نفس الخادم.

JSON Import/Export /admin/import-export

يدعم مجموعات الإعدادات/الصفحات/القوالب، الدعم/المعرفة، النماذج/الحقول، بيانات المتجر، ومشتركي النشرة. استيراد حتى 20MB للمدير الأساسي مع إعادة مصادقة وبوضع Merge/Update أو Replace selected tables. لا يشمل كلمات المرور أو المستخدمين/الأدوار كنسخة كاملة، ولا ملفات الصور؛ استخدم Backup Center لذلك.

Create a backup /backup-wizard

OptionContentNotes
SQLComplete databaseThe most important component for orders, products, and settings.
JSONSelected settings, pages, logs, users, and contentStructured transfer, not a complete SQL replacement.
UploadsPublic uploaded images/filesSensitive private attachments are excluded.
Project filesApplication files after exclusionsRequires admin password; excludes vendor/node_modules/.git/cache/logs/exports/backups.

.env is always excluded, as are private support/return evidence directories. Packages contain backup-info.json, version.json, and an installation-specific integrity signature. Without ZipArchive, DB-only .sql.txt can be created.

Automatic backups

Enable, choose every 1–8760 hours, retain 1–100 packages (default 7), and select SQL/JSON/uploads/files. “Save and run now” tests immediately. Reliable execution requires Cron.

Safe restore

  1. Place the site in maintenance, create an external copy, and verify package version.
  2. Web restore is disabled by default. Open it temporarily with MATJAR_BACKUP_RESTORE_ENABLED=true, then set it back to false.
  3. The primary administrator reauthenticates and types RESTORE/استعادة. Matjar creates a safety backup and validates the signed package.
  4. Web restore restores uploads only. DB/JSON, project files, and .env are never restored from the browser.
  5. Restore SQL manually on the server in a controlled maintenance window, then run health checks, sign in, and test an order.
Test before disaster: a backup that has not been downloaded, opened, and restored is not a recovery plan. Keep an encrypted copy off the same server.

JSON Import/Export /admin/import-export

Supports settings/pages/templates, support/knowledge, forms/fields, store data, and newsletter subscribers. Import is up to 20MB for the reauthenticated primary administrator in Merge/Update or Replace selected tables mode. It excludes passwords and full user/role backup and does not include image files; use Backup Center for those.

32

الصيانة والترقيات والوحداتMaintenance, upgrades & modules

وضع 503، ملفات الترقية المحلية، وتفعيل الوحدات.503 mode, local upgrade manifests, and module controls.

وضع الصيانة /admin/maintenance

فعّل/عطّل، اسمح للمدراء بالتجاوز، اكتب العنوان والرسالة AR/EN، وأدخل IP مسموحاً واحداً في كل سطر بصيغة Exact/Wildcard/CIDR. استخدم معاينة الزائر قبل الحفظ. عند التفعيل تعود الواجهة العامة HTTP 503 وRetry-After: 900، مع بقاء مسارات الدخول والخروج واستعادة كلمة المرور وWebhooks متاحة.

ترقية الموقع /upgrade-wizard

ضع ملفات الترقية الرسمية على الخادم

استخدم مدير الملفات أو عملية النشر لوضع JSON داخل database/upgrades؛ المعالج يقرأ هذا المجلد فقط ولا يتضمن حقل رفع أو تنزيل تحديثاً من الإنترنت.

راجع الترتيب والتغييرات

يعرض الإصدار الحالي والملفات وعدد الترقيات المعلّقة والعنوان والملخص والتغييرات وعدد SQL/Settings.

أنشئ نسخة كاملة

المعالج ينشئ SQL تلقائياً قبل التطبيق ويتوقف إذا فشل، لكن احتفظ أيضاً بملفات/Uploads خارجية.

طبّق واختبر

ينفذ SQL ثم Settings ثم استدعاء بيانات مسموحاً به، ويسجل النتيجة ويتوقف عند أول خطأ. افحص الصحة والشراء بعده.

حالة الترقيات: يعرض المعالج «لا توجد ترقيات معلقة» عندما لا يحتوي database/upgrades على Manifest رسمي بإصدار أعلى، وتظهر الترقية تلقائياً عند توفر ملف صالح.

الوحدات /admin/modules

الوحدات الأساسية Content وMessaging وSystem لا تُعطّل. الاختيارية Knowledge وBlog وForms وSupport وFiles يمكن تشغيلها وإيقافها؛ الإيقاف يخفي القوائم ويمنع المسارات ولا يحذف البيانات.

لا ترقِّ من ملف مجهول: استخدم حزمة موثوقة لنفس المنتج/الإصدار، واقرأ التغييرات. لا تعدّل version.json يدوياً لتجاوز Upgrade Wizard.

Maintenance mode /admin/maintenance

Enable/disable, allow administrator bypass, write AR/EN title/message, and enter one Exact/Wildcard/CIDR allowed IP per line. Preview the visitor screen before saving. When enabled, the public site returns HTTP 503 and Retry-After: 900; sign-in/out, password reset, and webhooks remain available.

Site upgrade /upgrade-wizard

Place official upgrade files on the server

Use the file manager or deployment process to put JSON in database/upgrades. The wizard reads this folder only; it has no upload field and does not download updates.

Review order and changes

It shows current version, files, pending count, title, summary, changes, and SQL/Settings count.

Create a full backup

The wizard creates SQL automatically and stops if it fails, but also keep files/uploads externally.

Apply and test

It runs SQL, Settings, then an allowed data callback, records results, and stops at the first error. Run health and purchase tests afterward.

Upgrade status: the wizard shows “no pending upgrades” when database/upgrades contains no official higher-version manifest; an upgrade appears automatically when a valid file is available.

Modules /admin/modules

Core Content, Messaging, and System cannot be disabled. Optional Knowledge, Blog, Forms, Support, and Files can be toggled; disabling hides menus and blocks routes without deleting data.

Never upgrade from an unknown file: use a trusted package for the same product/release and read its changes. Do not manually edit version.json to bypass the Upgrade Wizard.
33

فحص صحة النظام وسجلات الأخطاءSystem health & error logs

تشخيص قبل الإطلاق وبعد أي تغيير.Diagnostics before launch and after every major change.

فحص الصحة /admin/system-health

النواة

الإصدار وPHP والامتدادات والعارضات والمعالجات الأساسية.

قاعدة البيانات

الاتصال والجداول والأعمدة والمسارات المتكررة والحجم والأخطاء المفتوحة.

الملفات والتخزين

.env و.htaccess وحماية uploads والكتابة والمساحة وأحجام المجلدات.

الأمان والتشغيل

HTTPS والترويسات وOTP وCaptcha وكلمات المرور وSMTP والنسخ والدفع وWebhooks.

استخدم Recheck، وRepair schema لإنشاء/إصلاح جداول وأعمدة وحذف مسارات صفحات مكررة، وCreate test log لاختبار التقاط الأخطاء. تُسجَّل المساحة المتاحة كخطأ إذا قلت عن 10%، وكتنبيه إذا قلت عن 20%.

سجلات الأخطاء /admin/error-logs

اعرض Total/Open/Critical/Resolved، وصفِّ حسب الحالة والمستوى. السجل قد يتضمن الرسالة والمصدر والمستخدم/IP والتاريخ والملف/السطر والمسار والسياق وStack trace. الإجراءات: Mark resolved، Reopen، Delete selected، Delete resolved، وCreate test log. تفريغ الكل يتطلب كتابة CLEAR أو تفريغ.

السجلات قد تحتوي بيانات حساسة: لا تنشر Stack traces أو سياق الطلب علناً. احذف الأسرار قبل إرسال مقتطف للدعم، وحل سبب الخطأ قبل تعليم السجل Resolved.

Health check /admin/system-health

Core

Version, PHP, extensions, critical renderers, and processors.

Database

Connection, tables, columns, duplicate routes, approximate size, and open errors.

Files & storage

.env, .htaccess, uploads protection, writable paths, space, and directory sizes.

Security & operations

HTTPS, headers, OTP, Captcha, passwords, SMTP, backups, payment, and webhooks.

Use Recheck, Repair schema to create/repair tables/columns and remove duplicate page routes, and Create test log to verify error capture. Disk space is an error below 10% and a warning below 20%.

Error logs /admin/error-logs

View Total/Open/Critical/Resolved and filter by state/level. Records may include message, source, user/IP, date, file/line, request path, context, and stack trace. Actions include Mark resolved, Reopen, Delete selected, Delete resolved, and Create test log. Clearing all requires CLEAR or تفريغ.

Logs may contain sensitive data: do not publish stack traces or request context. Remove secrets before sharing an excerpt with support, and fix the cause before marking Resolved.
34

حل المشكلات الشائعةCommon troubleshooting

تشخيص سريع من السبب الأقرب.Fast diagnosis starting with the likeliest cause.

ملف ZIP لا يُفتح أو تظهر End-of-central-directory signature not found
الملف ليس ZIP صالحاً أو ناقص. افحص الحجم، أعد تنزيله من الرابط الأصلي، جرّب unzip -t file.zip محلياً، ولا تحفظ صفحة تنزيل/خطأ باسم .zip. ارفع بالوضع Binary أو عبر File Manager وتحقق من الحجم بعد الرفع.
التثبيت يتوقف عند صلاحيات الكتابة
اضبط مالك PHP ومسارات storage وpublic/uploads واسمح بإنشاء .env. تحقق من Quota وopen_basedir. لا تمنح جميع ملفات التطبيق صلاحية 777؛ استخدم نموذج صلاحيات الاستضافة.
الترخيص غير فعال أو انتهى
افتح إدارة الترخيص، راجع النطاق والانتهاء، أدخل الكود فقط واضغط إعادة فحص. تحقق من HTTPS/DNS وخروج cURL إلى dapn.net ووقت الخادم. لا تضف MATJAR_LICENSE_API_SECRET؛ ليس مطلوباً. جدد أو افتح تذكرة عند انتهاء/عدم تطابق النطاق.
Stripe لا يظهر في Checkout
تأكد أنه Enabled، الوضع يطابق المفاتيح، Publishable وSecret صالحان، Test connection ناجح، العملة/الدولة تدعمان الطريقة، والمتجر HTTPS في Live. Swish يحتاج SEK، وiDEAL/Bancontact يحتاجان EUR. المحافظ تعتمد على الجهاز والنطاق.
الدفع نجح في Stripe والطلب لم يتحدث
راجع Webhook URL والـwhsec والوضع والأحداث الثلاثة، ثم صفحة Webhooks وسجل الأخطاء. تحقق أن APP URL عام وHTTPS وأن Reverse Proxy لا يغيّر الجسم. لا تعلّم الطلب يدوياً قبل مطابقة PaymentIntent والمبلغ.
PayPal مفعّل لكنه لا يظهر
تتوفر حقول إعداد PayPal، لكن Checkout adapter غير متاح. يمكن استخدام Stripe أو إحدى طرق الدفع اليدوية.
Apple Pay أو Google Pay لا يظهران
هما عرضان مؤهلان داخل Stripe card، ويعتمدان على الحساب والبلد والعملة والجهاز والمتصفح وتهيئة النطاق. سجل النطاق في Stripe وعلّم Domain verified فقط بعد نجاحه، واختبر على جهاز مدعوم.
البريد لا يصل
استخدم Save & send test، اقرأ مرحلة وكود SMTP، راجع host/port/encryption واسم المستخدم وكلمة المرور، سجل SPF/DKIM وFrom المسموح، مجلد Spam، وجدار الخادم. لا تفعّل OTP قبل نجاح الاختبار.
Cron أو النسخ التلقائي لا يعمل
شغّل الأمر يدوياً من CLI بنفس PHP والمسار الكامل، راجع JSON الناتج وسجلات الأخطاء وصلاحيات storage/app/backups وZipArchive. تأكد أن مهمة الاستضافة كل 5–15 دقيقة وليست طلب HTTP للصفحة.
ظهر 403 بعد تقييد IP أو HTTPS loop
تُراجع Admin allowlist باستخدام عنوان الطلب الفعلي وTrusted proxies. في حالة loop يجب التأكد من تمرير Proxy لاتصال HTTPS وصحة APP URL، مع حصر الثقة بالـproxy المحدد. يتيح وصول الخادم استعادة الإعداد الآمن عند تعذر الوصول الإداري.
يتعذر رفع صورة المنتج أو الملف
راجع الصيغة والحجم وحد PHP/server وحد الأمان المتقدم وfileinfo وصلاحية uploads والمساحة. لا تغيّر الامتداد فقط؛ يجب أن يطابق MIME الملف.
الترقية لا تظهر
المعالج لا يتصل بمخزن بعيد. يجب وضع Manifest JSON رسمي بإصدار أعلى داخل database/upgrades حتى يظهر ضمن الترقيات المتاحة.
ZIP fails with End-of-central-directory signature not found
The file is incomplete or not a ZIP. Compare size, download again from the original link, run unzip -t file.zip locally, and do not save a download/error page as .zip. Upload in binary mode/File Manager and compare size afterward.
Installation stops on writable paths
Set the PHP process owner and permissions for storage, public/uploads, and .env creation. Check quota/open_basedir. Do not grant 777 permissions to all application files; use the hosting permission model.
License inactive or expired
Open License Management, review domain/expiry, enter only the license code, and recheck. Verify HTTPS/DNS, outbound cURL to dapn.net, and server time. Do not add MATJAR_LICENSE_API_SECRET; it is not required. Renew or contact support for expiry/domain mismatch.
Stripe is missing at checkout
Confirm Enabled, matching mode/keys, valid publishable+secret, successful connection test, eligible currency/country, and HTTPS in Live. Swish needs SEK; iDEAL/Bancontact need EUR. Wallets depend on device and domain.
Stripe succeeded but the order did not update
Check webhook URL, whsec, mode, and three required events, then Webhooks and error logs. APP URL must be public HTTPS and a proxy must not alter the request body. Do not mark paid manually before matching PaymentIntent and amount.
PayPal is enabled but absent
PayPal configuration fields are available, but a checkout adapter is not provided. Stripe or a manual payment method can be used.
Apple Pay or Google Pay is absent
They are eligible presentations inside Stripe card and depend on account, country, currency, device, browser, and domain setup. Register the domain in Stripe, mark verified only after success, and test on a supported device.
Email does not arrive
Use Save & send test and read SMTP stage/code. Review host, port, encryption, username, password, SPF/DKIM, allowed From, spam, and firewall. Do not enable OTP before the test succeeds.
Cron or automatic backup does not run
Run the command manually in CLI with the same PHP and absolute path, review JSON/error logs, permissions for storage/app/backups, and ZipArchive. Schedule every 5–15 minutes as CLI, not an HTTP page request.
403 after IP restriction or HTTPS redirect loop
Review the Admin allowlist using the actual request IP and trusted proxies. For loops, ensure the proxy communicates HTTPS correctly and APP URL is correct; trust only the specified proxy. Server access allows safe settings recovery when administrative access is unavailable.
Product image or file will not upload
Check format, size, PHP/server limits, advanced-security limit, fileinfo, uploads permissions, and disk space. Renaming an extension is not enough; MIME must match.
An upgrade does not appear
The wizard does not contact a remote store. Place an official higher-version JSON manifest in database/upgrades for it to appear among the available upgrades.
35

قائمة فحص ما قبل الإطلاقPre-launch checklist

لا تنشر قبل إكمال هذه الدورة.Do not launch until this cycle is complete.

الخادم والنطاق

PHP/امتدادات، HTTPS، APP URL، Timezone، صلاحيات، Cron، حماية .env وOptions -Indexes.

الهوية والقانون

الاسم والوصف والشعارات والتواصل، الخصوصية والشروط والكوكيز والشحن والمرتجعات والضريبة.

الكتالوج

التصنيفات والروابط، 10 منتجات عينة على الأقل، خيارات ومتغيرات وصور وحقوقها وأسعار وتكلفة ومخزون.

الدفع

Stripe Test ثم Live/Webhook، أو تعليمات يدوية صحيحة، مع منع PayPal الوهمي وتأكيد العملة.

الشحن

الطرق الفعالة فقط، الأسعار الفعلية، حد مجاني، عنوان المرسل، تجربة الليبل، التتبع والإشعار.

العمليات

طلب مدفوع، COD، فشل/انتهاء، مخزون، كوبون، فاتورة، شحن، تتبع، إرجاع، استرداد جزئي.

التواصل

SMTP test، تحقق البريد/OTP، قوالب AR/EN، تذكرة، نموذج تواصل، Newsletter confirm/unsubscribe.

الأمان والتعافي

أقل صلاحية، كلمة 12+، Captcha/قفل، فحص صحة أخضر، نسخة كاملة خارجية واختبار استعادة uploads.

اختبار شراء إلزامي

  1. أنشئ عميلاً جديداً من الهاتف.
  2. اختر منتجاً بمتغير ومخزون محدود، وأضف كوبوناً إن وجد.
  3. اختر الشحن وأكمل Stripe Test أو طريقة يدوية.
  4. تحقق من الطلب والمعاملة والمخزون والفاتورة والبريد.
  5. جهز الطلب واطبع الليبل وأدخل التتبع وافتحه من حساب العميل.
  6. سلّم الطلب وأنشئ إرجاعاً واختبر قرار المخزون والاسترداد.
جاهز للإطلاق عندما: لا توجد أخطاء صحة حرجة، ويمكن إكمال مسار الشراء والاسترجاع فعلياً، وتصل الرسائل، والنسخة الاحتياطية محفوظة خارج الخادم.
Server & domain

PHP/extensions, HTTPS, APP URL, timezone, permissions, Cron, private .env, and Options -Indexes.

Identity & legal

Name, description, logos, contact, privacy, terms, cookies, shipping, returns, and tax.

Catalog

Categories/URLs, at least 10 sample items, options/variants, images and rights, prices, cost, and stock.

Payment

Stripe Test then Live/webhook, or correct manual instructions; no false PayPal promise; correct currency.

Shipping

Only active methods, actual rates, free threshold, sender address, label test, tracking, and notice.

Operations

Paid order, COD, failure/expiry, stock, coupon, invoice, shipping, tracking, return, partial refund.

Communication

SMTP test, verification/OTP, AR/EN templates, ticket, contact form, newsletter confirmation/unsubscribe.

Security & recovery

Least privilege, passwords of 12+ characters, Captcha/lockout, passing health checks, off-server backup, and an uploads restore test.

Mandatory purchase test

  1. Create a new customer on mobile.
  2. Select a variant with limited stock and apply a coupon if available.
  3. Choose shipping and complete Stripe Test or a manual method.
  4. Verify order, transaction, stock, invoice, and email.
  5. Fulfill, print label, enter tracking, and open it from the customer account.
  6. Deliver, create a return, and test stock decision and refund.
Ready to launch when: no critical health errors remain, purchase and return workflows work end to end, email arrives, and a backup is stored off-server.
36

مرجع سريع وحالة الميزاتQuick reference & capability status

مسارات وأوامر ومعلومات تشغيل أساسية.Key routes, commands, and operational information.

أهم المسارات

المهمةالمسارالمهمةالمسار
إعدادات الموقع/settingsإعدادات المتجر/admin/store/settings
المنتجات/admin/store/productsالتصنيفات/admin/store/categories
الدفع/admin/store/payment-gatewaysWebhook Stripe/webhooks/stripe
الشحن/admin/store/shipping-methodsالطلبات/admin/store/orders
المخزون/admin/store/inventoryالمرتجعات/admin/store/returns
SMTP/settings/mailالأمان/settings/security
النسخ/backup-wizardالترقية/upgrade-wizard
الصحة/admin/system-healthالأخطاء/admin/error-logs

الأمر المجدول

php /path/to/matjar/bin/cron.php

ملخص الدعم الفعلي للميزات

الميزةحالة الدعم
Stripe وطرقه المؤهلةآلي فعلي مع Webhook
تحويل/USDT/CODيدوي مع تأكيد الإدارة
PayPalغير متاح في Checkout
واجهات شركات الشحنغير موجودة؛ تكلفة ثابتة يدوية
ليبل شركة الشحنغير موجود؛ ليبل محلي عام فقط
تتبع ناقل مباشرغير موجود؛ رقم ورابط يدويان
فاتورة PDFغير موجودة؛ HTML للطباعة/التنزيل
مزامنة موردغير موجودة؛ URL import لمرة واحدة
محدّث بعيدغير موجود؛ ملفات Upgrade محلية
SMS/WhatsAppمعطلان بلا موصل حقيقي
استعادة DB من المتصفحمحظورة؛ uploads فقط
Audit Log عامغير موجود؛ سجلات وظيفية منفصلة
قاعدة التشغيل: أي ميزة تتعامل مع أموال أو أسرار أو شحن أو استعادة يجب اختبارها في بيئة آمنة وبحساب محدود قبل استخدامها على طلب عميل حقيقي.

Key routes

TaskRouteTaskRoute
Site settings/settingsStore settings/admin/store/settings
Products/admin/store/productsCategories/admin/store/categories
Payments/admin/store/payment-gatewaysStripe webhook/webhooks/stripe
Shipping/admin/store/shipping-methodsOrders/admin/store/orders
Inventory/admin/store/inventoryReturns/admin/store/returns
SMTP/settings/mailSecurity/settings/security
Backups/backup-wizardUpgrade/upgrade-wizard
Health/admin/system-healthErrors/admin/error-logs

Scheduled command

php /path/to/matjar/bin/cron.php

Capability support summary

CapabilitySupport status
Stripe and eligible methodsReal automation with webhook
Bank/USDT/CODManual with administrator confirmation
PayPalUnavailable at checkout
Carrier APIsAbsent; manual flat costs
Official carrier labelAbsent; generic local label only
Live carrier trackingAbsent; manual number and URL
PDF invoiceAbsent; printable/downloadable HTML
Supplier synchronizationAbsent; one-time URL import
Remote updaterAbsent; local upgrade files
SMS/WhatsAppDisabled without a real connector
Browser DB restoreBlocked; uploads only
Global Audit LogAbsent; separate functional histories
Operating rule: any capability involving money, secrets, shipping, or restoration must be tested safely with a limited account before use on a real customer order.