在WooCommerce 搭建的某些系统中,订单的金额有时候会为 0,比如免费赠送的商品、免费领取小样、使用优惠券后购物车总金额为 0 等等情况。WooCommerce 默认还是需要支付一下,生成订单,以便后续处理。
当购物车金额为 0 时,如果默认选择了线上支付网关,这些支付网关一般都会因为支付金额为 0 而报错,导致支付失败。其实金额为 0 时,WooCommerce 是可以免支付直接下单的。
WooCommerce 免支付直接下单的代码
在下面的代码中,我们用 woocommerce_cart_needs_payment 这个Filter,过滤 $need_payment
参数,当订单金额为0时,设置该参数为 0, 这样购物车中的支付按钮就会变成下单按钮,点击这个下单按钮,就可以免支付直接下单了。
add_filter( 'woocommerce_cart_needs_payment', function($need_payment, $cart){
if($cart->get_total('edit') == 0){
$need_payment = false;
}
return $need_payment;
}, 10,2);
除了购物车为 0 时,免支付下单,在一些预定系统,询价系统中,也是需要免支付直接下单的,我们参考上面的代码,修改 $need_payment
参数为 false 即可,具体实现代码跟据实际情况调整即可。