本篇文章更新時間:2023/12/22
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
這需求其實原本是業主希望把「金流收取費用的成本」轉嫁給消費者的需求。所以如果選到信用卡付款,就照比例加收 x%,如果是超商付款就加收 x 元...等等
但先說,這其實會違反第三方金流的規範。藍新的金流服務平台服務條款 第二章 會員規範 之 第六條 平台產品使用規範 之 十九、 會員不得將本公司與會員約定之手續費或其他費用轉嫁於付款方之簽帳交易金額內,亦不得以其他任何理由附加價款予付款方,若有上述轉嫁或附加價款之行為時,會員須立即將轉嫁或附加款退還付款方。若有任何對付款方之不公平待遇,經查證屬實者,會員須負全責處理,概與本公司無涉。
不過技術是無辜的,這邊就是筆記一下如何根據選取的金流付款方式,來觸發其他運算,這邊舉例就是多增加一筆費用。
以下程式碼片段:
// ATM / 信用卡 : X <= 499 5%, X >= 500 1%
// 超商: 35 固定
function mxp_add_checkout_fee_for_gateway() {
$chosen_gateway = WC()->session->get('chosen_payment_method');
$total = WC()->cart->get_cart_contents_total();
if (in_array($chosen_gateway, array('ry_newebpay_atm', 'ry_newebpay_credit'))) {
if ($total < 500) {
$total = round($total * 0.05);
} else {
$total = round($total * 0.01);
}
WC()->cart->add_fee('平台服務費', $total);
}
if (in_array($chosen_gateway, array('ry_newebpay_cvs'))) {
WC()->cart->add_fee('平台服務費', 35);
}
}
add_action('woocommerce_cart_calculate_fees', 'mxp_add_checkout_fee_for_gateway');
function mxp_refresh_checkout_on_payment_methods_change() {
wc_enqueue_js("
$( 'form.checkout' ).on( 'change', 'input[name^=\'payment_method\']', function() {
$('body').trigger('update_checkout');
});
");
}
add_action('woocommerce_after_checkout_form', 'mxp_refresh_checkout_on_payment_methods_change');
跟以往物流運送方式的做法不同,切換金流方式的時候還要自己去觸發更新結帳頁面的片段(fragments)互動。才會去更新連動的結帳頁面資訊。
上述範例程式碼是搭配 RY WooCommerce Tools 金流外掛。實際上如果不是這個組合的話,記得要修改程式中的金流 Slug 。