كيفية إنشاء بوابة دفع WooCommerce

نشرت: 2021-04-26

قم بإنشاء بوابة دفع WooCommerce هل تريد إنشاء WooCommerce Payment Gateway التي تقبل خيار الدفع المخصص الخاص بك؟ في هذا البرنامج التعليمي ، أود أن أوضح لك بإيجاز كيفية إنشاء بوابة دفع في WooCommerce للسماح لعملائك بالدفع من خلال بوابة الدفع WooCommerce المخصصة.

من الممكن إنشاء بوابة الدفع المخصصة الخاصة بك. هناك طريقتان لتحقيق ذلك. يمكنك استخدام إما مكون إضافي أو رمز مخصص.

ومع ذلك ، من المهم ملاحظة أن المكونات الإضافية ستضخم موقعك. هذا هو السبب في أننا سنستخدم مقتطف رمز مخصص.

سنناقش كل خطوة بالتفصيل ، للسماح للمبتدئين باستخدام هذه الطريقة.

كيفية إنشاء بوابة دفع WooCommerce

في هذا المنشور ، سننشئ مكونًا إضافيًا لإضافة بوابة دفع جديدة. هذا يعني أنك بحاجة إلى مهارات البرمجة للقيام بذلك.

سنقوم بتمديد فئة WooCommerce. يزودنا WooCommerce بالعديد من الفئات الأساسية ، مثل بوابة الدفع أو فئات البريد الإلكتروني.

يمكن تمديد هذه الفئات لإضافة الوظائف الخاصة بك ، مما يوفر الوقت في التطوير. يضمن أيضًا أن المكون الإضافي الخاص بك يعمل بطريقة قياسية.

فئة WC_Payment_Gateway

توسع فئة WC_Payment_Gateway لتوفر لنا الهيكل والوظائف التي ستكون خاصة بطرق الدفع ، مثل القدرة على الحصول على إجماليات الطلبات أو عنوان URL لصفحة الشكر.

يمكننا الاستفادة من الهيكل إذا قمنا بتوسيع هذه الفئة. سيتعامل هذا مع بعض الوظائف بالنسبة لنا ، بما في ذلك الحصول على العنوان والوصف وعرضه على صفحة الخروج.

من المهم ملاحظة أن جميع بوابات الدفع في WooCommerce ستبدأ بتوسيع فئة WC_Payment_Gateway.

فيما يلي الخطوات التي يجب عليك اتباعها:

1. تحقق مما إذا كان WooCommerce نشطًا

نظرًا لأننا سنقوم بتوسيع فئة WooCommerce ، نحتاج إلى التحقق مما إذا كانت نشطة:

// Make sure WooCommerce is active

if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;

2. بناء فئة طفلك

للقيام بذلك ، نحتاج أولاً إلى التفاف هذا في دالة init وربطها في plugins_loaded بعد الأولوية الافتراضية.

بعد أن نتحقق مما إذا كان WooCommerce نشطًا ، نقوم بتحميل صفنا بعد WooCommerce core. هذا يجعله فحصًا ثانويًا ضد الأخطاء الفادحة.

كما يضمن توفر فئة WC_Payment_Gateway. o تمديد الفصل ، ستتبع التنسيق:

يمتد الفصل My_Child_Class The_Parent_Class {}

إليك كيف سيبدو هذا في المكون الإضافي الخاص بنا:

/**

* Offline Payment Gateway

* @class       WC_Gateway_Offline

* @extends     WC_Payment_Gateway

* @version     1.0.0

* @package     WooCommerce/Classes/Payment

* @author      Njengah

*/

add_action( 'plugins_loaded', 'wc_offline_gateway_init', 11 );

function wc_offline_gateway_init() {

class WC_Gateway_Offline extends WC_Payment_Gateway {

// You plugin code starts here

} // end \WC_Gateway_Offline class

}

3. إنشاء البوابة

نظرًا لأن لدينا فصلًا دراسيًا ، نحتاج إلى بناء وظيفة __construct () الخاصة بنا. هذا يضمن أن المتغيرات التي نحتاج إلى تضمينها في صفنا.

فيما يلي المتغيرات المطلوبة:

  • $ هذا-> معرف
  • $ this-> icon
  • $ this-> has_fields = صحيح أو خطأ (منطقي)
  • $ this-> method_title
  • $ this-> method_description

بعد ضبط المتغيرات ، سيحتاج المنشئ إلى بعض الوظائف الأخرى.

سيتم تعيين حقول النموذج في وظيفة init_form_fields (). تضيف هذه الوظيفة جميع حقول الإعدادات مثل تمكين البوابة وإضافة عنوان.

$this->init_form_fields();
$this->init_settings();

