如何創建 WooCommerce 支付網關
已發表: 2021-04-26您想創建接受您的自定義付款選項的 WooCommerce 付款網關嗎? 在本教程中,我想簡要地向您展示如何在 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 核心之後加載我們的類。 這使其成為針對致命錯誤的輔助檢查。
它還確保 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 = 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. 處理付款
這是創建支付網關時最重要的部分。 我們需要添加一個函數來處理訂單,告訴 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 > 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 重定向 [終極指南]
- 如何自定義 WooCommerce 產品頁面
- 如何在 WooCommerce 中以最低消費設置免費送貨
- 如何更改 WooCommerce 支付網關圖標
- 如何設置 WooCommerce 比特幣結賬
- 如何添加 WooCommerce 發票結帳頁面
- 如何添加基於 URL 的活動導航類
- 如何將 Stripe 與 WooCommerce 集成
- 如何刪除結帳按鈕 WooCommerce
- 如何免費發送到 Mpesa WooCommerce 付款
- 如何在 WooCommerce 結帳頁面上隱藏 PayPal 圖標
- 如何在頁腳 [HTML] 中添加 WooCommerce 支付圖標
- 如何在 WooCommerce 結帳頁面上更改 PayPal 圖標
- 如何在 WooCommerce 中將搜索添加到商店頁面
- 如何在 WooCommerce 中添加願望清單
- 如何檢查用戶是否登錄WordPress
- 如何從結帳中刪除 WooCommerce 付款選項
- 如何在 WooCommerce 中註銷時清除購物車
- 如何更改結帳端點 WooCommerce