رجوع

VibeFox IntaSend for OpenCart — المساعدة

المتطلبات

OpenCart: ‏3.0.x (تم الاختبار على الإصدار 3.0.5.0) أو ‏4.0.2 والإصدارات الأحدث (تم الاختبار على الإصدار 4.1.0.3).

PHP: ‏8.0 أو أحدث مع امتداد cURL.

HTTPS: تتطلب IntaSend بروتوكول HTTPS للمدفوعات الفعلية والـ webhooks. تُحذّرك صفحة الإعدادات عندما يكون وضع التشغيل الفعلي مفعّلًا وعنوان المتجر غير مُؤمَّن بـ HTTPS.

حساب IntaSend: تحتاج إلى المفتاح القابل للنشر (ISPubKey_...) والمفتاح السري (ISSecretKey_...) لحساب IntaSend الخاص بك، سواء للبيئة التجريبية (sandbox) أو للتشغيل الفعلي أو لكليهما، وإلى webhook مع عبارة تحدٍّ (challenge) في لوحة تحكم IntaSend (راجع الإعدادات). يُنشئ المفتاح القابل للنشر عملية الدفع في صفحة الدفع. ولا يُستخدم المفتاح السري إلا على خادمك للاستعلام من IntaSend عن حالة الدفع.

العملة: ‏KES وUSD وEUR وGBP وUGX وTZS وNGN وGHS وXAF أو XOF. عندما تكون عملة دفع العميل غير هذه العملات، تُخفى طريقة الدفع.

مفتاح ترخيص VibeFox: يُشترى من vibefox.net. يعمل المفتاح الواحد على نطاق واحد.

التثبيت

يحتوي هذا التنزيل على ملف zip واحد فيه حزم الإصدارين من OpenCart. فكّ ضغطه على حاسوبك. يحتوي على README.txt، وحزمة OpenCart 3 wcp_intasend_pay-oc3-(version).ocmod.zip، وحزمة OpenCart 4 wcp_intasend_pay.ocmod.zip. ثبّت الحزمة الخاصة بإصدار OpenCart لديك فقط. مفتاح الترخيص واحد للإصدارين.

OpenCart 3

1. في لوحة الإدارة، انتقل إلى Extensions > Installer، ثم انقر على Upload واختر الملف wcp_intasend_pay-oc3-(version).ocmod.zip. لا تحتوي الإضافة على أي تعديلات OCMOD، لذلك لا يلزم تحديث Extensions > Modifications. وبدلًا من أداة التثبيت، يمكنك نسخ محتويات المجلد upload الموجود في هذه الحزمة إلى المجلد الجذر لمتجرك.

2. انتقل إلى Extensions > Extensions، واختر النوع Payments. ابحث عن VibeFox IntaSend Pay Gateway وانقر على Install (زر + الأخضر). يحتاج مستخدم الإدارة لديك إلى صلاحية تعديل قائمة امتدادات الدفع.

3. انقر على Edit (زر القلم) لفتح صفحة الإعدادات. الصق مفتاح ترخيص VibeFox في License key ضمن كتلة الترخيص أعلى الصفحة، ثم انقر على Activate (راجع مفتاح الترخيص).

4. الصق مفاتيح IntaSend الخاصة بالبيئة التجريبية و/أو التشغيل الفعلي، وأضف الـ webhook في لوحة تحكم IntaSend، وأدخل العبارة نفسها في الامتداد (راجع الإعدادات).

5. فعّل Enable/Disable وانقر على Save. اختبر عملية دفع مع تفعيل Test mode، ثم أوقف Test mode لقبول المدفوعات الحقيقية.

OpenCart 4

1. في لوحة الإدارة، انتقل إلى Extensions > Installer، ثم انقر على Upload واختر الملف wcp_intasend_pay.ocmod.zip. لا تُغيّر اسم الملف: يأخذ OpenCart 4 رمز الامتداد من اسم الملف، ولا تعمل الحزمة إذا أُعيد تسميتها.

