VibeFox PostNord for OpenCart — المساعدة
المتطلبات
OpenCart: 3.0.x (تم الاختبار على 3.0.5.0) أو 4.0.2 وما بعده (تم الاختبار على 4.1.0.3).
PHP: 8.0 أو أحدث.
مفتاح PostNord API (لمنتقي نقاط الخدمة): أنشئ حسابًا مجانيًا على developer.postnord.com، وأضف تطبيقًا، ثم انسخ مفتاح API الخاص به. من دون المفتاح تعمل طريقة الشحن، لكن العملاء لا يستطيعون اختيار نقطة خدمة.
اتفاقية PostNord: لإرسال الطرود تحتاج إلى اتفاقية عميل PostNord المعتادة، مثل MyPack Collect أو MyPack Home.
مفتاح ترخيص VibeFox: يُشترى من vibefox.net. يعمل المفتاح الواحد على نطاق واحد فقط.
التثبيت
ملف التنزيل عبارة عن ملف zip واحد يحتوي على الحزم لكلا إصداري OpenCart. فكّ ضغطه على حاسوبك. ويحتوي على README.txt، وحزمة OpenCart 3 vfd_postnord-oc3-(version).ocmod.zip، وحزمة OpenCart 4 vfd_postnord.ocmod.zip. ثبّت الحزمة الخاصة بإصدار OpenCart لديك فقط. مفتاح الترخيص هو نفسه لكلا الإصدارين.
OpenCart 3
1. في لوحة الإدارة، انتقل إلى Extensions > Installer، وانقر Upload، ثم اختر الملف vfd_postnord-oc3-(version).ocmod.zip. لا تضيف الإضافة أي تعديلات OCMOD، لذلك لا حاجة إلى تحديث Extensions > Modifications. وبدلًا من Installer يمكنك نسخ محتويات المجلد upload من هذه الحزمة إلى المجلد الجذر لمتجرك.
2. انتقل إلى Extensions > Extensions واختر نوع الإضافة Shipping. ابحث عن VibeFox PostNord وانقر Install (الزر الأخضر +).
3. انقر Edit (زر القلم) لفتح صفحة الإعدادات.
4. أدخل مفتاح ترخيص VibeFox في حقل License key داخل كتلة الترخيص في أعلى صفحة Edit، ثم انقر Activate (انظر مفتاح الترخيص).
5. فعّل Enable/Disable (توصيل نقطة الخدمة) و/أو Home delivery، والصق API key من PostNord، واختر Agreement country، واملأ Country prices أو Fallback cost (انظر الإعدادات)، ثم انقر Save.
OpenCart 4
1. في لوحة الإدارة، انتقل إلى Extensions > Installer، وانقر Upload، ثم اختر الملف vfd_postnord.ocmod.zip. لا تُغيّر اسم الملف: فـ OpenCart 4 يأخذ رمز الإضافة من اسم الملف، والحزمة التي يُعاد تسميتها لا تعمل.
2. تظهر الحزمة في قائمة الإضافات المثبتة في الصفحة نفسها. انقر Install (الزر الأخضر +) بجانبها.
3. انتقل إلى Extensions > Extensions، واختر نوع الإضافة Shipping. ابحث عن VibeFox PostNord، وانقر Install (الزر الأخضر +)، ثم Edit (زر القلم).
4. أدخل مفتاح الترخيص والإعدادات كما في الخطوتين 4 و5 لـ OpenCart 3. صفحة الإعدادات وحقولها متطابقة في الإصدارين.
بعد التثبيت يبقى الخياران معطّلين حتى تفعّل أحدهما وتحفظ. وإذا أعدت تثبيت الإضافة بعد إلغاء تثبيتها، فستُستخدم من جديد إعدادات PostNord التي احتفظت بها.
الإعدادات
جميع الإعدادات موجودة في صفحة الإضافة: Extensions > Extensions > Shipping > VibeFox PostNord > Edit. تظهر الأقسام في القائمة على اليسار. يحفظ زر Save في أسفل الصفحة الصفحة كاملة دون إعادة تحميلها. كما يمسح كل حفظ قوائم نقاط الخدمة المخزّنة مؤقتًا. ولا يستطيع حفظ الإعدادات إلا المستخدمون الإداريون الذين لديهم صلاحية التعديل لهذه الإضافة.
إذا كانت قيمة ما خاطئة، فلا يُحفظ أي شيء وتعرض الصفحة السبب: اسم فارغ، أو أطول من 64 حرفًا، أو يحتوي على < > ; = # { }، أو ترتيب عرض ليس عددًا صحيحًا، أو حالة ضريبة أو منطقة جغرافية غير صالحة، أو Min weight (kg) أكبر من Max weight (kg). يُحفظ حقل الرقم الذي لا تكون قيمته رقمًا أكبر من 0 أو يساويه فارغًا مع رسالة. ويُحفظ خلية جدول الأسعار التي لا تكون قيمتها رقمًا أكبر من 0 أو يساويه بالقيمة 0 مع رسالة.
وفوق الإعدادات، تحذّر الصفحة إذا لم يكن هناك مفتاح API بعد، أو لا يوجد سعر بعد، أو لا توجد فئة الوزن "kg" في المتجر.
عام
يُقدَّم خياراً التوصيل ضمن المنطقة الجغرافية المحددة في Availability، أو للدول المذكورة في Ignore shipping zones.
Enable/Disable: يفعّل أو يعطّل توصيل PostNord إلى نقطة خدمة أو خزانة طرود. يختار العميل النقطة أثناء الدفع. الافتراضي: معطّل.
Name: اسم خيار نقطة الخدمة أثناء الدفع، على سبيل المثال "PostNord MyPack Collect". الافتراضي: PostNord. مطلوب، حتى 64 حرفًا، ودون < > ; = # { }.
Home delivery: يعرض أيضًا التوصيل المنزلي عبر PostNord، وهو خيار ثانٍ بلا نقطة خدمة. الافتراضي: معطّل.
Home delivery name: اسم خيار التوصيل المنزلي أثناء الدفع، على سبيل المثال "PostNord MyPack Home". الافتراضي: PostNord Home delivery. تطبَّق القواعد نفسها المطبَّقة على Name.
Sort order: موضع PostNord بين طرق الشحن أثناء الدفع. رقم صحيح.
Tax status: None (the prices are final) (الافتراضي)، أو فئة ضريبة، وعندها يضيف OpenCart ضريبة الشحن لتلك الفئة فوق الأسعار. ينطبق ذلك على الخيارين معًا.
واجهة PostNord API (منتقي نقاط الخدمة)
API key: مفتاح API لتطبيقك على developer.postnord.com. يُرسل إلى PostNord من خادمك فقط، ولا يُرسل أبدًا إلى المتصفح، ولا يُكتب في السجل أبدًا. بعد الحفظ يبقى الحقل فارغًا ويعرض Saved - leave empty to keep it. أدخل قيمة جديدة فقط إذا أردت تغييره.
Remove the saved API key: ضع علامة في المربع ثم انقر Save لحذف المفتاح المحفوظ.
Test mode: يستخدم بيئة اختبار PostNord (atapi2.postnord.com). للمفاتيح الصادرة لبيئة الاختبار فقط.
Agreement country: البلد الذي تنتمي إليه اتفاقية عميل PostNord: السويد أو الدنمارك أو النرويج أو فنلندا. وهو يحدد نقاط الخدمة المعروضة. يستخدم Same as the delivery country (الافتراضي) بلد العميل.
الأسعار
يعرض عنوان القسم عملة المتجر الافتراضية. الأسعار بهذه العملة، دون ضريبة، وهي نفسها للخيارين. لا تملك PostNord واجهة برمجية عامة للأسعار، لذلك تحدد أسعارك بنفسك، وعادةً تكون أسعار اتفاقيتك مع PostNord. الترتيب هو: حد الشحن المجاني، ثم جدول الدول، وأخيرًا التكلفة الاحتياطية.
Calculation type: Per order (الافتراضي) يحصّل السعر مرة واحدة. Per item (price x number of items) يضربه في عدد العناصر في السلة.
Country prices: سعر حسب بلد الوجهة ووزن السلة. انقر Add country لإضافة صف، وزر × لحذفه. يحتوي كل صف على عمود Price وأعمدة للوزن: XS حتى 1 كغ، وS حتى 2 كغ، وM حتى 3 كغ، وL حتى 5 كغ، وXL أكثر من 5 كغ. أما عمود الوزن الذي قيمته 0 فيستخدم عمود Price، والسعر Price الذي قيمته 0 يعني شحنًا مجانيًا. ويغطي البلد * All other countries كل البلدان التي ليس لها صف خاص بها. الكسور تُكتب بفاصلة أو نقطة (9,99 أو 9.99). يبدأ الصف الجديد باسم * All other countries وجميع الأسعار 0. اختر البلد وأدخل الأسعار قبل الحفظ، أو احذف الصف. تُحفظ الخلية الفارغة بالقيمة 0.
Fallback cost: يُستخدم عندما لا يكون في جدول الدول صف لوجهة الشحن ولا صف *. اتركه فارغًا لإخفاء PostNord لتلك البلدان.
Free shipping from: المجموع الفرعي للسلة (المنتجات التي تحتاج إلى شحن، بعد القسيمة، دون الضريبة) الذي يصبح عنده PostNord مجانيًا. يُتحقق منه قبل جدول الدول، لذلك ينطبق أيضًا على بلد ليس له صف سعر. اتركه فارغًا لعدم تقديم الشحن المجاني أبدًا.
التوفر
Min weight (kg): يخفي PostNord عندما تكون السلة أخف من ذلك. تُحوَّل أوزان المنتجات من فئة الوزن الخاصة بها. الافتراضي: 0، أي دون حد.
Max weight (kg): يخفي PostNord عندما تكون السلة أثقل من ذلك. الافتراضي: 30. القيمة 0 تعني دون حد. تحقق من حد الوزن لخدمة PostNord لديك: خزائن الطرود تقبل أوزانًا أقل من نقاط الخدمة.
Minimum subtotal: يعرض PostNord فقط إذا بلغ المجموع الفرعي للسلة (المنتجات التي تحتاج إلى شحن، بعد القسيمة، دون الضريبة) هذا المبلغ على الأقل. اتركه فارغًا ليظهر دائمًا.
Geo zone: يُقدَّم PostNord فقط للعناوين الواقعة ضمن هذه المنطقة الجغرافية. All zones (الافتراضي) يعني دون حد. تُدار المناطق الجغرافية في System > Localisation > Geo Zones. لا تُستخدم هذه الإعدادة ما دام Ignore shipping zones مفعّلًا.
Ignore shipping zones: عند التفعيل لا تُتحقق المنطقة الجغرافية، ويُقدَّم PostNord للبلدان المذكورة أدناه. وعند التعطيل يُقدَّم فقط داخل المنطقة الجغرافية.
Countries (Ignore shipping zones): بلدان الوجهة لهذا الوضع. اتركه فارغًا للسماح بجميع البلدان. لا يُستخدم هذا الحقل إلا عندما يكون Ignore shipping zones مفعّلًا.
متقدم
Debug log: يكتب حسابات الأسعار واستدعاءات API في storage/logs/vfd_ptnd_debug.log.php. لا يمكن قراءة هذا الملف من الويب. تُسجَّل أخطاء API دائمًا. مفتاح API لا يُسجَّل أبدًا. أوقف السجل عند الانتهاء. وعندما يصل الملف إلى 5 MB يبدأ سجل جديد.
Log: يعرض حجم سجل التصحيح وأحدث إدخاله. انقر Clear log لتفريغه.
Remove data on uninstall: عند التفعيل، يؤدي إلغاء تثبيت الإضافة إلى حذف إعدادات PostNord والسجل. تُحذف قوائم نقاط الخدمة المخزّنة مؤقتًا دائمًا. أما نقاط الخدمة المحفوظة في الطلبات فتبقى دائمًا.
الاستيراد / التصدير
Export: انقر Download JSON لحفظ الإعدادات في ملف JSON. لا يُصدَّر مفتاح API.
Import: الصق ملف JSON المُصدَّر سابقًا، وانقر Import لاستعادة الإعدادات، مثلًا في متجر آخر. تُتحقق القيم كما في الحفظ العادي. ويبقى مفتاح API المحفوظ كما هو.
كيف يعمل أثناء الدفع
عندما يعرض OpenCart طرق الشحن، يطلب من الإضافة سعر كل خيار من خيارات PostNord. تُحتسب فقط المنتجات التي يكون فيها Requires Shipping على Yes: أما المنتجات الأخرى فلا تضيف وزنًا ولا تدخل في المجموع الفرعي. تتحقق الإضافة من المنطقة الجغرافية أو قائمة الدول، ووزن السلة، والحد الأدنى للمجموع الفرعي. فإن انطبق الشحن المجاني كان السعر 0. وإلا يُؤخذ السعر من جدول الدول، ثم من التكلفة الاحتياطية. وإذا لم يوجد سعر أُخفي الخيار. يُحسب السعر بعملة المتجر الافتراضية ويظهر للعميل بعملته، مع الضريبة الموافقة لـTax status المحدد. ولا يتصل حساب السعر بـ PostNord أبدًا.
بالنسبة إلى خيار نقطة الخدمة وعنوان توصيل في السويد أو الدنمارك أو النرويج أو فنلندا، يطلب خادمك من واجهة PostNord Business Location API نقاط الخدمة العشر الأقرب إلى الرمز البريدي للتوصيل. ويرسل بلد التوصيل والرمز البريدي وبلد الاتفاقية. مهلة استجابة API هي 10 ثوانٍ. تُخزَّن القوائم مؤقتًا لمدة 6 ساعات لكل رمز بريدي، وردود "لا توجد نقاط" لمدة ساعة. وتُخزَّن أخطاء API مؤقتًا لمدة 5 دقائق، حتى لا يبطئ تعطل PostNord كل تحديث للدفع. ويُحفظ التخزين المؤقت في جدول قاعدة البيانات الخاص بالإضافة. ولا تنتظر خطوة التوصيل PostNord أبدًا: إذا لم تكن القائمة مخزّنة مؤقتًا بعد، تُحمَّل بعد أن يختار العميل الخيار.
بالنسبة إلى الوجهات الأخرى، يمكن تقديم الخيارات بأسعارك ولكن دون منتقٍ. ولا يعرض خيار التوصيل المنزلي منتقيًا أبدًا.
لا تطلب الإضافة أسعار PostNord الفورية، ولا تنشئ ملصقات شحن، ولا تحجز الشحنات (EDI)، ولا توفر أرقام تتبع، ولا ترسل رسائل بريد إلكتروني للتتبع. لا يوجد عرض على الخريطة. استخدم PostNord Portal أو Skicka Direkt Business أو أداة ملصقات للشحنات؛ فهذه الأدوات تحتاج إلى معرّف نقطة الخدمة المحفوظ.
على OpenCart 4 ينقر العميل على Choose في كتلة طريقة الشحن في صفحة الدفع، ويختار خيار PostNord في النافذة Shipping method options. الأسعار هي نفسها في OpenCart 3.
نقاط الاستلام
عندما يكون عنوان التوصيل في السويد أو الدنمارك أو النرويج أو فنلندا، تظهر قائمة PostNord service point أسفل خيار نقطة الخدمة، تضم أقرب النقاط مجمّعة حسب المدينة، ولكل نقطة عنوانها ومسافتها. قبل إدخال الرمز البريدي يرى العميل الرسالة "أدخل رمزك البريدي لاختيار نقطة خدمة PostNord." ويُحفظ الاختيار فورًا من أجل الدفع.
عندما تُحمَّل القائمة، يكون اختيار نقطة إلزاميًا. ومن دون اختيار، تتوقف Continue في خطوة طريقة التوصيل مع الرسالة "يرجى اختيار نقطة خدمة PostNord." وتُتحقق النقطة المختارة على الخادم مقابل قائمة PostNord لعنوان التوصيل. ولا تُستخدم النقطة المختارة لرمز بريدي آخر.
لا يعيق المنتقي البيع أبدًا. إذا تعذّر تحميل القائمة (لا يوجد مفتاح API بعد، أو واجهة PostNord API غير متاحة، أو لا توجد نقاط قرب الرمز البريدي)، يرى العميل ملاحظة ويمكنه إتمام الطلب. وعندها توصل PostNord الطرد إلى نقطة الخدمة الأقرب إلى العنوان.
صفحات الطلب ورسائل البريد والفاتورة: تُضاف النقطة إلى طريقة شحن الطلب، مثلًا "PostNord: الاسم، العنوان (ID 12345)" (اسم الخيار ثم النقطة). وإذا تجاوز النص 128 حرفًا، يُحذف العنوان (وعلى OpenCart 4 لا توجد هذه الحدود، ويُحتفظ بالعنوان دائمًا). وتظهر النقطة حيثما تعرض OpenCart طريقة الشحن: في سجل طلبات العميل، وفي رسائل الطلب، وفي الفاتورة، وفي Sales > Orders. والطلب الذي لا توجد فيه نقطة يحتفظ بالاسم العادي لطريقة الشحن.
صفحة الطلب في لوحة الإدارة: في Sales > Orders تعرض صفحة الطلب، فوق السجل، لوحة PostNord service point تتضمن الاسم والعنوان وService point ID. وإذا لم تُختر نقطة، فتظهر العبارة "غير محددة - توصل PostNord الطرد إلى نقطة الخدمة الأقرب إلى عنوان الشحن".
على OpenCart 4 تظهر قائمة نقاط الخدمة في النافذة Shipping method options، تحت خيار نقطة الخدمة، وتُحمَّل من جديد في كل مرة تُفتح فيها النافذة، لأن العنوان قد يتغير في الدفع في صفحة واحدة. ولا يتابع زر Continue في النافذة من دون نقطة من القائمة، بالرسالة نفسها. وإذا ضغط العميل عليه أثناء تحميل القائمة، تنتظر النافذة القائمة دون رسالة ثم تنقر Continue مرة أخرى من تلقاء نفسها. ولا تمنع القائمة غير المتاحة الطلب أيضًا. ويحتفظ OpenCart 4 بطلب واحد للدفع ويحدّثه في كل مرة يؤكد فيها العميل من جديد، وتُحدَّث نقطة الخدمة الخاصة بالطلب معه.
مفتاح الترخيص
تعمل الإضافة بمفتاح ترخيص VibeFox من vibefox.net. كتلة الترخيص License — VibeFox PostNord هي أول كتلة في صفحة Extensions > Extensions > Shipping > VibeFox PostNord > Edit، فوق الإعدادات. أدخل المفتاح في License key وانقر Activate. بعد ذلك تعرض الكتلة المفتاح مخفيًا جزئيًا، والحالة (مثل التاريخ الذي ينتهي عنده الترخيص ونطاقك)، والأزرار Check now لإعادة التحقق من الحالة، وChange key لإدخال مفتاح آخر، وRemove key لإزالة المفتاح من هذا المتجر. وتحتها سطر Product: opencart-shipping-postnord ورابط Manage licenses and domains in your account الذي يفتح حسابك في vibefox.net. ولا يستطيع تغيير المفتاح إلا المستخدمون الإداريون الذين لديهم صلاحية Modify للإضافة. ونصوص الكتلة تتبع لغة الإدارة (الإنجليزية والروسية مضمنتان).
إذا لم يُقبل المفتاح، تُظهر الكتلة السبب، مثل Key not found أو This key belongs to another product أو Domain limit reached أو License expired on مع تاريخ. بعد تغيير عنوان المتجر، أو بعد تحرير خانة نطاق في حسابك، انقر Check now. وإذا تعذّر الوصول إلى خادم التراخيص، تواصل الإضافة العمل بآخر حالة معروفة.
يعمل المفتاح الواحد على نطاق واحد فقط: عنوان المتجر من إعدادات OpenCart. إزالة المفتاح من المتجر لا تحرر خانة النطاق الخاصة به. حرّر الخانة من حسابك في vibefox.net.
بدون ترخيص نشط، لا تُعرض خيارات الشحن PostNord للعملاء أثناء الدفع ولا تُحسب أي تكلفة شحن. ويرى مستخدم الإدارة الذي سجّل الدخول إلى لوحة الإدارة في المتصفح نفسه الخيارات في المتجر، مع العلامة (unlicensed — visible to admins only)، حتى تتمكن من إعداد الإضافة واختبارها قبل شراء مفتاح. وعلى OpenCart 4 لا تتوفر هذه المعاينة: فالمتجر لا يرى تسجيل دخول الإدارة، لذلك تُخفى الخيارات عن الجميع دون ترخيص نشط. وبعد فتح صفحة Edit مرة واحدة، يظهر تذكير في Dashboard الخاصة بالإدارة. أغلقه بـ × لإخفائه لمدة 7 أيام. ولا تتأثر الطلبات الموجودة.
عند انتهاء صلاحية الترخيص تواصل الإضافة العمل، لكن التحديثات والدعم يحتاجان إلى تجديد. تُعاد مراجعة الحالة تلقائيًا عند فتح Dashboard أو صفحة Edit في الإدارة: مرة واحدة يوميًا خلال أول 14 يومًا بعد إدخال المفتاح، ثم مرة كل أسبوع. لا حاجة إلى مهمة cron. وإلغاء تثبيت الإضافة يحذف دائمًا مفتاح الترخيص وحالته.
استكشاف الأخطاء وإصلاحها
لا يظهر PostNord أثناء الدفع: تحقق من أن الترخيص نشط وأن Enable/Disable (أو Home delivery) مفعّل. تحقق من Geo zone أو قائمة Countries عندما يكون Ignore shipping zones مفعّلًا. تحقق من تحديد سعر للبلد (صف البلد، أو صف *، أو Fallback cost)، وحدود الوزن، وMinimum subtotal. وتحقق من أن المنتجات لديها Requires Shipping على Yes.
يقول المنتقي إن نقاط الخدمة لا يمكن تحميلها: تحقق من API key ومن إعداد Test mode. فمفتاح الإنتاج لا يعمل مع بيئة الاختبار، والعكس صحيح. فعّل Debug log، وأعد تحميل صفحة الدفع، وانظر إلى الحقل Log في صفحة الإضافة. يمكن إتمام الطلب مع ذلك؛ وعندها توصل PostNord الطرد إلى أقرب نقطة خدمة.
نقاط خدمة غير متوقعة: تحقق من Agreement country. فهو يحدد نقاط الخدمة المعروضة.
الشحن مجاني عن طريق الخطأ: تحقق من Country prices بحثًا عن صفوف سعرها Price يساوي 0، وخاصة صف * الذي أُضيف بـAdd country وتُرك فارغًا، وتحقق من Free shipping from.
تبدو نقاط الخدمة قديمة بعد تغيير: انقر Save في صفحة الإضافة. وهذا يمسح القوائم المخزّنة مؤقتًا.
تبدو أوزان المنتجات خاطئة: إذا حذّرت صفحة الإضافة من أن المتجر لا يملك فئة الوزن "kg"، فتحقق من System > Localisation > Weight Classes. تُحوَّل أوزان المنتجات حسب اسم وحدة فئتها، وتُقرأ الوحدات غير المعروفة على أنها كغ.
تقول الصفحة "Warning: You do not have permission to modify VibeFox PostNord!": ربما لا تملك مجموعة المستخدمين الإداريين لديك إلا صلاحية عرض الإعدادات. امنح المجموعة صلاحية التعديل لـextension/shipping/vfd_postnord (OpenCart 3) أو extension/vfd_postnord/shipping/vfd_postnord (OpenCart 4) في System > Users > User Groups.
للمطوّرين: يمكن استبدال عنوان PostNord API بالإعداد vfd_ptnd_api_url (للاختبارات)؛ وليس له حقل في صفحة الإعدادات.
إلغاء التثبيت
انتقل إلى Extensions > Extensions، واختر النوع Shipping، ثم انقر Uninstall (الزر الأحمر −) بجوار VibeFox PostNord. يُحذف مفتاح الترخيص وحالة الترخيص لهذه الإضافة دائمًا. يعيد OpenCart دائمًا ضبط حالة الإضافة وSort order وTax status وGeo zone. تُحذف قوائم نقاط الخدمة المخزّنة مؤقتًا دائمًا. وإذا كان Remove data on uninstall مفعّلًا، تُحذف أيضًا إعدادات PostNord وسجل التصحيح ونقاط الخدمة الخاصة بعمليات الدفع التي لم تتحول إلى طلب قط. وإذا كان معطّلًا، تبقى بقية الإعدادات محفوظة وتُستخدم مجددًا عند إعادة تثبيت الإضافة. وتحتفظ الطلبات الموجودة بطريقة شحنها وتكلفتها ونقطة الخدمة المحفوظة.
على OpenCart 4، ولحذف ملفات الإضافة أيضًا، انتقل إلى Extensions > Installer بعد إلغاء التثبيت، وانقر Uninstall (زر − البرتقالي) بجوار VibeFox PostNord في قائمة الإضافات المثبتة، ثم Delete (زر سلة المهملات الأحمر) لحذف الحزمة المرفوعة.
PostNord علامة تجارية مملوكة لصاحبها. هذه الإضافة غير تابعة لـ PostNord ولا معتمدة منها.
