من الطلب إلى رقم التتبّع: ربط شركة الشحن بموقعك

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

نُشر في:

ابدأ مجاناً
مطعم الدارالمنيوالفروعتواصل
أكل بيت،
بطعم زمان.
اطلب أونلاينالمنيو
الأطباق الأشهر ٤.٩ · توصيل ٣٠ دقيقة
منسف لحم بلدي٨ د.أ
مشاوي مشكّلة١٢ د.أ
موقع تبنيه بابني بالعربي

الحدود اللي تحكم ربط الشحن

صمّم الربط على هالأرقام من البداية — أغلب الأعطال سببها تجاهل واحد منها.

10 ثوانٍ
مهلة الدالة لطلب الزائر
و25 ثانية لما تشغّلها أنت
8
نداءات خارجية بالتشغيلة
تكفي إنشاء شحنة وتحديث حالة
كل 15 دقيقة
أسرع مهمة مجدولة
و200 تشغيلة باليوم للمهمة الواحدة
5
إيميلات بالتشغيلة الواحدة
لتبليغ العميل بتغيّر الحالة

دورة حياة الشحنة داخل موقعك

من لحظة تأكيد الطلب لحد رسالة «تم التسليم».

طلب مؤكد
صف بقاعدة بيانات الموقع
دالة إنشاء شحنة
ebnii.fetch لواجهة الشركة
رقم تتبّع
يُخزَّن على صف الطلب
ويبهوك الحالة
الشركة تنادي موقعك
إيميل للعميل
تم الشحن، خرج للتوصيل، تم التسليم
الويبهوك يشتغل والموقع مغلق ومحد فاتحه — الاستقبال يصير على الخادم لا بالمتصفح.

خمس خطوات لتشغيل الشحن التلقائي

١

حدّد متى تُنشأ الشحنة بالضبط

لا تنشئ شحنة لكل سلة. حدّد حدثاً واحداً واضحاً: تأكيد الطلب، أو تأكيد الدفع، أو ضغطك أنت على زر «جهّز للشحن» من لوحة الموقع. كل شحنة تُنشأ عند شركة الشحن هي التزام حقيقي وأحياناً تكلفة، ونصف مشاكل الربط سببها إنشاء شحنات لطلبات ما اكتملت. صف الطلب عندك يحمل حالة واضحة، والدالة تشتغل عند انتقال الحالة لا قبله.

٢

احفظ مفتاح شركة الشحن

المفتاح ينحفظ بلوحة «الأسرار» أو عبر حقل الإدخال الآمن داخل المحادثة — القيمة تروح للخادم مباشرة وما تمرّ بالنموذج ولا بسجل المحادثة. الاسم بصيغة SHIPPING_API_KEY، حروف كبيرة وأرقام وشرطة سفلية حتى 40 حرفاً. أغلب شركات الشحن تعطيك مفتاحين: واحد للاختبار وواحد للإنتاج. احفظ الاثنين بأسماء مختلفة واضحة.

٣

اكتب دالة إنشاء الشحنة

الدالة تاخذ رقم الطلب، تقرأ الصف بـ ebnii.db، تقرأ المفتاح بـ ebnii.secrets.get، وتنادي واجهة الشركة بـ ebnii.fetch. رد الشركة يرجع نصاً خاماً فالدالة تحلّله وتاخذ منه رقم التتبّع ورابط البوليصة، وتحدّث صف الطلب بـ ebnii.db.update. لا تحاول تسوي أكثر من هذا بنفس التشغيلة: عندك 10 ثوانٍ فقط لطلب الزائر، وebnii.sleep أقصاها خمس ثوانٍ فالانتظار الطويل مو خيار.

٤

افتح ويبهوك الحالة

ملف الويبهوك لازم يكون باسم ينتهي بـ -webhook.js — مثلاً functions/shipping-webhook.js. هذي القاعدة أمنية: الملفات اللي تنتهي بهالصيغة فقط هي المتاحة على رابط عام، وباقي دوالك تبقى خاصة ما تنفتح من برّا. رابط الويبهوك اللي تعطيه للشركة بشكل: اسم-موقعك.ebnii.com/api/site/اسم-موقعك/hook/shipping، ويستقبل POST وGET. جوّا الدالة توصلك البايتات الخام بـ req.raw والترويسات بـ req.headers ومعاملات الرابط بـ req.query.