2. تظهر الحزمة في قائمة الامتدادات المثبتة في الصفحة نفسها. انقر على Install (زر + الأخضر) بجانبها.

3. انتقل إلى Extensions > Extensions واختر النوع Payments. ابحث عن VibeFox IntaSend Pay Gateway، وانقر على Install (زر + الأخضر)، ثم على Edit (زر القلم).

4. أدخل مفتاح الترخيص ومفاتيح IntaSend والـ webhook كما في الخطوات من 3 إلى 5 لـ OpenCart 3. صفحة الإعدادات وحقولها متطابقة في الإصدارين. الفرق الوحيد هو رابط الـ webhook (راجع Webhook).

يبدأ التثبيت الجديد بطريقة الدفع معطّلة ووضع الاختبار مفعّلًا.

الإعدادات

جميع الإعدادات موجودة في صفحة الامتداد: Extensions > Extensions > Payments > VibeFox IntaSend Pay Gateway > Edit. تُعرض الأقسام على اليسار، وزر Save أسفل القائمة يحفظ الصفحة كاملةً. وفوق الإعدادات يعرض مربع الحالة النص Test mode: IntaSend sandbox, no real money is charged. أو Live mode: real payments are accepted. كما يُحذّرك عندما تكون مفاتيح الوضع الحالي مفقودة أو غير صحيحة (فتُخفى طريقة الدفع حينها في صفحة الدفع)، وعندما لا تكون عملة المتجر الافتراضية مدعومة، وعندما لا تُضبط عبارة التحدي للـ webhook، وعندما يُستخدم وضع التشغيل الفعلي دون HTTPS. ومن دون صلاحية تعديل الامتداد، تعرض الصفحة الإعدادات لكنها لا تستطيع حفظها.

عند الحفظ، لا يمكن أن يكون Title فارغًا أو أطول من 128 حرفًا، ويجب أن يكون Sort Order عددًا صحيحًا، ويجب أن يكون Total رقمًا يساوي 0 أو أكبر، ويجب أن تكون المنطقة الجغرافية وحالات الطلب المختارة موجودة. وإلا فلن يُحفظ شيء، وستُظهر رسالة الخطأ اسم الحقل. لا تمنع مشكلات المفاتيح الحفظ، إذ يُظهر مربع الحالة هذه المشكلات. تُحذف المسافات الزائدة في أول المفاتيح المُلصقة وآخرها.

IntaSend

Enable/Disable: Enable IntaSend يُفعّل طريقة الدفع أو يُوقفها. الافتراضي: مُعطّل.

Title: اسم طريقة الدفع الذي يراه العملاء في صفحة الدفع. وهو أيضًا اسم طريقة الدفع المحفوظ في الطلب. الافتراضي: IntaSend (M-Pesa, card). مطلوب، من 1 إلى 128 حرفًا.

Description: النص الذي يراه العميل في خطوة Confirm Order، فوق زر التأكيد. الافتراضي: You will be redirected to IntaSend to pay securely with M-Pesa, card or another available method.

Sort Order: موضع IntaSend بين طرق الدفع في صفحة الدفع. اتركه فارغًا أو أدخل عددًا صحيحًا.

Geo Zone: اعرض IntaSend فقط لعناوين الدفع الواقعة في المنطقة الجغرافية المختارة. الافتراضي: All zones. تُضبط المناطق الجغرافية في System > Localisation > Geo Zones.

Total: إجمالي صفحة الدفع، بعملة المتجر الافتراضية، الذي يجب أن يبلغه الطلب قبل أن تُعرض IntaSend. اتركه فارغًا لعرض IntaSend مهما كان المبلغ.

مفاتيح API

