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

WooCommerce hỗ trợ rất nhiều cổng thanh toán mặc định như Chuyển khoản ngân hàng, COD, PayPal,… Tuy nhiên, nếu bạn cần tự tạo một phương thức thanh toán riêng (ví dụ: thanh toán sau, trả góp, v.v…), thì WooCommerce cũng hỗ trợ mở rộng dễ dàng thông qua mã PHP.

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

Trong bài viết này, mình sẽ hướng dẫn bạn tạo một phương thức thanh toán mới mang tên “Mua thiếu”, hoàn toàn có thể chỉnh sửa theo nhu cầu.

Thêm phương thức thanh toán mới vào 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.

// Đăng ký gateway tùy chỉnh
add_filter('woocommerce_payment_gateways', function ($gateways) {
    $gateways[] = 'WC_Gateway_Custom';
    return $gateways;
});

// Đảm bảo WC_Payment_Gateway đã có sẵn
if (!class_exists('WC_Payment_Gateway')) return;

// Định nghĩa gateway "Mua thiếu"
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' => 'Tiêu đề hiển thị ở trang thanh toán.',
                '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);

        if (!$order) {
            return ['result' => 'failure'];
        }

        $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),
        ];
    }
}

Kết quả

Sau khi thêm đoạn mã trên, bạn sẽ thấy phương thức thanh toán “Mua thiếu” hiển thị trong phần WooCommerce > Cài đặt > Thanh toán.

Bạn có thể bật/tắt và chỉnh sửa nội dung mô tả hiển thị cho người mua.

Ứng dụng thực tế

  • Tạo phương thức thanh toán đặc biệt cho khách quen
  • Tạo cổng “Đặt hàng trước – thanh toán sau”
  • Kết nối nội bộ hoặc demo tính năng không cần thanh toán thật

Lưu ý

  • Mọi chỉnh sửa nên thực hiện trong child theme hoặc plugin riêng để tránh mất khi cập nhật theme.
  • Nếu bạn muốn mở rộng thêm tính năng nâng cao như gửi email riêng, ghi log, kết nối API bên thứ 3,… có thể thêm vào class này theo nhu cầu.

Chúc bạn thêm cổng thanh toán thành công!

Bình Luận


  • Không có bình luận.