You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于用户角色在Stripe customer portal中过滤展示对应订阅产品

Stripe Customer Portal按用户角色展示产品实现方案

核心逻辑

不需要依赖Stripe全局配置,在生成用户的Portal跳转会话时,动态传入对应角色可见的产品列表即可实现隔离。

实现步骤

方案一:动态过滤产品(适合产品迭代频繁的场景)

  1. 给Stripe产品添加角色标记
  • 打开Stripe后台的产品管理页,分别给学生、教师对应的订阅产品添加元数据:键设为access_role,值对应为student/teacher,也可以通过Stripe API批量更新,示例如下:
// Node.js 示例
await stripe.products.update('你的学生产品ID', {
  metadata: { access_role: 'student' }
});
await stripe.products.update('你的教师产品ID', {
  metadata: { access_role: 'teacher' }
});
  1. 创建Portal会话时动态筛选产品
    生成跳转链接前,先获取当前登录用户的角色,拉取对应权限的产品传入会话配置:
// 1. 从你的业务系统获取当前用户角色和绑定的Stripe客户ID
const userRole = currentUser.role;
const stripeCustomerId = currentUser.stripe_customer_id;

// 2. 拉取当前角色可见的所有有效产品
const allowedProducts = await stripe.products.list({
  active: true,
  type: 'service',
  metadata: { access_role: userRole }
});

// 3. 格式化产品参数适配Portal要求
const portalProducts = allowedProducts.data.map(product => ({
  product: product.id,
  prices: [product.default_price] // 可按需指定该产品下要展示的价格
}));

// 4. 创建Portal会话
const session = await stripe.billingPortal.sessions.create({
  customer: stripeCustomerId,
  return_url: '你的平台用户中心跳转地址',
  configuration: {
    features: {
      subscription_update: {
        enabled: true,
        products: portalProducts // 仅展示过滤后的产品
      },
      // 其他Portal功能按需配置
      subscription_cancel: { enabled: true },
      invoice_history: { enabled: true }
    }
  }
});

// 5. 前端直接跳转session.url即可

方案二:多配置隔离(适合产品固定的场景)

如果你的订阅产品很少且不会频繁改动,可以用更简单的配置方案:

  • 打开Stripe后台的Customer Portal配置页,创建两个独立的配置:学生配置仅添加面向学生的产品,教师配置仅添加面向教师的产品,分别记录两个配置的ID
  • 创建Portal会话时根据用户角色传入对应配置ID即可:
const configMap = {
  student: '你的学生Portal配置ID',
  teacher: '你的教师Portal配置ID'
};
const session = await stripe.billingPortal.sessions.create({
  customer: stripeCustomerId,
  configuration: configMap[userRole],
  return_url: '你的平台用户中心跳转地址'
});

注意事项

  • 确保你使用的Stripe API版本不低于2022-08-01,否则可能不支持动态覆盖配置参数
  • 两种方案都不会修改全局Portal配置,不同角色的用户进入Portal后只能看到权限内的产品,不会出现越权可见的问题

内容的提问来源于stack exchange,提问作者Akash Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:54:03