احصل على المفاتيح من لوحة تحكم IntaSend ضمن Settings > API Keys، وبشكل منفصل من لوحة البيئة التجريبية (sandbox) ولوحة التشغيل الفعلي (يحتوي القسم على روابط لكلتيهما). يستخدم وضع الاختبار مفاتيح البيئة التجريبية وواجهة برمجة التطبيقات الخاصة بها، ويستخدم وضع التشغيل الفعلي مفاتيح التشغيل الفعلي وواجهة برمجة التطبيقات الخاصة به. يتحقق الامتداد من أن المفتاح القابل للنشر يبدأ بـ ISPubKey_، وأن المفتاح السري يبدأ بـ ISSecretKey_، وأن المفاتيح تنتمي إلى الوضع الحالي: تحتوي مفاتيح البيئة التجريبية على _test، وتحتوي مفاتيح التشغيل الفعلي على _live. وإذا لم يكن الأمر كذلك، تُخفى طريقة الدفع ويشرح مربع الحالة السبب.

Test mode: يستخدم بيئة IntaSend التجريبية، ولا يُخصم أي مال حقيقي. الافتراضي: مُفعّل. أوقفه لقبول المدفوعات الحقيقية بالمفاتيح الفعلية. وطالما أن وضع الاختبار مفعّل، يرى العملاء في خطوة Confirm Order النص TEST MODE - IntaSend sandbox, no real money is charged.

Sandbox publishable key: يبدأ بـ ISPubKey_test. يُعرّف نشاطك التجاري عند إنشاء عملية الدفع.

Sandbox secret key: يبدأ بـ ISSecretKey_test. يُستخدم على خادمك فقط لتأكيد المدفوعات عبر Payment Status API.

Live publishable key: يبدأ بـ ISPubKey_live.

Live secret key: يبدأ بـ ISSecretKey_live. يُستخدم على خادمك فقط لتأكيد المدفوعات.

لا تُعرض المفاتيح السرية المحفوظة ولا عبارة تحدي الـ webhook مرة أخرى. يبقى الحقل فارغًا ويعرض Saved — leave empty to keep it. أدخل قيمة جديدة فقط إذا أردت تغييرها. ولحذف قيمة محفوظة، ضع علامة على Clear the saved value أسفل الحقل وانقر على Save.

Webhook

يُخبر الـ webhook متجرك بأن الدفع قد تم، حتى عندما لا يعود العميل إلى المتجر (إغلاق المتصفح، أو تأكيد M-Pesa لاحقًا). في لوحة تحكم IntaSend، في البيئة التجريبية وفي التشغيل الفعلي، افتح Webhooks وأضف الرابط المعروض في Webhook URL في هذا القسم. في OpenCart 3 يبدو الرابط هكذا: https://your-store/index.php?route=extension/payment/wcp_intasend_pay/webhook، وفي OpenCart 4 هكذا: https://your-store/index.php?route=extension/wcp_intasend_pay/payment/wcp_intasend_pay.webhook. ويُبنى من عنوان الواجهة الأمامية لمتجر OpenCart الخاص بك. انسخ الرابط تمامًا كما تعرضه الإعدادات. أدخل هناك عبارة تحدٍّ، والعبارة نفسها في الامتداد. استخدم تحديًا واحدًا للبيئة التجريبية والتشغيل الفعلي.

Webhook challenge: العبارة نفسها الموجودة في لوحة تحكم IntaSend. تُرفض الـ webhooks التي تحمل عبارة تحدٍّ أخرى. وطالما هذا الحقل فارغ، لا تُعالج الـ webhooks، ولا تُؤكَّد المدفوعات إلا عندما يعود العميل إلى المتجر. وتُرد على هذه الـ webhooks بالرد Ignored وليس بخطأ، حتى لا تُعطّل IntaSend الـ webhook قبل أن تُدخل عبارة التحدي.

يتفاعل الامتداد مع حالات الدفع التالية التي تُبلغ عنها IntaSend. وفي كل مرة، يستعلم من Payment Status API عن الحالة الحقيقية قبل تغيير أي شيء:

