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