Nếu bạn muốn thêm phương thức thanh toán mới trong WooCommerce, bài viết này sẽ giúp bạn.

Thêm phương thức thanh toán mới trong WooCommerce

Để thêm phương thức thanh toán mới, bạn thêm đoạn mã này vào functions.php. Ví dụ mình thêm phương thức Mua thiếu.

add_filter('woocommerce_payment_gateways', 'add_custom_gateway_class');
function add_custom_gateway_class($gateways) {
    $gateways[] = 'WC_Gateway_Custom';
    return $gateways;
}

if (!class_exists('WC_Payment_Gateway')) {
    return;
}

class WC_Gateway_Custom extends WC_Payment_Gateway {
    public function __construct() {
        $this->id = 'custom_gateway';
        $this->icon = '';
        $this->has_fields = true;
        $this->method_title = 'Mua thiếu';
        $this->method_description = 'Sử dụng nhân phẩm để thanh toán đơn hàng.';
        $this->init_form_fields();
        $this->init_settings();
        $this->title = $this->get_option('title');
        $this->description = $this->get_option('description');
        add_action('woocommerce_update_options_payment_gateways_' . $this->id, [
            $this,
            'process_admin_options',
        ]);
    }

    public function init_form_fields() {
        $this->form_fields = [
            'enabled' => [
                'title' => 'Bật/Tắt',
                'type' => 'checkbox',
                'label' => 'Bật Mua thiếu',
                'default' => 'yes',
            ],
            'title' => [
                'title' => 'Tiêu đề',
                'type' => 'text',
                'description' => 'Bật Mua thiếu.',
                'default' => 'Mua thiếu',
                'desc_tip' => true,
            ],
            'description' => [
                'title' => 'Mô tả',
                'type' => 'textarea',
                'default' => 'Bạn có thể mua thiếu, sau đó muốn trả hay không thì tùy.',
            ],
        ];
    }

    public function process_payment($order_id) {
        $order = wc_get_order($order_id);
        $order->update_status(
            'on-hold', __('Đang chờ thanh toán', 'woocommerce')
        );
        wc_reduce_stock_levels($order_id);
        WC()->cart->empty_cart();
        return [
            'result' => 'success',
            'redirect' => $this->get_return_url($order),
        ];
    }
}

Chúc các bạn thành công!

5/5 (1 bình chọn)