COMPLETE: تم الدفع. يحصل الطلب على حالة الدفع (Paid Order Status) بعد التحقق من المبلغ والعملة.
FAILED or CANCELED: فشل الدفع. تُعلَّم آخر محاولة دفع للطلب كفاشلة مع سبب IntaSend. يبقى الطلب بلا حالة ويُحتفظ بالسلة.
PARTIAL: دُفعت الفاتورة جزئيًا. يحصل الطلب على On Hold Status.
PENDING, PROCESSING or RETRY: الدفع ما زال جاريًا. لا يتغير شيء حتى تصل الحالة النهائية.

الإشعارات التي ليست مدفوعات دفع لهذا المتجر، مثل روابط الدفع أو أحداث إرسال الأموال في الحساب نفسه في IntaSend، تُرد عليها بالرد Ignored حتى لا تُعطّل IntaSend الـ webhook.

الطلبات

ينشئ OpenCart الطلب في خطوة Confirm Order دون حالة (طلب مفقود، missing order). لا يحصل الطلب على حالة إلا بعد أن تؤكد IntaSend الدفع عبر Payment Status API. يسرد كل حقل أدناه حالات الطلب في OpenCart لديك.

Paid Order Status: الحالة التي تُعيَّن بعد دفع تؤكده IntaSend. الافتراضي: Processing.

On Hold Status: أبلغت IntaSend عن مبلغ أو عملة مختلفين، أو عن دفع جزئي، أو عن دفع تم بعد إلغاء الطلب. يحصل الطلب على هذه الحالة مع ملاحظة تشرح السبب. الافتراضي: Pending، لأن OpenCart لا يملك حالة On hold. يمكنك إنشاء حالتك الخاصة في System > Localisation > Order Statuses واختيارها هنا.

Refunded Status: الدفع الذي يصل إلى طلب في هذه الحالة يضيف ملاحظة فقط؛ ولا يُعاد فتح الطلب. الافتراضي: Refunded. لا يُجري الامتداد الاسترداد بنفسه.

متقدم

Debug log: يسجل أحداث الدفع والعودة والـ webhook في intasend_p_debug.log.php داخل مجلد السجلات في OpenCart (storage/logs). لا يمكن فتح الملف من الويب، وعند بلوغه 5 ميغابايت يُنقل إلى intasend_p_debug.old.log.php. تُسجَّل الأخطاء والتحذيرات دائمًا. لا تُسجَّل مفاتيح API ولا عبارة التحدي ولا بيانات العملاء أبدًا. الافتراضي: مُعطّل.

Log: يعرض حجم السجل وآخر إدخالاته. انقر على Clear log لتفريغه.

Delete data on uninstall: عند التفعيل، يؤدي إلغاء تثبيت الامتداد إلى حذف إعدادات البوابة والسجل. مراجع IntaSend المحفوظة للطلبات تُعد سجل مدفوعات، ولذلك تُحفظ دائمًا. الافتراضي: مُعطّل.

الاستيراد / التصدير

Export: Download JSON يحفظ الإعدادات في ملف JSON. لا تُصدَّر المفاتيح السرية وعبارة تحدي الـ webhook.

Import: الصق ملف JSON المُصدَّر سابقًا وانقر على Import لاستعادة الإعدادات. تبقى المفاتيح السرية المحفوظة وعبارة تحدي الـ webhook كما هي.

الدفع

