19. Design BiliBili 大会员交易系统
在数字化浪潮席卷的当下,业务的高效运营与创新发展离不开强大的技术支撑。对于各类线上业务而言,交易系统作为连接用户与服务的关键枢纽,其成熟度与完整性直接决定了业务的竞争力。一套卓越的交易系统,不仅是业务流程的数字化载体,更是提升运营效率、优化用户体验、推动业务创新的核心驱动力。
Reference: B 站|大会员交易系统建设
01 前言
大会员业务精心打造的交易系统,正是这样一个集高效、灵活、稳定于一身的强大平台,它以模块化的架构、先进的技术组件和完善的功能体系,为业务的持续增长和生态的繁荣发展奠定了坚实基础。
1.1 系统架构全景洞察
大会员交易系统采用模块化设计理念,将复杂的交易流程拆解为交易、订单、签约、商品及清结算等多个核心模块。这些模块既相互独立又紧密协同,共同驱动着整个交易链路的顺畅运转,构建起一个高效、灵活且易于维护的系统架构,确 保系统能够快速响应业务需求的变化,为业务的创新发展提供有力支持。
因我们本身所属业务的特性,所以设计的交易系统可能跟传统电商的交易系统不同,更适配虚拟物品相关的业务。
1.2 核心流程深度解析
交易系统的核心流程从用户下单的那一刻开始启动,订单作为贯穿始终的关键纽带,串联起支付、履约、退款等各个环节。在这个过程中,订单系统负责维护交易状态、管理交易生命周期,与商品系统、支付系统、营销系统以及清结算系统紧密配合,共同完成整个交易流程。每一个环节都经过精心设计和严格把控,确保交易的顺利进行和数据的安全可靠。
02 架构设计实践
2.1 系统架构图

2.2 核心流程示例
交易系统的核心流程始于用户下单,订单贯穿支付、履约、退款等环节。订单系统负责维护交易状态和生命周期,与商品系统、支付系统、营销系统、清结算系统协同完成整个交易的流程。