4. تهيئة حقول النموذج

في هذا القسم ، سننشئ وظيفة init_form_fields () لإعداد حقول النموذج لبوابة الدفع الخاصة بنا.

لا تفعل الوظيفة شيئًا في الفصل الرئيسي ، لكنها تتأكد من عدم وجود أخطاء فادحة إذا لم تقم بتجاوزها.

ومع ذلك ، سنمنحه بعض الوظائف في فصل الأطفال لدينا.

يتم تمكين الحقول الأساسية التي يجب تضمينها العنوان والوصف.

/**

* Initialize Gateway Settings Form Fields

*/

public function init_form_fields() {

$this->form_fields = apply_filters( 'wc_offline_form_fields', array(

'enabled' => array(

'title'   => __( 'Enable/Disable', 'wc-gateway-offline' ),

'type'    => 'checkbox',

'label'   => __( 'Enable Offline Payment', 'wc-gateway-offline' ),

'default' => 'yes'

),

'title' => array(

'title'       => __( 'Title', 'wc-gateway-offline' ),

'type'        => 'text',

'description' => __( 'This controls the title for the payment method the customer sees during checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Offline Payment', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'description' => array(

'title'       => __( 'Description', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Payment method description that the customer will see on your checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Please remit payment to Store Name upon pickup or delivery.', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'instructions' => array(

'title'       => __( 'Instructions', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Instructions that will be added to the thank you page and emails.', 'wc-gateway-offline' ),

'default'     => '',

'desc_tip'    => true,

),

) );

}

5. معالجة الدفع

هذا هو القسم الأكثر أهمية عندما يتعلق الأمر بإنشاء بوابة دفع. نحتاج إلى إضافة وظيفة للتعامل مع معالجة الطلب ، لإخبار WooCommerce بالحالة التي يجب أن تكون عليها والمكان الذي يذهب إليه العملاء بعد استخدامه:

public function process_payment( $order_id ) {

$order = wc_get_order( $order_id );

// Mark as on-hold (we're awaiting the payment)

$order->update_status( 'on-hold', __( 'Awaiting offline payment', 'wc-gateway-offline' ) );

// Reduce stock levels

$order->reduce_order_stock();

// Remove cart

WC()->cart->empty_cart();

// Return thankyou redirect

return array(

'result'    => 'success',

'redirect'  => $this->get_return_url( $order )

);

}

6. أضف معلومات بوابة الدفع إلى الطلبات المستلمة ورسائل البريد الإلكتروني

تتطلب البوابة التي أضفناها مزيدًا من التعليمات لإتمام الدفع. نحتاج إلى التأكد من عرض هذه الإرشادات في كل من صفحة الشكر ورسائل البريد الإلكتروني الخاصة بالطلب ، باستخدام طريقتي thankyou_page () و email_instructions () كعب.

/**

* Output for the order received page.

*/

public function thankyou_page() {

if ( $this->instructions ) {

echo wpautop( wptexturize( $this->instructions ) );

}

}

/**

* Add content to the WC emails.

*

* @access public

* @param WC_Order $order

* @param bool $sent_to_admin

* @param bool $plain_text

*/

public function email_instructions( $order, $sent_to_admin, $plain_text = false ) {

if ( $this->instructions && ! $sent_to_admin && 'offline' === $order->payment_method && $order->has_status( 'on-hold' ) ) {

echo wpautop( wptexturize( $this->instructions ) ) . PHP_EOL;

}

}

7. أضف إلى بوابات الدفع WooCommerce

الخطوة الأخيرة هي التأكد من أن بوابة الدفع متاحة ضمن WooCommerce> الإعدادات> الخروج .

سنستخدم مرشح woocommerce_payment_gateways الذي يمنحنا مجموعة من جميع البوابات المتاحة. هذا يعني أننا سنضيف بوابتنا إلى هذه المصفوفة ، ثم نعيد المصفوفة مع إضافة بوابتنا.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

استنتاج

هذا كل ما عليك فعله لإضافة بوابة دفع مخصصة. لقد قمنا ببساطة باستنساخ وظائف بوابة "التحقق".

إذا كنت تتكامل مع معالج الدفع ، فمن المهم ملاحظة أنك بحاجة إلى دمج النشر وتلقي المعلومات من معالج الدفع.

إذا كانت هذه العملية معقدة للغاية ، يمكنك استئجار مطور مؤهل. سيضمن ذلك عدم تعطل موقعك.

مقالات مماثلة

  1. إعادة توجيه WooCommerce بعد تسجيل الخروج [الدليل النهائي]
  2. كيفية تخصيص صفحات منتج WooCommerce
  3. كيفية تغيير WooCommerce Checkout Endpoints