في خطوة Payment Method يختار العميل طريقة الدفع (افتراضيًا IntaSend (M-Pesa, card)). وفي خطوة Confirm Order يرى العميل وصفك. ينشئ OpenCart الطلب في هذه الخطوة، ولا يزال بلا حالة. وعندما ينقر العميل على Confirm Order، يُنشئ الامتداد عملية دفع IntaSend بإجمالي الطلب بعملة الطلب، ويُرسل العميل إلى صفحة الدفع التي تستضيفها IntaSend. هناك يدفع العميل عبر M-Pesa أو بطاقة أو طريقة أخرى مُفعّلة في حساب IntaSend الخاص بك. يُمرَّر البريد الإلكتروني والهاتف الخاصان بالعميل، وكذلك اسم عنوان الدفع وعنوانه وبلده، إلى IntaSend عندما تتوافق مع قواعد حقول IntaSend. تُحذف الحقول الفارغة أو غير المناسبة. ويحصل كل محاولة على مرجع IntaSend خاص بها.

في OpenCart 4 يختار العميل طريقة الدفع بزر Choose في كتلة طريقة الدفع، داخل النافذة Payment method options، وينقر على Confirm Order أسفل صفحة الدفع. وبشكل افتراضي لا يطلب OpenCart 4 عنوان الدفع؛ عندها يُمرِّر الامتداد إلى IntaSend عنوان الشحن: العنوان والمدينة والرمز البريدي والبلد.

بعد الدفع يعود العميل عبر عنوان الصفحة الرئيسية لمتجرك، لأن IntaSend لا تقبل بعض الأحرف في عنوان العودة؛ ثم يُحوِّل الامتداد العميل إلى صفحة العودة الخاصة به. لا يُعلَّم الطلب كمدفوع إلا بعد أن تؤكده IntaSend: يستعلم الامتداد من Payment Status API عندما يعود العميل وعندما يصل الـ webhook. ثم يحصل الطلب على حالته بالطريقة المعتادة في OpenCart، مع رسائل البريد الإلكتروني المعتادة للطلب وتحديث المخزون، ويرى العميل صفحة نجاح الطلب في OpenCart. وإذا وُضع الطلب في حالة الانتظار، تعرض الصفحة أيضًا Your payment was received and your order is being reviewed. We will contact you if anything is needed. وإذا لم يُؤكَّد الدفع بعد، أو تعذّر الوصول إلى IntaSend في تلك اللحظة، تعرض صفحة Payment confirmation النص Your payment is being confirmed by IntaSend (M-Pesa confirmations can take a minute). You will receive an e-mail as soon as it is confirmed. مع الزرين Check again وBack to checkout. ويُعيّن الـ webhook حالة الطلب بمجرد أن تؤكد IntaSend الدفع.

إذا فشل الدفع، يعود العميل إلى صفحة الدفع مع الرسالة The payment was not successful. Please try again or choose another payment method. (ومعها سبب IntaSend إن وُجد). وإذا عاد العميل دون أن يدفع، تكون الرسالة The payment was not completed. Please try again or choose another payment method. تُحفظ السلة ويستطيع العميل الدفع مرة أخرى. في OpenCart 4 تظهر هذه الرسائل أعلى صفحة الدفع. ينشئ OpenCart 3 طلبًا جديدًا في كل مرة تظهر فيها خطوة Confirm Order، أما OpenCart 4 فيُحدِّث طلب الدفع الحالي، فيدفع العميل بعد الفشل الطلب نفسه بمحاولة جديدة. لكن السلة الواحدة تُدفع مرة واحدة فقط: إذا كان طلب آخر من السلة نفسها مدفوعًا بالفعل، يُنقل العميل إلى صفحة النجاح بدلًا من دفع جديد. وأي تغيير في السلة، بما فيه الكمية الجديدة، يُحسب كسلة جديدة تحتاج إلى دفعها الخاص.

في OpenCart 4 يبقى الطلب في صفحة الدفع إلى أن تظهر صفحة النجاح. وإذا أُغلق هذا الطلب في الأثناء (مثلًا ألغيته أو استرددته)، يُعاد العميل إلى صفحة الدفع مع الرسالة Your previous order was cancelled or refunded. Please confirm the order again. وإذا كان الطلب قد تم تقديمه بالفعل وأصبحت السلة تحتوي منتجات أخرى، فالرسالة هي Your previous order has already been placed for other cart contents. Please confirm the order of your current cart again. وفي الحالتين، يدفع Confirm Order التالي طلبًا جديدًا للسلة.

