1

我正在尝试在创建时将优惠券应用于用户的订阅。

为此,我使用以下代码:

$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 中创建的,但按全额计费,不考虑优惠券。

优惠券在测试环境中,网站也是——交易也在测试环境中进行。

4

1 回答 1

2

检查是否使用该empty函数设置了对象属性不会产生预期的效果,因为该类需要__isset定义魔术方法empty才能处理不可访问的属性。

除此之外,Http\Illuminate\Request该类用于__get访问输入参数,这意味着__isset在这种情况下甚至无法正常工作,因为该coupon属性并未真正在类中定义。因此,您的情况几乎肯定会使用当前代码进入else块(即使您存在coupon输入参数)。

这就是该方法has存在的原因,用于确定请求是否包含输入项的非空值。所以改用这个:

if ($request->has('coupon'))
于 2015-05-13T09:44:20.490 回答