نموذج بوابة الدفع
يمنحك نموذج بوابة الدفع نقطة انطلاق لإنشاء بوابة دفع خاصة بنقاط البيع. وينشئ إضافة WordPress جاهزة للعمل في ملف PHP واحد يمكنك تثبيته وتخصيصه لتلبية احتياجاتك.
الميزات
رمز بسيط
ملف PHP واحد يتضمن الأساسيات فقط — سهل القراءة والتعديل
خاص بنقاط البيع
معطّل افتراضيًا في صفحة الدفع عبر الويب، ويُفعّل من خلال إعدادات WCPOS
إعداد تلقائي
يتولى برنامج نصي shell استبدال جميع العناصر النائبة نيابة عنك
إصدارات GitHub
ادفع تغيير رقم الإصدار، وستنشئ GitHub Actions ملف ZIP قابلًا للتنزيل
البدء
استنساخ مستودع النموذج
git clone https://github.com/wcpos/woocommerce-gateway-template.git
cd woocommerce-gateway-template
أو انقر زر استخدم هذا القالب في مستودع GitHub لإنشاء نسخة خاصة بك.
تشغيل برنامج الإعداد
./create-gateway.sh
سيطلب البرنامج بعض التفاصيل — اسم بوابة الدفع ووصفًا موجزًا واسم مستخدم GitHub — ثم ينشئ إضافة جاهزة للاستخدام في الدليل الذي تختاره.
تثبيت الإضافة
لديك خياران:
الخيار أ — نسخ المجلد مباشرةً (إذا كان لديك وصول إلى الخادم):
انسخ مجلد بوابة الدفع الذي تم إنشاؤه إلى دليل wp-content/plugins/ في موقعك.
الخيار ب — ضغط المجلد ورفعه (الأسهل لمعظم المستخدمين):
- اضغط المجلد الذي تم إنشاؤه في ملف
.zip - في WordPress، انتقل إلى الإضافات > أضف إضافة جديدة > رفع إضافة
- اختر ملف zip وانقر التثبيت الآن
تفعيلها في WCPOS
- انتقل إلى WP Admin > نقاط البيع > الإعدادات > الدفع
- ابحث عن بوابة الدفع الجديدة في القائمة وفعّلها
تكون بوابة الدفع معطّلة افتراضيًا في صفحة الدفع العادية عبر الويب. ويتحكم WCPOS في بوابات الدفع التي تظهر في نقاط البيع من خلال إعداداته الخاصة.
الإعداد اليدوي
إذا كنت تفضل عدم استخدام البرنامج النصي، يمكنك استبدال العناصر النائبة بنفسك. افتح كل ملف في محرر نصوص وابحث عن القيم التالية واستبدلها:
| العنصر النائب | ما يجب إدخاله | مثال |
|---|---|---|
{{GATEWAY_NAME}} | الاسم المعروض لبوابة الدفع | الدفع نقدًا |
{{GATEWAY_SLUG}} | معرّف آمن للاستخدام في URL (أحرف صغيرة وواصلات) | cash-payment |
{{GATEWAY_DESCRIPTION}} | وصف موجز لبوابة الدفع | قبول المدفوعات النقدية في WCPOS |
{{GATEWAY_DEFAULT_DESCRIPTION}} | النص الذي يظهر لأمين الصندوق عند الدفع | ادفع نقدًا عند نقطة البيع |
{{GITHUB_USERNAME}} | اسم مستخدم GitHub الخاص بك | kilbot |
{{REPO_NAME}} | اسم المستودع الخاص بك | cash-payment-gateway |
{{AUTHOR_NAME}} | اسمك | kilbot |
{{GATEWAY_ID}} | المعرّف المختصر مع شرطات سفلية بدلًا من الواصلات | cash_payment |
{{GATEWAY_CLASS_NAME}} | كتابة أول حرف من كل كلمة كبيرًا وربط الكلمات بشرطات سفلية | Cash_Payment |
{{GATEWAY_FUNCTION_PREFIX}} | مثل معرّف بوابة الدفع | cash_payment |
ثم أعد تسمية wcpos-{{GATEWAY_SLUG}}.php ليتطابق الاسم مع المعرّف المختصر الخاص بك (مثل wcpos-cash-payment.php).
يستخرج سكربت الإعداد تلقائيًا GATEWAY_ID وGATEWAY_CLASS_NAME وGATEWAY_FUNCTION_PREFIX من الاسم والمعرّف اللطيف (slug)، لذا لا تحتاج إلى التفكير فيها إلا عند إجراء الإعداد يدويًا.
آلية العمل
تسجل الإضافة المُنشأة فئة بوابة دفع في WooCommerce. إليك أهم النقاط:
$this->enabled = 'no'— يخفي بوابة الدفع من صفحة الدفع عبر الويب. ويفعّلها WCPOS في نقاط البيع وفقًا لإعدادات نقاط البيع.process_payment()— تستدعي$order->payment_complete()، ما يعلّم الطلب بأنه مدفوع ويتولى خفض المخزون تلقائيًا.init_form_fields()— تحدد حقلي العنوان والوصف اللذين يظهران في إعدادات WooCommerce.
تخصيص بوابة الدفع
إضافة حقول الدفع
إذا كانت بوابة الدفع تحتاج إلى إدخال من أمين الصندوق (مثل رقم مرجعي)، فتجاوز الطريقة payment_fields():
public function payment_fields() {
if ( $this->description ) {
echo wpautop( wptexturize( $this->description ) );
}
woocommerce_form_field( 'my_gateway_reference', array(
'type' => 'text',
'label' => __( 'Reference Number', 'your-text-domain' ),
'required' => true,
) );
}
يمكنك بعد ذلك قراءة القيمة المرسلة في process_payment() عبر $_POST['my_gateway_reference']. تذكّر تنقية أي إدخال باستخدام sanitize_text_field().
تغيير سلوك الدفع
يعلّم النموذج الافتراضي الطلبات بأنها مدفوعة فورًا. إذا كان سير عملك يتطلب الدفع لاحقًا (مثل الفاتورة)، فاستبدل payment_complete() بتحديث للحالة:
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
// Set to pending — the customer will pay later.
$order->update_status( 'pending', __( 'Awaiting payment', 'your-text-domain' ) );
// Stock must be reduced manually when not using payment_complete().
wc_reduce_stock_levels( $order_id );
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order ),
);
}
إجراء التغييرات والتحديث
بعد تثبيت بوابة الدفع، يمكنك مواصلة تعديل ملف الإضافة لضبط منطق الدفع. لتثبيت إصدار محدّث:
- عدّل
wcpos-your-slug.phpفي المجلد الذي تم إنشاؤه - حدّث رقم
Version:في ترويسة الإضافة (مثلًا من0.1.0إلى0.2.0) - اضغط المجلد وارفعه مجددًا عبر الإضافات > أضف إضافة جديدة > رفع إضافة، أو استبدل المجلد مباشرةً في
wp-content/plugins/
سيسألك WordPress عما إذا كنت تريد استبدال الإضافة الحالية عند رفع ملف zip بالاسم نفسه — انقر استبدال الحالية بالملف المرفوع للتحديث.
الإصدارات التلقائية باستخدام GitHub
إذا دفعت بوابة الدفع إلى مستودع GitHub، فسيشمل النموذج سير عمل GitHub Actions ينشئ الإصدارات تلقائيًا:
- حدّث رقم
Version:في ترويسة الإضافة - أنشئ commit وادفعه إلى الفرع
main - ترصد GitHub Actions تغيير الإصدار وتنشئ إصدارًا جديدًا يتضمن ملف ZIP قابلًا للتنزيل
يمكن للمستخدمين الآخرين بعد ذلك تنزيل ملف ZIP من صفحة الإصدارات في مستودعك وتثبيته مثل أي إضافة WordPress.
استكشاف الأخطاء وإصلاحها
بوابة الدفع لا تظهر في نقاط البيع
- تحقق من تفعيل الإضافة ضمن WP Admin > الإضافات
- انتقل إلى WP Admin > نقاط البيع > الإعدادات > الدفع وتأكد من تفعيل بوابة الدفع
- تحقق من تثبيت WooCommerce وتفعيله
تظهر بوابة الدفع في صفحة الدفع عبر الويب
- تأكد من تعيين
$this->enabled = 'no';في مُنشئ بوابة الدفع - يتجاوز WCPOS هذا الإعداد لطلبات نقاط البيع، لذا ينبغي ألا تظهر بوابة الدفع إلا في نقاط البيع
تبقى الطلبات بحالة 'قيد المعالجة' بدلًا من 'مكتمل'
- يحدد WooCommerce حالة الطلب وفقًا لأنواع المنتجات. تبقى الطلبات التي تتضمن منتجات مادية بحالة "قيد المعالجة" — وهذا سلوك طبيعي في WooCommerce. أما الطلبات التي تحتوي على منتجات افتراضية أو قابلة للتنزيل فقط فتُعلّم تلقائيًا بأنها "مكتمل".
المتطلبات
المراجع
- GitHub: woocommerce-gateway-template
- API بوابة دفع WooCommerce: وثائق WC_Payment_Gateway
بوابات أمثلة
تلك البوابات الموجودة تم بناؤها بنفس النهج وهي مراجع جيدة:
- الفاتورة عبر البريد الإلكتروني - ترسل بريدًا إلكترونيًا بالفاتورة حتى يتمكن العميل من الدفع لاحقًا
- الخروج عبر الويب - يعيد التوجيه إلى متجر الويب للدفع