إذا تعذّر على IntaSend بدء الدفع، يبقى العميل في خطوة Confirm Order مع رسالة فوق الزر: IntaSend could not start the payment: والسبب الذي قدمته IntaSend، أو IntaSend is temporarily unavailable. Please try again in a moment or choose another payment method. وتُكتب التفاصيل في السجل. ولا يمكن دفع طلب إجماليه صفر عبر IntaSend.

يعمل الـ webhook أيضًا والمتجر في وضع الصيانة: يسمح OpenCart 3 بمرور طلبات امتدادات الدفع، ويضيف الامتداد في OpenCart 4 startup action يسمح بمرور الـ webhook وعودة العميل.

لا يقبل الامتداد إلا المدفوعات لمرة واحدة. لا تُرسل الاستردادات من المتجر إلى IntaSend، ولا توجد بطاقات محفوظة أو اشتراكات أو نموذج دفع مضمّن (منبثق). ولا يمكن إلغاء روابط الدفع الأقدم للطلب نفسه في IntaSend.

الطلبات

حالات الطلب

No status (missing order): أُرسل العميل إلى IntaSend ولم يدفع، أو فشل الدفع، أو لم تؤكد IntaSend الدفع بعد. وفي Sales > Orders لا تظهر هذه الطلبات إلا مع فلتر Order Status مضبوطًا على Missing Orders.

Paid Order Status (default Processing): تم تأكيد الدفع. تعرض ملاحظة فاتورة IntaSend، وطريقة الدفع في IntaSend، والمبلغ، والوضع (البيئة التجريبية أو التشغيل الفعلي)، وطريقة التأكيد (الـ webhook أو عودة العميل).

On Hold Status (default Pending): أبلغت IntaSend عن مبلغ أو عملة مختلفين عن إجمالي الطلب، أو عن دفع جزئي، أو عن دفع وصل بعد إلغاء الطلب. وتشرح الملاحظة ذلك. تحقق من الدفع في لوحة تحكم IntaSend ثم أكمل الطلب أو استرد الدفع. وإذا وصل الدفع الصحيح لاحقًا، ينتقل الطلب إلى Paid Order Status ويُبلَّغ العميل بالبريد الإلكتروني.

إذا وصل دفع ثانٍ لطلب مدفوع بالفعل، فلن يتغير الطلب. وتطلب منك ملاحظة استرداده في لوحة تحكم IntaSend إن كان مكررًا. أما الدفع لطلب في الحالة Refunded Status فيضيف ملاحظة فقط ولا يعيد فتح الطلب.

الملاحظات هي إدخالات في History الطلب، ولا يراها العميل.

تبويب VibeFox IntaSend Pay Gateway

في Sales > Orders افتح طلبًا دُفع عبر IntaSend. في أسفل صفحة الطلب، بجانب History وAdditional، يعرض تبويب VibeFox IntaSend Pay Gateway IntaSend checkout attempts الخاصة بالطلب (التاريخ، والمرجع، وعملية الدفع في IntaSend، والبيئة، والمبلغ، والفاتورة وطريقة الدفع، والنتيجة مع سبب الفشل)، وInvoices processed (الفاتورة، والحالة في IntaSend، والمبلغ والنتيجة)، وIntaSend notes الخاصة بالطلب. التبويب للقراءة فقط ويظهر للمستخدمين الذين لديهم صلاحية الوصول إلى الامتداد.

الاستردادات

لا تُرسل الاستردادات من المتجر إلى IntaSend. استرد الدفع في لوحة تحكم IntaSend، ثم سجّل الاسترداد في OpenCart يدويًا، مثلًا بتعيين الطلب إلى Refunded Status.