٥

بلّغ العميل

من داخل الدالة، ebnii.email.send توصل لأي عنوان — بعكس كود الصفحة اللي محصور ببريدك أو ببريد المستخدم المسجّل دخوله. الحد خمس رسائل بالتشغيلة الواحدة، وهذا أكثر من كافٍ لتحديث حالة. الإرسال يخصم من نفس الحصة: 500 رسالة مجانية بالشهر لكل مشروع، وسقف يومي 300 رسالة.

ويبهوك من الشركة أم مهمة مجدولة عندك

الطريقتان تشتغلان، والاختيار بينهما يعتمد على شركة الشحن مو على تفضيلك.

البندويبهوك من شركة الشحنمهمة مجدولة عندك
سرعة التحديثلحظة ما تتغيّر الحالة عندهمكل 15 دقيقة على الأسرع
الملفfunctions/shipping-webhook.js — الاسم لازم ينتهي بـ -webhookدالة عادية مسجّلة بملف functions/_jobs.json
مين يبدأ الاتصالشركة الشحن تنادي رابط موقعكموقعك يسأل واجهة الشركة كل جولة
شرط التشغيلموقع منشور — الرابط مبني على نطاق موقعكموقع منشور — والشغل المصفوف قبل النشر تنتهي صلاحيته بعد ٣ أيام
التحقق من الهويةتوقيع الشركة، وأنت تتحقق منه بنفسكما يحتاج — أنت اللي تنادي وأنت تحمل المفتاح
السقف240 نداء بالدقيقة للمشروع كله200 تشغيلة باليوم للمهمة، و8 نداءات خارجية بكل تشغيلة
عند الفشل المتكرّرالشركة تعيد المحاولة حسب سياستها هيالمهمة تتعطّل تلقائياً بعد 10 إخفاقات متتالية
عدد المهاملا حد — رابط واحد يكفيأقصى 10 مهام مجدولة للموقع الواحد
لو شركتك ما ترسل ويبهوك، المهمة المجدولة تشتغل ممتاز بشرط تسأل عن الشحنات المفتوحة فقط — لا عن كل الطلبات.

شو يشوف العميل فعلاً

التتبّع اللي يهم العميل بسيط: رقم، رابط، وثلاث رسائل. الباقي زحمة.

رقم التتبّع على صفحة طلبه

الرقم يُحفظ على صف الطلب لحظة ما ترد الشركة، والعميل يشوفه بحسابه على موقعك. تسجيل الدخول للموقع جاهز بـ cloud.auth: تسجيل وحساب واستعادة كلمة سر بدون أي إعداد.

رابط البوليصة كما ترجعه الشركة

الدوال ما تولّد ولا تحوّل ملفات — ما في إنشاء PDF ولا تحويل صيغ داخل الصندوق. الطريقة الصحيحة إنك تخزّن الرابط اللي ترجعه شركة الشحن وتعرضه، لا إنك تحاول تبني الملف بنفسك.

ثلاث رسائل لا أكثر

تم الشحن، خرج للتوصيل، تم التسليم. أي رسالة زيادة تزيد نسبة الشكاوى وتقرّبك من السقف بلا فائدة. الإرسال ضمن 500 رسالة مجانية بالشهر لكل مشروع وسقف يومي 300 رسالة.

صفحة تتبّع بالرقم للزائر غير المسجّل

الزائر يدخل رقم طلبه ويشوف الحالة بدون ما تنفتح قاعدة البيانات كلها. cloud.db فيه أربعة مستويات وصول، فتخلي حالة الشحنة قابلة للقراءة بالمعرّف وتبقي بيانات العميل مقفولة.

تنبيه لك أنت لما تعلق شحنة

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

قبل ما تربط: وين الحدود الحقيقية

الربط ممتاز لشحنة واحدة لحظة إنشائها، ومحدود لأي شيء جماعي.

يشتغل بلا مشاكل

  • شركة الشحن عندها REST API عام بمفتاح: الربط كله يتم داخل ابني بلا خادم خارجي.
  • ebnii.crypto فيه HMAC وtimingSafeEqual جاهزين للتحقق من تواقيع الويبهوك بلا مكتبات.
  • الويبهوك يستقبل والموقع مسكّر ومحد فاتحه — الاستقبال على الخادم.
  • رد الشركة يُقبل حتى 2 ميغابايت، وهذا أوسع بمراحل من رد شحنة عادي.
  • حساب سعر الشحن قبل تأكيد الطلب يتم بنداء واحد داخل مهلة العشر ثوانٍ.

