Laravel 未使用优惠券 Billing/Cashier
Laravel not applying coupon using Billing/Cashier
我正在尝试在用户创建订阅时使用优惠券。
为此,我使用以下代码:
$user = Auth::user();
if(!empty($request->coupon)){
$user->subscription('monthly')->withCoupon($request->coupon)->create($request->stripeToken);
} else {
$user->subscription('monthly')->create($request->stripeToken);
}
我查看了$request->coupon
的价值,里面有我的优惠券。优惠券存在并且在 Stripe 中(这是通过编程方式验证的,所以我知道优惠券没问题)。
订阅是在 Stripe 中创建的,但按全额收费,不考虑优惠券。
优惠券在测试环境中,网站也在测试环境中,交易也是在测试环境中完成的。
检查是否使用 empty
函数设置对象 属性 不会产生预期的效果,因为 class 需要有 __isset
魔术方法为 empty
定义以处理不可访问的属性。
除此之外,Http\Illuminate\Request
class 使用 __get
访问输入参数,这意味着 __isset
在这种情况下甚至不起作用,因为 coupon
属性 并不是真正在class 内定义的。所以你的条件几乎肯定会进入 else
块与你当前的代码(即使你有 coupon
输入参数存在)。
这就是方法 has
存在的原因,用于确定请求是否包含输入项的非空值。所以改用这个:
if ($request->has('coupon'))
我正在尝试在用户创建订阅时使用优惠券。
为此,我使用以下代码:
$user = Auth::user();
if(!empty($request->coupon)){
$user->subscription('monthly')->withCoupon($request->coupon)->create($request->stripeToken);
} else {
$user->subscription('monthly')->create($request->stripeToken);
}
我查看了$request->coupon
的价值,里面有我的优惠券。优惠券存在并且在 Stripe 中(这是通过编程方式验证的,所以我知道优惠券没问题)。
订阅是在 Stripe 中创建的,但按全额收费,不考虑优惠券。
优惠券在测试环境中,网站也在测试环境中,交易也是在测试环境中完成的。
检查是否使用 empty
函数设置对象 属性 不会产生预期的效果,因为 class 需要有 __isset
魔术方法为 empty
定义以处理不可访问的属性。
除此之外,Http\Illuminate\Request
class 使用 __get
访问输入参数,这意味着 __isset
在这种情况下甚至不起作用,因为 coupon
属性 并不是真正在class 内定义的。所以你的条件几乎肯定会进入 else
块与你当前的代码(即使你有 coupon
输入参数存在)。
这就是方法 has
存在的原因,用于确定请求是否包含输入项的非空值。所以改用这个:
if ($request->has('coupon'))