مفتاح الترخيص

يعمل الامتداد بمفتاح ترخيص VibeFox من vibefox.net. كتلة الترخيص License — VibeFox IntaSend Pay Gateway هي أول كتلة في Extensions > Extensions > Payments > VibeFox IntaSend Pay Gateway > Edit، فوق الإعدادات. ألصق المفتاح في License key وانقر على Activate. بعد ذلك تعرض الكتلة المفتاح مُخفى الأحرف، والحالة (مثل التاريخ الذي يبقى فيه الترخيص فعالًا ونطاقك)، والأزرار Check now لإعادة التحقق من الحالة، وChange key لإدخال مفتاح آخر، وRemove key لإزالة المفتاح من هذا المتجر. وتحتها السطر Product: opencart-payment-intasend والرابط 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.

من دون مفتاح فعّال، لا تظهر IntaSend للعملاء في صفحة الدفع. وإذا بدأ الدفع رغم ذلك، يرى العميل This payment method is not available. Please choose another one. ويظل مستخدم الإدارة الذي سجّل الدخول إلى الإدارة في المتصفح نفسه يرى طريقة الدفع في المتجر، مع العلامة (unlicensed — visible to admins only)، حتى تتمكن من إعداد الامتداد واختباره قبل شراء مفتاح. وفي OpenCart 4 لا تتوفر هذه المعاينة: لا يرى المتجر تسجيل دخول الإدارة، لذلك تبقى طريقة الدفع مخفية عن الجميع من دون مفتاح فعّال. وبعد أن تفتح صفحة Edit مرة واحدة، يظهر تذكير على Dashboard الإدارة. أغلقه بـ × لإخفائه لمدة 7 أيام. ولا تتأثر الطلبات الحالية: الدفعات التي بدأت بالفعل تظل تُؤكَّد.

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

استكشاف الأخطاء وإصلاحها

لا تظهر IntaSend في صفحة الدفع: تحقق من أن الترخيص فعّال، وأن Enable/Disable مفعّل، وأن مفاتيح الوضع الحالي مملوءة وتنتمي إلى ذلك الوضع: مفاتيح البيئة التجريبية (التي تحتوي على _test) في وضع الاختبار، ومفاتيح التشغيل الفعلي (التي تحتوي على _live) في وضع التشغيل الفعلي. ويشير مربع الحالة في أعلى صفحة الإعدادات إلى الخلل. ويجب أن تكون عملة الدفع لدى العميل مدعومة. وتحقق أيضًا من أن عنوان الدفع يقع ضمن Geo Zone المختارة، وأن الطلب يبلغ Total المحدد في الإعدادات.

تمت عملية الدفع لكن الطلب بقي بلا حالة: قد تستغرق تأكيدات M-Pesa لحظة. يُعيّن الـ webhook الحالة عندما تُبلغ IntaSend بالحالة النهائية. تحقق من أن رابط الـ webhook في لوحة تحكم IntaSend (البيئة التجريبية أو التشغيل الفعلي، بحسب الوضع الذي تستخدمه) مطابق تمامًا للرابط المعروض في Webhook URL، وأن التحدي هناك هو نفسه Webhook challenge. ويحصل الطلب على حالته أيضًا عندما يعود العميل إلى المتجر أو ينقر على Check again.

يرد الـ webhook بـ Ignored: webhook challenge not configured: حقل Webhook challenge فارغ. أدخل التحدي من لوحة تحكم IntaSend.

يرد الـ webhook بـ Invalid challenge: عبارة التحدي في IntaSend وفي الامتداد مختلفتان، أو أن الـ webhook لا يحمل عبارة تحدٍّ.

يرد الـ webhook بـ Verification unavailable, retry later أو Busy, retry later: تعذّر الوصول إلى IntaSend في تلك اللحظة، أو كان الطلب (سلته) يُؤكَّد بطلب آخر، أو تعذّر تعيين حالة الطلب. تُعيد IntaSend محاولة الـ webhook. والسبب مكتوب في السجل.

