以编程方式检查优惠券是否对 WooCommerce 中的用户有效

Check programmatically if a coupon is valid for a user in WooCommerce

我正在通过自定义仪表板表单以编程方式将优惠券应用于订阅,这样用户就不会通过标准购物车来应用它。它所做的只是将他们输入的代码输入到输入中,然后将其应用于子程序。

有没有一种方法可以像购物车执行大量验证一样针对用户验证优惠券(比如优惠券是否已使用,可以是重复优惠券等)。

有没有办法连接到验证而不是我手动写出所有不同的检查?这样做感觉不对,很可能会漏网之鱼

我在那里进行了一些基本检查,比如优惠券是否存在,然后是使用限制检查。

$subscription = new WC_Subscription( $_REQUEST['sub_id'] );
$coupon_code = $_REQUEST['voucher_code'];
$coupon = new WC_Coupon( $coupon_code );
if ($coupon->is_valid()) {

    $coupon_type = $coupon->get_discount_type();
    $coupon_amount = $coupon->get_amount();
    $total = $subscription->get_total();

    if($coupon->get_usage_count() < $coupon->get_usage_limit() || $coupon->get_usage_limit() == ""){
        $strcode = strtolower($coupon_code);
        foreach ( $coupons as $coupon ) {
            if($coupon->get_code() == $strcode){
                $subscription->remove_coupon( $coupon->get_code() );
            }
        }
        $subscription->apply_coupon( $coupon_code );
        $note = "Coupon " . $coupon_code . " has been applied to subscription";
        $subscription->add_order_note( $note );
        $subscription->calculate_totals();
    }
}

WC_Coupon method is_valid() does everything itself, as it uses WC_Discount method is_coupon_valid() that checks if coupon is valid for the user.

所以您不需要做任何比您已经在代码中完成的更多的事情。