【问题标题】:Check programmatically if a coupon is valid for a user in WooCommerce以编程方式检查优惠券是否对 WooCommerce 中的用户有效
【发布时间】:2021-05-22 12:39:05
【问题描述】:

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

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

有没有办法挂钩该验证,而不是我手动写出所有不同的检查?这样做感觉不对,而且很可能会漏网。

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

$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();
    }
}

【问题讨论】:

    标签: php validation woocommerce coupon woocommerce-subscriptions


    【解决方案1】:

    WC_Coupon method is_valid() 自己做所有事情,因为它使用WC_Discount 方法is_coupon_valid() that checks if coupon is valid for the user

    因此,您不需要在代码中完成的任何其他操作。

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2017-01-23
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多