آیا می خواهید ووکامرس Payment Gateway ایجاد کنید که گزینه پرداخت سفارشی شما را بپذیرد؟ در این آموزش ، من می خواهم به طور خلاصه نحوه ایجاد دروازه پرداخت در ووکامرس را به شما نشان دهم تا به مشتریان خود امکان پرداخت از طریق این درگاه پرداخت سفارشی ووکامرس را بدهید.
این امکان وجود دارد که درگاه پرداخت سفارشی خود را ایجاد کنید. برای دستیابی به این هدف 2 راه وجود دارد. می توانید از افزونه یا کد سفارشی استفاده کنید.
با این حال ، مهم است که توجه داشته باشید که افزونه ها سایت شما را باد می کنند. به همین دلیل ما از قطعه کد سفارشی استفاده می کنیم.
ما هر مرحله را به تفصیل مورد بحث قرار می دهیم تا به مبتدیان اجازه دهیم از این روش استفاده کنند.
نحوه ایجاد درگاه پرداخت ووکامرس
در این پست ، ما افزونه ای برای افزودن درگاه پرداخت جدید ایجاد می کنیم. این بدان معناست که برای انجام این کار باید مهارت برنامه نویسی داشته باشید.
ما کلاس ووکامرس را گسترش می دهیم. ووکامرس چندین کلاس اصلی مانند درگاه پرداخت یا کلاس های ایمیل را در اختیار ما قرار می دهد.
این کلاس ها را می توان برای افزودن قابلیت های شخصی خود افزایش داد ، که در توسعه وقت شما صرفه جویی می شود. همچنین اطمینان حاصل می کند که افزونه شما به روشی استاندارد کار می کند.
کلاس WC_Payment_Gateway
کلاس WC_Payment_Gateway این را گسترش می دهد تا ساختار و عملکردهایی را که مخصوص روش های پرداخت است ، مانند توانایی دریافت کل سفارشات یا آدرس صفحه تشکر به ما ارائه دهد.
اگر این کلاس را گسترش دهیم ، می توانیم از ساختار بهره مند شویم. این کار برخی از عملکردها را برای ما انجام می دهد ، از جمله دریافت عنوان و توضیحات و نمایش آن در صفحه پرداخت.
توجه به این نکته ضروری است که همه درگاه های پرداخت در ووکامرس با گسترش کلاس WC_Payment_Gateway آغاز می شود.
در اینجا مراحلی وجود دارد که باید دنبال کنید:
1. بررسی کنید آیا ووکامرس فعال است یا خیر
از آنجا که ما کلاس ووکامرس را گسترش می دهیم ، باید فعال بودن آن را بررسی کنیم:
// مطمئن شوید ووکامرس فعال است if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;
2. کلاس فرزند خود را بسازید
برای انجام این کار ، ابتدا باید این را در یک تابع init بسته بندی کرده و بعداً از اولویت پیش فرض به plugins_loaded متصل کنیم.
پس از بررسی اینکه آیا ووکامرس فعال است ، کلاس خود را بعد از هسته ووکامرس بارگذاری می کنیم. این امر آن را به یک بررسی ثانویه در برابر خطاهای کشنده تبدیل می کند.
همچنین اطمینان می دهد که کلاس 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 sevencloner */ add_action( 'plugins_loaded', 'wc_offline_gateway_init', 11 ); function wc_offline_gateway_init() { class WC_Gateway_Offline extends WC_Payment_Gateway { // کد افزونه شما از اینجا شروع می شود } // پایان WC_Gateway_Offline کلاس }
3. Gateway را بسازید
از آنجا که ما کلاس خارج داریم ، باید تابع () __construct خود را بسازیم. این تضمین می کند که متغیرهایی که باید در کلاس خود وارد کنیم.
در اینجا متغیرهای مورد نیاز آمده است:
- $this->id
- $this->icon
- $this->has_fields = true or false (bool)
- $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. پردازش پرداخت
این مهمترین بخش هنگام ایجاد درگاه پرداخت است. ما باید یک تابع برای رسیدگی به پردازش سفارش اضافه کنیم و به ووکامرس بگوئیم که وضعیت باید چگونه باشد و مشتریان پس از استفاده به کجا می روند:
public function process_payment( $order_id ) { $order = wc_get_order( $order_id ); // علامت گذاری در حالت تعلیق (منتظر پرداخت هستیم) $order->update_status( 'on-hold', __( 'Awaiting offline payment', 'wc-gateway-offline' ) ); // کاهش سطح سهام $order->reduce_order_stock(); // حذف سبد خرید WC()->cart->empty_cart(); // بازگشت هدایت متشکرم 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. اضافه کردن به ووکامرس Payment Gateways
آخرین مرحله این است که اطمینان حاصل کنید که درگاه پرداخت در ووکامرس > Settings> Checkout در دسترس است.
ما از فیلتر woocommerce_payment_gateways استفاده می کنیم که مجموعه ای از همه دروازه های موجود را در اختیار ما قرار می دهد. این بدان معناست که ما gateway خود را به این آرایه اضافه می کنیم و سپس آرایه را با gateway اضافه شده برمی گردانیم.
function wc_offline_add_to_gateways( $gateways ) { $gateways[] = 'WC_Gateway_Offline'; return $gateways; } add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );
نتیجه
این تنها کاری است که باید برای افزودن یک درگاه پرداخت سفارشی انجام دهید. ما به سادگی عملکرد دروازه “Check” را کلون کرده ایم.
اگر با پردازنده پرداخت ادغام می شوید ، توجه به این نکته ضروری است که باید اطلاعات ارسال و دریافت از پردازنده پرداخت را در خود جای دهید.
اگر این فرایند بسیار پیچیده است ، می توانید یک توسعه دهنده واجد شرایط استخدام کنید. این کار باعث می شود سایت شما خراب نشود.