03 核心技术组件说明
3.1 交易配置
3.1.1 业务身份管理
业务身份管理为每个业务分配唯一 ID,该 ID 在整个订单、支付和结算链路中贯穿始终,为每个业务颁发了一张专属 “身份证”,凭借这一 ID,不同业务的数据得以相互隔离且可精准追踪,有力保障了业务管理的清晰性和数据的完整性。
| 业务名称 (Business Name) | 业务标识 (businessId) | 负责人 (Owner) | 描述 (Description) | 状态 (Status) |
|---|---|---|---|---|
| 大会员购买 (VIP Purchase) | OGV-CHARGE | 张三 | OGV 大会员月卡/年卡购买 (Monthly/Annual VIP plan) | Active |
| 活动礼包 (Event Bundle) | ACTIVITY-GIFT | 李四 | 限时活动礼包(可带优惠券) (Timed gift packs with coupons) | Active |
| 直播间送礼 (Live Gifting) | LIVE-REWARD | 王五 | 直播间道具、礼物打赏支付 (In-stream virtual gift payment) | Paused |
| 国际版订阅 (Global VIP) | INTL-VIP | 刘六 | 国际版大会员订阅 (International subscription plan) | Active |
3.1.2 ⽀付中枢配置
- 支持灵活选择支付渠道和优先级,能够根据业务需求和用户偏好,快速切换和调整支付渠道顺序。
- 同时,通过管理支付协议模板,实现前端展示与不同支付需求的快速适配。
{
// 当前业务的唯一标识,建议全大写+中划线
"businessId": "OGV-CHARGE",
// 默认启用的支付渠道(用于兜底或全平台通用)
"defaultPayChannels": ["bwallet", "wechat", "alipay"],
// 各终端(平台)下的支付渠道优先级配置,前端根据此顺序展示支付选项
"channelPriority": {
"ios": ["applepay"], // iOS端优先使用 Apple Pay
"android": ["wechat", "bwallet"], // 安卓端优先使用微信和哔哩钱包
"web": ["bwallet", "alipay"] // Web端优先用哔哩钱包,其次是支付宝
},
// 支付前展示给用户的协议列表(如服务协议、自动续费说明等)
"agreements": [
{
"title": "自动续费说明", // 前端展示的协议标题
"url": "https://www.bilibili.com/protocol/vip-auto" // 跳转链接
},
{
"title": "用户服务协议",
"url": "https://www.bilibili.com/protocol/vip-terms"
}
],
// 支付面板的视觉风格(可选值如:light、dark、自定义主题名)
"theme": "dark",
// 是否启用风控校验(默认 true,可用于调试或灰度关闭风控)
"enableRiskControl": true,
// 是否启用协议弹窗模式(true 表示点击“支付”前必须勾选协议)
"requireAgreementConfirmation": true,
// 面板展示名称(可用于配置多语言或自定义业务标题)
"panelTitle": "购买大会员",
// 支持的语言(用于国际化,前端可自动加载对应语言资源)
"supportedLocales": ["zh-CN", "en-US", "ja-JP"]
}
3.1.3 ⻛险控制
通过风控控制通过主动防御(如黑名单)和智能拦截机制(如恶意退款),识别并阻止异常交易,保障支付安全。
{
"businessId": "OGV-CHARGE",
// 是否启用风控
"enableRiskControl": true,
// 黑名单配置(支持按用户ID、IP、设备ID等维度)
"blacklist": {
"userIds": ["user_1024", "user_test_black"],
"ipAddresses": ["123.45.67.89", "10.20.30.40"],
"deviceIds": ["device123", "emulator456"]
},
// 风控评分规则(score-based,越高风险越大)
"riskRules": [
{
"ruleName": "新注册用户限制",
"condition": "user.registerDays < 3",
"score": 30,
"description": "新用户注册时间小于3天"
},
{
"ruleName": "大额订单",
"condition": "order.amount > 500",
"score": 40,
"description": "订单金额大于500元"
},
{
"ruleName": "高风险支付方式",
"condition": "order.payMethod == 'credit_card'",
"score": 20,
"description": "使用信用卡支付"
}
],
// 总评分超过该阈值则拦截支付
"riskThreshold": 60,
// 命中风控时的处理动作
"actionOnBlock": {
"type": "REJECT",
"message": "当前交易存在风险,已被拦截。如有疑问请联系客服。"
}
}
动态规则配置
| 规则名称 | 条件 | 加分 | 拦截阈值 |
|---|---|---|---|
| 新用户下单 | 注册天数 < 3 | +30 | |
| 异地登录下单 | 登录 IP 与常用城市不一致 | +20 | |
| 高额订单 | 单笔金额 ≥ 500 元 | +40 | |
| 合计评分超阈值 | 总分 ≥ 60,执行支付拦截 | 拦截 | 60 |
黑名单配置
| 类型 | 值 | 来源 | 生效时间 | 状态 |
|---|---|---|---|---|
| IP | 123.45.67.89 | 安全策略引擎 | 2025-06-15 | 启用中 |
| 用户 ID | user_9988 | 客 服手动标记 | 2025-06-20 | 启用中 |
| 设备 ID | a1b2c3d4e5f6 | 行为异常检测 | 2025-07-01 | 启用中 |
3.2 订单服务
- 订单服务涵盖交易流程编排、业务数据管理和交易数据安全。
- 它维护订单从创建到完结的全生命周期,通过状态机模式管理订单状态流转
- 支持超时取消和自动确认等规则。
- 订单系统提供实时数据查询和业务指标分析,借助分布式事务保障数据一致性,通过分级隔离的熔断降级机制应对流量洪峰,建立自动化对账体系防控资金风险。
3.2.1 交易流程编排
交易场景中,订单的生命周期分为:
| 阶段 | 状态标识 | 说明 | 可流转目标状态 |
|---|---|---|---|
| 创建订单 | PENDING | 用户点击“立即购买”后生成订单,尚未支付 | PAID, CANCELLED, FAILED, CLOSED |
| 支付完成 | PAID | 支付完成但尚未履约(待发货/下发) | FULFILLED, FULFILL_FAIL, REFUNDED, PARTIALLY_REFUNDED |
| 履约完成 | FULFILLED | 商品或权益已成功下发 | COMPLETED, REFUNDED, PARTIALLY_REFUNDED |
| 自动完成 | COMPLETED | 用户未手动确认收货,自动完成 | —— TERMINAL STATE |
| 用户取消 | CANCELLED | 用户主动取消或支付超时取消 | —— TERMINAL STATE |
| 支付失败 | FAILED | 支付过程中失败或被拦截 | —— TERMINAL STATE |
| 已退款 | REFUNDED | 成功退款,商品已回收 | —— TERMINAL STATE |
| 部分退款 | PARTIALLY_REFUNDED | 部分金额退回 | REFUNDED(若继续退款)、COMPLETED(若仍部分履约成功) |
| 商品发放失败 | FULFILL_FAIL | 道具/权益发放失败,需补偿或人工介入 | FULFILLED(补发成功)、REFUNDED, PARTIALLY_REFUNDED, CLOSED |
| 关单 | CLOSED | 订单已关闭,无法再进行任何操作 | —— TERMINAL STATE |
支持超时取消、自动确认等自动化规则
| 规则类型 | 示例配置 | 实现说明 |
|---|---|---|
| 支付超时取消 | 未在 15 分钟内支付则关闭订单 | 可由定时任务或 Redis 延时队列触发 |
| 自动确认收货 | 履约后 7 天自动确认订单完成 | 通过订单状态触发自动流转 |
| 保底关单 | 创建后 30 天无动作则关单 | 防止长尾订单遗留造成数据污染 |
3.2.2 业务数据管理
订单提供了完成的交易数据管理能力,提供了实时的订单数据查询服务,以及业务的数据指标的分析。
订单业务数据查询与分析场景
| 场景 | 功能说明 | 使用角色 | 查询维度示例 | 数据来源 | 常用工具或渠道 |
|---|---|---|---|---|---|
| 用户查询订单 | 用户可查看自己的历史订单、退款进度、权益状态、支付方式、发票信息等 | C 端用户 | userId, orderId, status | 订单主表、退款表、履约记录表 | App 个人中心、Web 订单页 |
| 客服后台查询 | 客服可按手机号、订单号、商品 ID、业务线定位订单,处理用户咨询/投诉等 | 客服 | phone, orderId, skuId, status | 订单主表、用户表、商品表 | 客服中台、客服查单工具 |
| 业务数据看板 | 运营/产品通过图表查看业务概况,如每日下单量、转化率、支付渠道分布、优惠使用等 | 产品/运营 | createTime, status, channel | 订单表、支付表、营销表 | DataStudio、Superset、Grafana |
| 风控异常分析 | 安全/风控团队识别集中退款、刷单、异常下单路径等行为,配合模型或黑名单系统 | 风控/算法 | ip, userId, deviceId, amount | 订单表、退款表、支付风控日志表 | 离线分析平台、ClickHouse、ES |
| 财务对账与报表 | 对账系统核对支付网关流水与订单金额是否一致,标记异常,生成对内日报或报送报表 | 财务/清结算 | orderId, payTime, payMethod, amount | 订单表、 支付回调日志、支付渠道账单 | 对账平台、下载报表系统 |
| 投诉/售后支撑 | 追溯用户某次交易是否成功履约,是否触发补偿、是否已退款、是否满足 SLA | 售后专员 | orderId, fulfillStatus, refundStatus | 订单表、履约系统、退款系统 | 售后中台、客服跟单系统 |
| 活动效果评估 | 分析某个营销活动的转化、GMV、客单价、退款率、留存率等,用于评估 ROI 或策略调整 | 运营/营销 | campaignId, status, amount | 订单表、营销配置表、券使用表 | BI 系统、活动数据平台 |
| 多租户/业务线分账 | 对不同 businessId 或 sellerId 下的订单数据进行隔离、聚合、收入统计等(平台型系统常见) | 商家/平台方 | businessId, sellerId, revenue | 订单表、商家账户系统 | 商家控制台、平台数据系统 |
| 订单异常预警 | 实时监控履约失败率、支付失败率、退款率飙升等异常指标并触发告警 | 运维/产品 | errorCode, status, failRate | 日志系统、订单表、告警系统 | Prometheus + Grafana、报警系统 |
3.2.3 交易数据安全
- 通过分布式事务保障数据一致性
- 实现最终一致性,并支持重试、补偿逻辑
- 幂等性处理 和 状态更新
- 实施分级隔离的熔断降级机制抵御流量洪峰 - 高可用保障
- 非核心 功能(如优惠券展示、推荐接口)在高峰期自动关闭或返回默认值;
- 确保下单主链路不被非关键依赖阻塞
- 建立自动化对账体系防控资金风险
3.2.4 订单事件驱动的状态机引擎
订单的状态管理采用了事件驱动有限状态机的设计模式,通过事件订阅订单的状态流转:

3.3 签约服务
负责订阅类业务的签约管理,例如包月充电业务,可以为业务提供连续包月的签约对接能力,为付费业务提供更多的运营方案。
3.3.1 签约及续费处理流程
用户下签约单后,订单会触发签约系统执行签约逻辑,向支付中心创建签约单,并维护签约状态

- IAP
- 指用户是通过 Apple / Google 的 In-App Purchase(应用内购买)系统来购买的。