Laravel集成Stripe仍显示已归档方案,如何隐藏已归档产品与价格?
解决Stripe已归档产品/价格计划显示问题
要隐藏已归档的产品和对应的价格计划,你需要从两个层面过滤:价格计划本身的活跃状态,以及关联产品的活跃状态,具体实现如下:
方案一:在控制器层面过滤(推荐)
直接在Stripe API请求时筛选活跃的计划,同时过滤掉产品已归档的条目,减少不必要的数据传输:
\Stripe\Stripe::setApiKey(config('services.stripe.secret')); // 1. 只请求活跃的价格计划,同时预加载关联的产品信息 $plans = \Stripe\Plan::all([ 'active' => true, 'expand' => ['data.product'] ]); // 2. 过滤掉产品已归档的计划 $plans = $plans->data->filter(function ($plan) { return $plan->product->active; });
方案二:在Blade视图中过滤
如果不想修改控制器逻辑,也可以在循环时直接判断状态:
@foreach($plans as $plan) {{-- 仅显示活跃的价格计划,且关联产品未归档 --}} @if($plan->active && $plan->product->active) <div class="form-check"> <input class="form-check-input" name="plan" type="radio" id="radio{{$plan->id}}" value="{{$plan->id}}" checked /> <label class="form-check-label" for="radio{{$plan->id}}">{{$plan->product->name}} (${{$plan->amount/100}}/{{$plan->interval}})</label> </div> @endif @endforeach
说明
- Stripe的
Plan::all()默认返回所有状态的价格计划,包括已停用的,所以需要通过active=true参数筛选活跃计划。 - 部分场景下,价格计划本身仍处于活跃状态,但对应的产品已被归档(
product.active=false),因此必须额外判断产品的活跃状态才能完全隐藏归档内容。
内容的提问来源于stack exchange,提问作者user20924381
相关产品推荐
相关产品推荐

