تطوير التجارة الإلكترونية
تطوير التجارة الإلكترونية بـ Laravel
واجهات تجارة خلفية مخصصة لأنشطة لم تعد المنصة تناسبها - مخزون لا يمكن بيعه زيادةً، وآلة حالات للطلب، وضرائب تصمد أمام تدقيق، وwebhooks دفع تصل مرتين.
أغلب الأنشطة لا ينبغي أن تبني متجرها الخاص. المنصة المستضافة أرخص من شيفرة ما دام النشاط يتسع داخلها، والنصيحة الصادقة لكتالوج من مئتي منتج بسيط أنها تتسع.
العمل أدناه يبدأ حيث تتوقف عن الاتساع - وهي تتوقف عادةً في المكتب الخلفي لا في الواجهة.
أين تنفد المنصة فعلًا
تسعير هو قاعدة لا رقم. تسعير تعاقدي لكل عميل، وشرائح كمية، وحساب تجاري بشروط مختلفة لكل مجموعة منتجات. أغلب المنصات تنمذج سعرًا وخصمًا، وكل ما بعد ذلك يصير جدول بيانات يصونه أحدهم يدويًا.
مخزون يعيش في أكثر من مكان. مستودعان، ومتجر مادي، وقناة سوق إلكتروني، ومسار شحن مباشر من مورّد. يفقد سؤال "كم نستطيع أن نبيع" إجابته الواحدة، وإجابة المنصة هي التي تبيع زيادةً.
نظام تخطيط موارد هو مصدر الحقيقة. حين يملك نظام المحاسبة السعر والمخزون، يكون المتجر تابعًا له. والمنصة التي تفترض أنها تملك تلك الحقول ستقاوم التكامل طوال عمر المشروع.
تجهيز هو سير عمل. شحنات جزئية، وطلبات مؤجلة، وخطوة تجميع، ومهلة تصنيع. الطلب الذي ليس ببساطة مدفوعًا ثم مشحونًا هو حيث تنتهي محركات سير العمل في المنصات.
الأجزاء التي نبنيها بعناية، لأن فيها يُفقد المال
مخزون لا يمكن بيعه زيادةً. قراءة مستوى المخزون ثم إنقاصه سباق، وتحت حملة تخفيضات سباق يجري مئات المرات في الثانية. الإنقاص تحديث مشروط تقرره قاعدة البيانات:
$claimed = Inventory::where('variant_id', $id)
->where('available', '>=', $qty)
->decrement('available', $qty); // 0 يعني أن غيرك أخذهوفوقه حجز بمدة انتهاء - مخزون محجوز أثناء إتمام شراء جارٍ ويُفرج عنه إن تُرك - لأن البديل إما بيع زائد وإما حجز مخزون إلى الأبد لسلال لم يكملها أحد.
الطلب آلة حالات لا عمود حالة. أي الانتقالات مشروع، وأيها لا رجعة فيه، وما الذي يُسمح لكل واحد بلمسه. عمود حالة يُكتب من أربعة متحكمات هو كيف ينتهي طلب مشحونًا ومستردًّا وما زال بانتظار الدفع.
webhooks دفع تصل مرتين أو متأخرة أو بترتيب مقلوب. كل مزوّد يرسل مكررات، وقد يصل إشعار التحصيل قبل إعادة التوجيه التي كان يُفترض أن تسبقه. الـ webhooks تُتحقَّق وتُخزَّن خامًا وتُعالَج بلا تأثر بالتكرار مقابل مرجع من المزوّد، فتكون الإعادة لا شيء بدل أن تكون تجهيزًا ثانيًا.
ضريبة تُحسَب مرة، في اللحظة الصحيحة، وتُسجَّل. النسبة التي سرت يوم الطلب جزء من الطلب، لا بحثٌ يُعاد حين يفتح أحد السجل بعد سنة. وحين تبيع عبر الحدود، يغيّر مكان التوريد وحالة تسجيل العميل الإجابة - والقاعدة التي أنتجت كل سطر يجب أن تُحفظ بجانب المبلغ، لأن ذلك ما يسأل عنه التدقيق.
المال أعداد صحيحة، دائمًا. وحدات صغرى، مع حفظ العملة وأسّها. الفاصلة العائمة في نظام تجارة تنتج دفترًا لا يتوازن ومطابقةً لا يستطيع أحد إغلاقها.
التكاملات التي تقرر المشروع
مشاريع التجارة نادرًا ما تكون نظامًا واحدًا. هي متجر، ونظام تخطيط موارد أو حزمة محاسبة، ومزوّد دفع، وشركة شحن، وأحيانًا نظام إدارة منتجات وسوق إلكتروني.
وما يجعلها تنجح هو تقرير الملكية قبل كتابة الشيفرة: أي نظام يملك رقم المخزون، وأيّها السعر، وأيّها العميل. كل كارثة تكامل استُدعينا إليها بدأت بنظامين يعتقد كلاهما أنه يملك الحقل نفسه، وحُلّت بمهام ليلية يطمس بعضها بعضًا بالتناوب.
ثم الجزء الآليّ، وهو الانضباط نفسه في أي عمل تكامل: إعادات محاولة بتباعد، وصندوق صادر كي لا يضيع شيء حين يسقط الطرف الآخر، وسجل لما أُرسل يستطيع إنسان قراءته حين يسأل عميل عن طلبه.
جانب الإدارة، وهو أغلب الاستخدام الفعلي
الواجهة تنال الانتباه والمكتب الخلفي ينال الساعات. بحث في الطلبات يعمل بمرجع جزئي، وسجل العميل كاملًا في شاشة واحدة، واسترداد بإجراء واحد لا أربعة، وتعديل مخزون يسجّل من أجراه ولماذا.
نبني هذه على لوحة إدارة لا من الصفر، لأن شاشة CRUD مفصّلة ليست موضع القيمة - ولأن من يستخدمها ثماني ساعات يوميًا يفضّل شيئًا تقليديًا على شيء بارع.
كيف يجري التعاقد
الحديث الأول عن المال لا عن الشيفرة: أين تُفقَد الطلبات اليوم، وكم يكلّف جانب الإدارة من ساعات عمل، وأي تكامل يخشاه الجميع.
من ذلك نكتب النطاق: المراحل، وقائمة التكاملات، وما سيحدث لعناوينكم الحالية، والسعر. ولا يُبنى شيء قبل توقيع تلك الوثيقة، لأن الأخطاء الباهظة في المتاجر تُرتكب في الأسبوع الأول وتُكتشف في الشهر السادس.
ثم يسير البناء في مراحل ينتهي كلٌّ منها منشورًا. وصفحة الدفع ليست أول ما نمسّه ولا آخر ما نختبره.
ماذا تتسلّم
واجهة تجارة خلفية بقواعد مكتوبة ومفروضة في مكان واحد، ونموذج طلب يستطيع شرح تاريخه، وتكاملات بمالك لكل حقل، ومجموعة اختبارات تغطي المسارات التي تحرك المال - إتمام شراء تحت ضغط مخزون متزامن، وwebhooks مكررة، واستردادات جزئية، وضرائب عند الحالات الحدية.
وإن لم تكن متأكدًا بعد من أن البناء هو الجواب الصحيح، فهو عادةً ليس كذلك، وتدقيق لما لديك الآن سيقول ذلك أسرع وأرخص من عرض.