احسب حسابه

  • مزوّد بدون API عام، أو يشتغل بملفات إكسل فقط: ما ينربط برمجياً.
  • تحديث كل الشحنات المفتوحة بتشغيلة وحدة مو ممكن: ebnii.db.list جوّا الدالة يوقف عند 200 صف، و8 نداءات خارجية بالتشغيلة — قسّمها بـ ebnii.jobs.enqueue بحد 10 مهام بالتشغيلة و500 باليوم.
  • طباعة البوليصة أو تحويلها لصيغة ثانية غير مدعومة داخل الدوال.
  • لو واجهة الشركة على شبكة داخلية أو عنوان محلي، النداء مرفوض — العناوين الداخلية محجوبة وكل قفزة تحويل تُفحص لحالها.
  • ebnii.sleep أقصاها خمس ثوانٍ، فما تنفع للانتظار حتى تجهز الشحنة عند مزوّد بطيء.

أسئلة شائعة

شركة الشحن عندي ما ترسل ويبهوك — شو الحل؟

مهمة مجدولة كل 15 دقيقة تسأل عن الشحنات المفتوحة فقط. المهم إنك تفلتر على الحالة لا تمرّ على كل الطلبات، لأن ebnii.db.list جوّا الدالة يوقف عند 200 صف، والتشغيلة تسمح بـ8 نداءات خارجية. لو عندك شحنات مفتوحة أكثر من هذا، وزّعها على تشغيلات بـ ebnii.jobs.enqueue بدل ما تحشرها بتشغيلة وحدة.

هل يقدر الموقع يطبع بوليصة الشحن؟

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

كيف أمنع أحداً يزوّر تحديث حالة على موقعي؟

بالتوقيع، لا بالهوية. رابط الويبهوك عام بطبيعته وهوية المستخدم داخله دائماً فارغة، فالتحقق الوحيد المعتبر هو حساب توقيع الشركة على البايتات الخام من req.raw ومقارنته بـ ebnii.crypto.timingSafeEqual. لا تقارن بعلامة المساواة ولا تعيد بناء النص قبل الحساب. وفوقها، الرابط نفسه يستفيد من سقف 240 نداءً بالدقيقة للمشروع.

كم رسالة تتبّع أقدر أرسل بالشهر؟

حصة كل مشروع 500 رسالة مجانية بالشهر، وسقف يومي 300 رسالة، وحد خمس رسائل بالتشغيلة الواحدة للدالة. بثلاث رسائل لكل شحنة، الحصة تغطي حوالي 160 شحنة بالشهر مع مساحة لرسائل الطلب والحساب. لو متجرك أكبر من هذا، قلّل لرسالتين لكل شحنة وخلّي التفاصيل بصفحة التتبّع.

أقدر أعرض سعر الشحن قبل ما يأكد العميل الطلب؟

نعم. نداء واحد من دالة سحابة لواجهة الشركة وقت اختيار المدينة، والنتيجة تظهر بالسلة خلال ثوانٍ ضمن مهلة العشر ثوانٍ. نصيحة عملية: خزّن أسعار المدن المتكرّرة بقاعدة بيانات موقعك وحدّثها بمهمة مجدولة، فتوفّر النداء لكل زائر وتخلي السلة أسرع.

أشتغل مع أكثر من شركة شحن — يشتغل؟

نعم. كل شركة تاخذ مفتاحها الخاص بالأسرار ودالتها المنفصلة، والطلب يختار الدالة حسب المدينة أو الوزن أو ما تختاره أنت. الحد مو على عدد الشركات: الحد على التشغيلة الواحدة — 8 نداءات خارجية و10 ثوانٍ لطلب الزائر.

اقرأ أيضاً

ربط أي API خارجي بموقعكاستقبال الويبهوك داخل موقعكإرسال الإيميلات من موقعكمزامنة المخزون مع نظامكالمهام المجدولة داخل الموقع

ابدأ من الشحنة الأولى

قل لابني: «لما أأكد الطلب أنشئ شحنة عند شركة الشحن واحفظ رقم التتبّع وبلّغ العميل بالإيميل» — والباقي يتكتب لك.

ابدأ مجاناً