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 内で作成されますが、クーポンを考慮せずに全額が請求されます。

クーポンは Web サイトと同様にテスト環境にあります。トランザクションもテスト環境で行われます。

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 に答える