Code thêm phụ phí khi khách chọn thanh toán khi nhận hàng (COD) trong WooCommerce
Bài viết này mình sẽ hướng dẫn bạn cách thêm phụ phí khi khách chọn thanh toán khi nhận hàng (COD) trong WooCommerce nhé.
Đơn COD shop phải chịu thêm tiền thu hộ của đơn vị vận chuyển, chưa kể tỉ lệ khách không nhận hàng cao hơn hẳn đơn trả trước. Nhiều shop muốn cộng một khoản phí nhỏ vào đơn COD để bù chi phí này và khuyến khích khách trả trước, nhưng WooCommerce mặc định không có chỗ nào để thu phí theo phương thức thanh toán. Muốn có thì bạn phải code thêm bằng PHP nhé.
Mục lục nội dung bài viếtHiện
Thêm code phụ phí COD
Bạn chỉ cần thêm code dưới vào cuối file functions.php của child theme nhé. Nhớ sao lưu file trước khi sửa, và đừng chèn vào theme cha vì khi theme cập nhật sẽ mất code.
<?php
// Thêm phụ phí khi khách chọn thanh toán khi nhận hàng (COD) trong WooCommerce
// Cách dùng: dán code này vào cuối file functions.php của child theme,
// phí tự cộng vào tổng đơn khi khách chọn COD ở trang thanh toán
add_action('woocommerce_cart_calculate_fees', 'nn_phi_thanh_toan_cod', 20);
function nn_phi_thanh_toan_cod($cart) {
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
if (!WC()->session) {
return;
}
$phuong_thuc = WC()->session->get('chosen_payment_method');
if ('cod' !== $phuong_thuc) {
return;
}
$phi = 20000;
$cart->add_fee('Phí thu hộ (COD)', $phi, false);
}
Code trên móc vào hook woocommerce_cart_calculate_fees, hook này chạy mỗi lần WooCommerce tính lại tổng đơn. Hàm đọc phương thức thanh toán khách đang chọn qua WC()->session->get(‘chosen_payment_method’), nếu đúng là cod (mã của phương thức Thanh toán khi nhận hàng) thì cộng thêm một khoản phí bằng hàm $cart->add_fee() với nhãn “Phí thu hộ (COD)”. Khách đổi sang chuyển khoản hay ví điện tử thì phí tự biến mất, vì hook chạy lại ngay khi khách đổi phương thức ở trang thanh toán. Tham số thứ ba của add_fee đang là false, tức phí này không chịu thuế.
Kiểm tra phụ phí COD ở trang thanh toán
Bạn thêm một sản phẩm vào giỏ rồi ra trang thanh toán, chọn phương thức Thanh toán khi nhận hàng thì cột tổng đơn sẽ xuất hiện thêm dòng “Phí thu hộ (COD)” 20.000đ và tổng cộng tăng đúng 20.000đ. Đổi sang phương thức khác thì dòng phí biến mất ngay, tổng đơn trở về như cũ. Phí này cũng hiện trong đơn hàng ở trang quản trị và trong email xác nhận đơn, nên khách và shop đều thấy rõ.

Lưu ý khi dùng
Con số 20000 trong code là mức phí thu hộ của shop bạn, bạn đổi thành mức thực tế của mình là được, ví dụ 15000 hoặc 30000. Nếu shop muốn thu phí theo tỉ lệ phần trăm thay vì phí cố định thì thay $phi = 20000 bằng phép tính theo tổng giỏ, ví dụ $phi = $cart->get_subtotal() * 0.02 để thu 2% giá trị đơn. Phí chỉ cộng khi khách chọn COD, nên lần đầu khách vào trang giỏ hàng chưa chọn phương thức thì chưa thấy phí, đó là đúng logic của code chứ không phải lỗi. Tính năng này đi chung với bài code thêm checkbox gói quà ở trang thanh toán trong WooCommerce là thành combo tùy biến trang thanh toán cho shop.
Kết luận
Vậy là chỉ với 1 đoạn code ngắn bạn đã thêm phụ phí khi khách chọn thanh toán khi nhận hàng (COD) trong WooCommerce mà không cần cài thêm plugin rồi nhé. Tính năng này đi chung với bài code thêm checkbox gói quà ở trang thanh toán trong WooCommerce và bài code hiển thị số tiền tiết kiệm được ở giỏ hàng trong WooCommerce là thành bộ công cụ tính phí và hiển thị tổng tiền rõ ràng hơn cho shop WooCommerce.
Nếu cần mình kèm 1-1 về WooCommerce thì cứ liên hệ mình nhé.
