วิธีสร้างเกตเวย์การชำระเงิน WooCommerce
เผยแพร่แล้ว: 2021-04-26คุณต้องการสร้าง WooCommerce Payment Gateway ที่ยอมรับตัวเลือกการชำระเงินแบบกำหนดเองของคุณหรือไม่? ในบทช่วยสอนนี้ ฉันต้องการแสดงให้คุณเห็นโดยย่อเกี่ยวกับวิธีสร้างเกตเวย์การชำระเงินใน WooCommerce เพื่อให้ลูกค้าของคุณชำระเงินผ่านเกตเวย์การชำระเงิน WooCommerce แบบกำหนดเองนี้
คุณสามารถสร้างเกตเวย์การชำระเงินของคุณเองได้ มี 2 วิธีในการบรรลุเป้าหมายนี้ คุณสามารถใช้ปลั๊กอินหรือโค้ดที่กำหนดเองได้
อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบคือปลั๊กอินจะทำให้ไซต์ของคุณขยายตัว นี่คือเหตุผลที่เราจะใช้ข้อมูลโค้ดที่กำหนดเอง
เราจะพูดถึงแต่ละขั้นตอนอย่างละเอียด เพื่อให้มือใหม่สามารถใช้วิธีนี้ได้
วิธีสร้างเกตเวย์การชำระเงิน 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->id
- $นี้->ไอคอน
- $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 Payment Gateways
ขั้นตอนสุดท้ายคือเพื่อให้แน่ใจว่าเกตเวย์การชำระเงินอยู่ภายใต้ WooCommerce > Settings > Checkout
เราจะใช้ตัวกรอง 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' );
บทสรุป
สิ่งที่คุณต้องทำเพื่อเพิ่มเกตเวย์การชำระเงินที่กำหนดเอง เราเพียงแค่ลอกแบบฟังก์ชันของเกตเวย์ "เช็ค"
หากคุณกำลังทำงานร่วมกับผู้ประมวลผลการชำระเงิน โปรดทราบว่าคุณจำเป็นต้องรวมข้อมูลการลงรายการบัญชีและรับข้อมูลจากผู้ประมวลผลการชำระเงิน
หากกระบวนการนี้ซับซ้อนเกินไป คุณสามารถจ้างนักพัฒนาที่ผ่านการรับรองได้ เพื่อให้แน่ใจว่าคุณจะไม่ทำลายไซต์ของคุณ
บทความที่คล้ายกัน
- การเปลี่ยนเส้นทาง WooCommerce หลังจากชำระเงิน : เปลี่ยนเส้นทางไปยังหน้าขอบคุณแบบกำหนดเอง
- WooCommerce Redirect หลังจากออกจากระบบ [สุดยอดคู่มือ]
- วิธีปรับแต่งหน้าผลิตภัณฑ์ WooCommerce
- วิธีตั้งค่าการจัดส่งฟรีด้วยการใช้จ่ายขั้นต่ำใน WooCommerce
- วิธีเปลี่ยนไอคอนเกตเวย์การชำระเงิน WooCommerce
- วิธีการตั้งค่า WooCommerce Bitcoin Checkout
- วิธีเพิ่มหน้าชำระเงินใบแจ้งหนี้ WooCommerce
- วิธีเพิ่มคลาสการนำทางที่ใช้งานอยู่ตาม URL
- วิธีผสานรวม Stripe กับ WooCommerce
- วิธีลบปุ่มชำระเงิน WooCommerce
- วิธีส่งไปยัง Mpesa WooCommerce การชำระเงินฟรี
- วิธีซ่อนไอคอน PayPal บนหน้าชำระเงิน WooCommerce
- วิธีเพิ่มไอคอนการชำระเงิน WooCommerce ในส่วนท้าย [HTML]
- วิธีเปลี่ยนไอคอน PayPal บนหน้าชำระเงิน WooCommerce
- วิธีเพิ่มการค้นหาไปยังหน้าร้านค้าใน WooCommerce
- วิธีเพิ่ม Wishlist ใน WooCommerce
- วิธีตรวจสอบว่าผู้ใช้ลงชื่อเข้าใช้ WordPress
- วิธีลบตัวเลือกการชำระเงิน WooCommerce จากการชำระเงิน
- วิธีล้างรถเข็นเมื่อออกจากระบบใน WooCommerce
- วิธีการเปลี่ยนจุดชำระเงิน WooCommerce