يرد الـ webhook بـ Invoice not verified أو Invoice does not match the reference: لم تؤكد IntaSend أن هذه الفاتورة تخص الطلب. ولا يتغير شيء.

يعرض رابط الـ webhook في المتصفح Method not allowed: هذا أمر طبيعي. يقبل الرابط الطلبات الصادرة من IntaSend فقط.

الطلب في On Hold Status: اقرأ الملاحظات في تبويب VibeFox IntaSend Pay Gateway. اختلف المبلغ أو العملة المدفوعان عن الطلب، أو كان الدفع جزئيًا، أو وصل بعد إلغاء الطلب. تحقق من الدفع في لوحة تحكم IntaSend.

يرى العميل خطأً بعد Confirm Order: انظر إلى حقل Log في صفحة الامتداد (فعّل Debug log لمزيد من التفاصيل). إذا كانت مفاتيح الوضع الحالي خاطئة، يرى العميل IntaSend is not available at the moment. Please choose another payment method or contact the store. أما This payment method is not available. فتعني أن جلسة الدفع لم تعد تطابق الطلب، أو أن طريقة الدفع أُوقفت في الأثناء: يُعيد العميل تحميل صفحة الدفع. وإذا قال السجل إن رابط العودة يحتوي على أحرف لا تقبلها IntaSend، فالسبب هو عنوان المتجر.

يرى العميل We could not match this payment to an order: رابط العودة تغيّر أو يخص طلبًا آخر. وإذا دفع العميل، فإن الـ webhook يُعيّن حالة الطلب على كل حال.

للمطورين: قبل إنشاء صفحة الدفع، يُطلق الامتداد حدث OpenCart باسم intasend_p_checkout_payload مع بيانات الطلب والطلب والوضع؛ ويمكن للحدث intasend_p_supported_currencies تغيير قائمة العملات.

إلغاء التثبيت

انتقل إلى Extensions > Extensions، واختر النوع Payments، ثم انقر على Uninstall (الزر الأحمر −) بجانب VibeFox IntaSend Pay Gateway. تُحذف مفاتيح الترخيص وحالته لهذا الامتداد دائمًا. ويحذف OpenCart دائمًا إعدادات الامتداد الخاصة به: Enable/Disable، وSort Order، وGeo Zone، وTotal، وحالات الطلب في قسم Orders، التي تعود إلى قيمها الافتراضية عند إعادة التثبيت. وتُحذف أيضًا أحداث OpenCart الخاصة بالامتداد (وفي OpenCart 4 أيضًا الـ startup action الذي يسمح بمرور الـ webhook وعودة العميل في وضع الصيانة). وإذا كان Delete data on uninstall مفعّلًا، تُحذف إعدادات البوابة الأخرى (العنوان، والوصف، ووضع الاختبار، والمفاتيح، وعبارة تحدي الـ webhook، ومفتاح سجل التصحيح) والسجل. وإذا كان معطّلًا، تُحفظ لإعادة التثبيت لاحقًا. تُحفظ دائمًا محاولات الدفع في IntaSend وفواتير الطلبات. وتحتفظ الطلبات الحالية بملاحظات الدفع الخاصة بها.

في OpenCart 4، لإزالة ملفات الامتداد أيضًا، انتقل بعد إلغاء التثبيت إلى Extensions > Installer، وانقر على Uninstall (زر − البرتقالي) بجانب VibeFox IntaSend Pay Gateway في قائمة الامتدادات المثبتة، ثم على Delete (زر سلة المهملات الأحمر) لحذف الحزمة المرفوعة.

IntaSend علامة تجارية مسجلة لمالكها. هذا الامتداد غير تابع لـ IntaSend ولا يحظى بتأييدها.