FITCARD

← 案例介绍

基础功能

一键登录
首页
会员中心
会员二维码弹窗
会员信息
切换门店

场馆 & 教练

场馆详情
教练列表
教练详情

课程 & 预约

课程商城
课程购买
预约课程
私教记录

会员卡 & 支付

健身卡列表
会员卡列表
会员卡购买

订单 & 其他

我的订单
会员卡激活
私教课激活
团购核销
人脸录入
首页

健身卡 App 产品需求文档

PRD - Product Requirements Document

版本: v2.0 日期: 2026-04-14 状态: 设计中

1项目概述

1.1 项目背景

随着健身行业数字化转型加速,传统健身房需要一套完整的会员管理移动端应用,实现会员卡管理、课程预约、教练匹配等核心业务的线上化。本项目旨在为健身俱乐部打造一款面向会员的移动端产品,提升会员体验和运营效率。

1.2 目标用户

  • 健身俱乐部现有会员:需要管理会员卡、预约课程、查看训练记录
  • 潜在新会员:了解场馆信息、教练资源,促进转化

1.3 产品目标

  1. 实现会员卡电子化,支持扫码签到和人脸签到
  2. 提供在线课程购买、会员卡购买和私教预约功能
  3. 搭建会员与教练的线上沟通桥梁
  4. 支持美团/抖音团购券在线核销
  5. 提升会员留存率和复购率

2功能架构

登录
首页
场馆
教练
我的
↓ 核心功能模块 ↓
扫码签到
课程预约
场馆浏览
教练选择
会员管理
训练记录
↓ v2.0 新增模块 ↓
课程购买
会员卡购买
人脸录入
团购核销
订单管理

3页面需求详细说明

3.1 首页

模块需求描述
门店切换顶部显示当前门店名称,点击可切换至其他门店
搜索支持搜索课程名称和教练姓名
轮播Banner展示运营活动和促销信息,自动轮播(3秒间隔),支持手动滑动
快捷入口4个快捷功能:扫码签到、预约课程、场馆介绍、私教服务
会员卡展示展示当前用户的会员卡信息(卡号、姓名、等级、有效期),支持查看全部卡片
热门课程横向滚动展示热门课程卡片(课程图片、名称、教练、时长),点击进入课程详情
底部Tab栏4个Tab:首页、场馆、教练、我的,支持Tab切换

3.2 会员中心

模块需求描述
用户信息区橙色渐变背景,展示用户头像、姓名、手机号、会员等级标签
数据统计3列展示:账户余额(元)、我的积分、剩余课程(节)
功能菜单8个菜单项:我的会员卡、预约记录、私教记录、我的教练、会员二维码、会员信息、意见反馈、关于我们

3.3 会员二维码弹窗

模块需求描述
弹窗展示从会员中心点击"会员二维码"弹出,半透明遮罩背景
二维码展示动态生成的会员专属二维码,包含会员唯一标识
会员信息头像、姓名、会员类型、卡号(脱敏显示)
关闭操作点击关闭按钮或遮罩区域关闭弹窗

3.4 会员信息

模块需求描述
头像编辑展示用户头像,支持点击更换头像(调用系统相机/相册)
基本信息只读展示:姓名、手机号、性别、生日、会员类型、开卡日期、到期日期
编辑模式点击右上角"编辑"进入编辑模式,可修改姓名、性别、生日
退出登录底部退出登录按钮,点击后弹出确认弹窗

3.5 切换门店

模块需求描述
定位信息获取用户当前位置,显示省市区信息
搜索门店支持按门店名称搜索
当前门店橙色边框高亮显示当前门店,右上角"当前门店"标签
门店列表展示所有门店的名称、详细地址、距离信息
切换操作点击门店卡片切换至对应门店,切换后首页数据更新

3.6 场馆详情

模块需求描述
场馆图片顶部展示场馆主图,支持多图轮播
基本信息名称、评分(五星制)、地址、营业时间、联系电话
设施标签展示场馆配套设施数据:有氧区、力量区、游泳池、瑜伽室、桑拿房等
场馆介绍富文本展示场馆详细描述
导航功能底部"导航到这里"按钮,调用第三方地图导航

3.7 教练列表

模块需求描述
分类筛选横向Tab筛选:全部、增肌、减脂、体能、康复、瑜伽
教练卡片展示:头像、姓名、性别、专长标签、评分、已授课数
预约按钮每张卡片右侧"预约"按钮,点击跳转预约页面
筛选功能右上角筛选图标,支持按评分、价格、距离等条件筛选

3.8 教练详情

模块需求描述
教练头部橙色渐变背景,展示头像、姓名、专长标签
数据统计3列展示:评分、已授课节数、教龄
个人简介展示教练的详细个人介绍
资质认证列表展示教练持有的专业认证
学员评价展示最新评价(头像、昵称、星级、内容、日期),支持"查看全部"
预约按钮底部固定"立即预约"按钮

3.9 预约课程

模块需求描述
选择教练横向滚动教练头像列表,选中状态橙色边框+勾选
选择日期横向滚动日期选择器,展示一周7天(星期+日期),已过日期不可选
选择时段9宫格时段选择:08:00-20:00共9个时段,已被预约的时段灰色不可选
课程类型单选列表:私教一对一(¥300/节)、私教一对二(¥200/节)、小团课(¥150/节)
确认预约底部显示合计金额+"确认预约"按钮,提交后生成预约记录

3.10 私教记录

模块需求描述
状态筛选4个Tab:全部、已完成、待上课、已取消,选中态橙色下划线
记录卡片展示:课程类型、状态标签、教练信息、上课时间
已完成显示课程评分,支持查看训练详情
待上课显示"取消预约"按钮,点击后二次确认取消
已取消灰色显示,不提供操作按钮

↓ v2.0 新增需求 ↓

3.11 一键登录 / 手机号登录

模块需求描述
一键登录读取本机手机号(运营商授权),显示脱敏号码(138****8888),点击即可登录。支持关闭页面返回
手机号登录输入手机号 + 短信验证码登录。未注册手机号自动创建新账号。60秒倒计时重发验证码
第三方登录支持微信、支付宝、Apple ID 三种第三方登录方式
协议确认登录页底部展示用户协议和隐私政策链接,登录即视为同意

3.12 首页(升级版)

模块需求描述
快捷入口升级由4个扩展为8个:扫码签到、预约课程、场馆、私教服务、买会员卡、课程商城、我的订单、人脸录入
团购核销入口新增美团/抖音团购核销推广入口卡片,点击进入团购核销页面
会员卡人脸标识会员卡右上角显示"已录入人脸"徽章,未录入时不显示
课程价格热门课程卡片增加价格展示(如¥300/节)

3.13 课程商城(课程列表)

模块需求描述
分类筛选横向Tab:全部、私教课、团课、瑜伽、搏击、康复
搜索支持按课程名称搜索
课程卡片展示课程图片、名称、专长标签、教练信息、时长、价格,右侧"立即购买"按钮
购买跳转点击"立即购买"进入课程购买页面

3.14 课程购买

模块需求描述
课程信息顶部展示课程名称、专长标签、教练、评分、销量
套餐选择单节体验/10节套餐(推荐)/20节套餐,显示原价和优惠价,选中态橙色边框
教练选择横向滚动教练头像列表,支持切换教练
优惠券展示可用优惠券数量,点击展开优惠券选择
支付底部固定合计金额 + "立即支付"按钮

3.15 会员卡列表/购买

模块需求描述
当前会员卡顶部橙色渐变卡片展示当前使用中的会员卡信息(名称、等级、卡号、有效期)
购卡列表展示可选会员卡:月卡(¥199)、季卡(¥499,推荐)、年卡(¥1,688),含原价/优惠价对比
权益对比每张卡下方标签展示包含权益(入场次数、团课、私教、设施等)
购买按钮底部固定"立即购买"按钮,价格跟随选中卡类型动态变化

3.16 会员卡购买(确认订单)

模块需求描述
商品信息展示购买的会员卡类型、描述、价格
订单信息适用门店、有效期、开始日期(可选)
优惠券展示已选优惠券优惠金额
支付方式微信支付/支付宝/余额支付,单选切换
协议确认需勾选同意《会员卡购买协议》和《人脸识别隐私协议》
确认支付底部显示实付金额(原价-优惠券)+ "确认支付"按钮

3.17 我的订单

模块需求描述
订单Tab4个Tab:全部/待使用/已完成/退款,选中态橙色下划线
订单卡片展示订单号、状态标签、商品图、名称、描述、规格、金额、下单时间
待使用操作按钮:"立即使用"(会员卡)/"去预约"(课程)/"申请退款"
已完成操作按钮:"再次购买"/"评价"
已退款显示原价删除线 + "已退款"标签,操作:"再次购买"
订单类型区分三种订单图标:会员卡(橙色)、课程(紫色)、团购(青色)

3.18 团购核销(美团/抖音)

模块需求描述
平台入口顶部展示美团、抖音两个平台图标,直观区分核销来源
输入券码手动输入团购券码,点击"立即核销"完成核销
扫码核销调用摄像头扫描团购二维码/条形码自动核销
核销记录列表展示历史核销记录:来源平台标签、券名、券码、状态(待核销/已核销/已过期)、购买/核销时间
多次核销支持多次使用的团购券(如3次卡),显示已用/总次数

3.19 人脸录入

模块需求描述
隐私协议强制展示人脸识别隐私协议弹窗,用户必须阅读并勾选同意后才能继续。协议内容涵盖信息收集、存储安全、用户权利、保留期限
人脸预览圆形人脸框预览区域,未录入时显示虚线框+人脸图标,录入成功后变绿色实线+勾选
录入提示展示录入注意事项:光线充足、正面、无遮挡、耗时5-10秒、加密存储
开始录入点击"开始录入"调用摄像头进行人脸采集,采集过程约2秒动画反馈
录入成功成功后展示绿色勾选图标、录入时间,按钮变为"重新录入"
跳过支持"稍后再说"跳过,后续可从会员中心菜单再次进入

3.20 会员卡激活

模块需求描述
前置条件用户已注册(手机号授权),已完成会员卡购买且订单状态为"待使用"。点击订单列表中的"立即激活"按钮进入激活流程
步骤条引导顶部3步骤引导条:完善资料 → 确认协议 → 激活成功,已完成步骤变绿色勾选,当前步骤橙色高亮
订单信息展示展示购买的会员卡信息卡片:卡类型、描述、价格、适用门店(橙色渐变卡片)
完善个人资料必填项:姓名(文本输入,最大20字)、性别(男/女单选按钮)。注册时仅授权了手机号,激活时需补充真实身份信息
有效期预览实时计算并展示激活时间和到期时间。激活时间为当天日期,到期时间根据卡类型自动计算(月卡+30天,季卡+90天,年卡+365天)
开卡须知协议展示《会员开卡须知》完整内容,包含:会员卡类型及权益、激活与有效期规则、使用规则、退卡退款政策、安全隐私条款、其他说明。用户必须勾选同意后才能激活
确认激活信息在协议下方汇总展示所有激活信息:会员姓名、性别、手机号、卡类型、门店、激活时间、到期时间,供用户最终确认
激活成功激活后弹出成功弹窗,展示:会员姓名、卡类型、卡号(系统自动生成)、激活时间、到期时间。底部"查看我的会员卡"按钮跳转会员卡页面
数据更新激活成功后:① 订单状态变更为"已完成" ② 创建会员卡记录(含卡号、有效期) ③ 用户会员等级更新 ④ 会员信息中补全姓名和性别

3.21 私教课激活

模块需求描述
前置条件用户已购买私教课且订单状态为"待使用"。点击订单列表中的"立即激活"按钮进入。用户必须已持有有效的会员卡,否则提示先激活会员卡
会员信息展示顶部展示已绑定的会员信息(橙色渐变卡片):头像、姓名、会员等级标签、手机号(脱敏)、会员卡号、有效期。状态标签显示已验证
课程信息展示展示购买的课程信息(紫色渐变卡片):课程名称、教练姓名及专长、订单号
激活确认详情展示激活明细:课程套餐(如10节套餐)、订单金额、教练及评分、适用门店
课程数展示大字号突出显示激活的课程数量(如"10节课"),附带有效期天数、单节时长、课程类型等详细信息
时间展示并排展示激活时间和到期时间。激活时间为当天,到期时间根据课程套餐有效期自动计算(如10节套餐有效期90天)
温馨提示展示课程使用注意事项:①有效期内完成预约 ②提前预约及取消规则 ③教练绑定规则 ④过期作废说明
激活成功激活后弹出成功弹窗(紫色主题),展示:会员姓名、课程名、教练、课程数(紫色高亮)、有效期范围。底部"立即预约课程"按钮跳转预约页面
数据更新激活成功后:① 订单状态变更为"已完成" ② 创建私教课记录(含剩余课时、有效期) ③ 课程绑定到指定教练 ④ 用户"剩余课程"数据更新

4非功能性需求

维度要求
性能页面首屏加载 < 2秒,接口响应 < 500ms
兼容性iOS 13+、Android 8+,主流屏幕适配(375px - 428px)
安全用户数据加密存储,API接口HTTPS传输,敏感信息脱敏显示
可用性99.9% 系统可用性,支持灰度发布和快速回滚
设计规范主色 #FF6B00,卡片圆角 12px,底部Tab栏固定,遵循iOS/Android设计规范

5核心数据模型

实体关键字段
会员姓名、手机号、性别、生日、会员类型、余额、积分、开卡日期、到期日期、所属门店、人脸特征ID
会员卡卡号、卡类型(月卡/季卡/年卡)、状态、有效期、余额、权益列表
教练姓名、性别、专长标签、评分、教龄、已授课数、资质认证、个人简介、所属门店
课程课程名称、课程类型、教练、时长、价格、容纳人数、套餐选项
预约记录会员、教练、课程类型、预约日期、时段、状态(待上课/已完成/已取消)、评分
门店名称、地址、经纬度、营业时间、联系电话、设施列表、评分
订单订单号、用户、商品类型(会员卡/课程/团购)、商品ID、金额、优惠券、支付方式、状态(待使用/已完成/退款)、创建时间
团购券券码、来源平台(美团/抖音)、商品名、总次数/已用次数、状态(待核销/已核销/已过期)、购买时间、有效期
人脸特征会员ID、特征向量(加密)、录入时间、状态

6核心交互流程

6.1 课程预约流程

选择教练
→
选择日期
→
选择时段
→
选择课程类型
→
确认预约

6.2 签到流程

点击扫码签到
→
调用摄像头扫码
→
验证会员身份
→
签到成功

6.3 会员二维码签到流程

进入会员中心
→
点击会员二维码
→
出示二维码
→
前台扫码核销
→
签到成功

6.4 课程购买流程(新增)

浏览课程商城
→
选择课程
→
选择套餐
→
选择教练
→
使用优惠券
→
支付完成

6.5 会员卡购买流程(新增)

选择卡类型
→
确认订单
→
选择支付方式
→
同意协议
→
支付完成

6.6 人脸录入流程(新增)

进入人脸录入
→
展示隐私协议
→
用户同意协议
→
调用摄像头
→
采集人脸
→
录入成功

6.7 团购核销流程(新增)

进入团购核销
→
输入券码/扫码
→
验证券码有效性
→
核销成功

6.8 会员卡激活流程(新增)

订单列表点击"立即激活"
→
填写姓名+选择性别
→
确认开卡须知协议
→
确认激活信息
→
激活成功
关键规则说明
注册信息补全用户注册时仅授权手机号,激活会员卡时强制要求补全姓名和性别
有效期计算激活当天为起始日,到期日 = 激活日 + 卡类型天数(月卡30/季卡90/年卡365)
协议确认必须勾选同意《会员开卡须知》后才能激活,协议包含退卡退款等关键条款
激活后状态订单变为"已完成",同时生成会员卡记录和会员卡号
退卡规则激活后7天内可退款(扣除已使用天数费用),超过7天不可退款

6.9 私教课激活流程(新增)

订单列表点击"立即激活"
→
验证会员卡有效性
→
展示会员+课程信息
→
确认激活时间和课程数
→
激活成功
关键规则说明
会员卡校验激活私教课前必须先拥有有效的会员卡,无会员卡时引导先激活会员卡
信息展示自动读取并展示已绑定的会员信息(姓名、卡号、有效期),供用户确认
课程数确认大字号突出显示购买的课程数量,明确有效期范围
教练绑定激活时绑定购买时选择的教练,后续更换需联系前台
过期规则有效期内未上完的课程自动作废,不予退款

7版本规划

版本功能范围优先级
v1.0首页、会员中心、场馆浏览、教练列表、课程预约、私教记录P0
v2.0一键登录、课程商城与购买、会员卡购买、人脸录入、团购核销(美团/抖音)、订单管理P0
v2.1扫码签到、消息推送、意见反馈、社交分享P1
v3.0训练数据分析、AI教练推荐、社区功能、积分商城P2

8多场馆微信支付架构

8.1 方案选型:微信支付服务商模式

本项目采用微信支付服务商模式(API v3),实现"一套小程序 + 多场馆独立收款"的核心需求。该方案的优势:

对比维度服务商模式(已选)普通商户模式
小程序数量仅需 1个小程序,通过 sub_mchid 区分收款方每个场馆需单独注册小程序,维护成本高
资金流向用户付款 → 直达子商户账户(场馆),不经平台收款到单一商户号,需手动分账或转账
商户入驻平台代入驻,场馆无需自行对接微信支付每个场馆自行申请商户号,审核周期长
手续费平台可自定义抽佣比例,微信按子商户分别计费统一费率,无法差异化
结算周期T+1 自动结算到各场馆对公账户T+1 结算到单一账户

8.2 核心架构

┌─────────────────────┐
│   微信小程序 (1个)    │  ← 服务商的 AppID(sp_appid)
│    FITCARD 健身卡     │
└──────────┬──────────┘
           │ 下单请求(携带 store_id)
┌──────────▼──────────┐
│    后端服务 (1套)     │  ← 根据 store_id 查询对应的 sub_mchid
│  payment-service    │
└──────────┬──────────┘
           │ 调用微信支付 API(JSAPI)
┌──────────▼──────────┐
│   服务商商户号        │  ← sp_mchid(仅发起支付,不收款)
│   (父商户号)         │
└──────────┬──────────┘
           │
    ┌──────┴──────┬───────────┬───────────┐
    ▼             ▼           ▼           ▼
┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐
│子商户A  │  │子商户B  │  │子商户C  │  │子商户D  │
│北京旗舰店│  │上海国贸店│  │深圳南山店│  │杭州西湖店│
│sub_mchid│  │sub_mchid│  │sub_mchid│  │sub_mchid│
└────────┘  └────────┘  └────────┘  └────────┘
    ▲             ▲           ▲           ▲
    └─────────────┴───────────┴───────────┘
              资金直达各场馆账户,不经平台

8.3 关键配置参数

参数说明示例
sp_appid服务商关联的小程序 AppID(全局唯一)wx1234567890abcdef
sp_mchid服务商商户号(父商户号,仅发起支付)1234567890
sub_appid子商户关联的小程序 AppID(与服务商相同,因共用 1 个小程序)wx1234567890abcdef
sub_mchid子商户号(每个场馆一个,实际收款账户)门店A: 100001 / 门店B: 100002
sp_api_key服务商 API v3 密钥,用于签名和验签服务端安全存储
serial_no服务商 API 证书序列号用于请求头签名

8.4 数据库设计

表字段说明
stores(场馆表)store_id场馆唯一标识(主键)
store_name场馆名称,如"北京旗舰店"
sub_mchid该场馆对应的微信支付子商户号
sub_mchid_status子商户状态:PENDING(审核中)/ ACTIVE(已激活)/ FROZEN(冻结)
commission_rate平台抽佣比例(万分之几),如 50 = 0.5%
orders(订单表)order_id订单号(唯一)
store_id订单归属场馆
sub_mchid实际收款的子商户号(冗余存储,防止场馆变更)
transaction_id微信支付流水号(支付成功后回填)
pay_status支付状态:UNPAID / PAID / REFUNDED / CLOSED

8.5 支付流程

8.5.1 统一下单流程

用户选择商品
→
携带 store_id 请求后端
→
查询 sub_mchid
→
创建订单记录
→
调用 JSAPI 下单
步骤操作说明
1用户在小程序选择商品并下单前端将 store_id(当前场馆)+ 商品信息 + 金额发送至后端
2后端查询场馆对应的子商户号SELECT sub_mchid FROM stores WHERE store_id = ? AND sub_mchid_status = 'ACTIVE'
3后端创建本地订单生成 order_id,记录 store_id、sub_mchid、金额、商品信息,状态设为 UNPAID
4调用微信 JSAPI 统一下单POST /v3/pay/partner/transactions/native
请求参数中携带 sp_appid、sp_mchid、sub_appid、sub_mchid
5返回 prepay_id 给前端后端签名后返回支付参数,前端调用 wx.requestPayment 唤起支付
6用户完成支付资金从用户账户 → 直达 sub_mchid(场馆账户),不经过服务商
7接收支付结果通知微信回调后端 notify_url,后端验签后更新订单状态为 PAID
8前端查询支付结果轮询后端接口确认支付状态,展示支付成功页面

8.5.2 关键 API 调用(JSAPI 统一下单)

POST https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi
Content-Type: application/json
Authorization: WECHATPAY2-SHA256-RSA2048 ...

{
  "sp_appid":  "wx1234567890abcdef",   // 服务商小程序 AppID
  "sp_mchid":  "1234567890",            // 服务商商户号
  "sub_appid":  "wx1234567890abcdef",   // 子商户 AppID(共用小程序)
  "sub_mchid":  "100001",                // ← 核心:根据 store_id 动态切换
  "description":  "季卡会员 - 北京旗舰店",
  "out_trade_no": "ORDER20260415001",
  "notify_url":   "https://api.fitcard.com/pay/notify",
  "amount": {
    "total":    49900,        // 单位:分(¥499.00)
    "currency": "CNY"
  },
  "payer": {
    "sp_openid": "oXXXX..."  // 用户在服务商小程序下的 openid
  }
}

8.6 回调通知处理

步骤操作说明
1接收微信回调POST 请求到 notify_url,请求体为 AES-256-GCM 加密的 JSON
2解密并验签使用 API v3 密钥解密,验证签名防止伪造通知
3幂等校验通过 out_trade_no 查询订单,若已处理则直接返回成功(防止重复通知)
4更新订单状态更新为 PAID,记录 transaction_id、支付时间
5触发业务逻辑激活会员卡 / 发放课程 / 发送支付成功消息
6返回成功响应HTTP 200 + {"code":"SUCCESS","message":"成功"},否则微信会重试

8.7 退款流程

用户申请退款
→
后端校验退款条件
→
调用退款 API
→
资金原路退回
项目说明
退款 APIPOST /v3/refund/domestic/refunds,需携带 sp_mchid + sub_mchid
资金来源从子商户(场馆)账户扣除,退回用户微信账户
部分退款支持,通过 amount.refund 指定退款金额(≤ 订单金额)
退款通知退款成功后微信异步通知,后端更新订单状态为 REFUNDED
退款时效1-3 个工作日到账,微信会发送退款到账消息给用户

8.8 场馆(子商户)入驻流程

场馆提交资料
→
平台代为申请入驻
→
微信审核(1-5天)
→
审核通过
→
生成 sub_mchid
入驻资料说明
营业执照场馆运营主体的营业执照照片
法人身份证正反面照片
对公账户场馆名称一致的对公银行账户信息(开户行、账号)
联系人信息超级管理员的姓名、手机号、邮箱
商户简称用户支付时看到的商户名,如"FITCARD·北京旗舰店"

8.9 安全与风控

安全项实现方案
通信安全全部使用 HTTPS,API v3 基于 SHA256-RSA2048 签名验签
密钥管理API v3 密钥、商户私钥均存储在服务端环境变量或 KMS 中,禁止硬编码
回调验签必须验证回调签名(Wechatpay-Timestamp + Wechatpay-Nonce + Body),防止伪造通知
幂等处理所有支付/退款回调必须做幂等校验,通过 out_trade_no 去重
金额校验回调中的金额必须与本地订单金额一致,防止金额篡改
订单超时下单时设置 time_expire(建议 30 分钟),超时未支付自动关闭订单
防重复支付同一 order_id 只允许一次成功支付,支付前检查订单状态

8.10 对账与结算

项目说明
自动结算微信 T+1 自动将子商户交易款结算到场馆对公账户,平台无需干预
平台抽佣通过微信支付的"分账"功能实现:支付成功后按 commission_rate 将佣金分到服务商账户
对账方式每日调用 /v3/bill/tradebill 下载当日交易账单,与本地订单数据核对
对账字段out_trade_no(订单号)+ transaction_id(微信流水号)+ total_fee(金额)+ trade_state(状态)
差异处理自动对账发现差异时生成告警,运营人工核实

8.11 后端接口设计

接口方法说明
/api/pay/createPOST创建支付订单。入参:store_id, goods_type, goods_id, amount;返回:prepay_id 签名参数
/api/pay/notifyPOST微信支付回调。验签 → 解密 → 幂等校验 → 更新订单 → 返回 SUCCESS
/api/pay/query/{order_id}GET前端主动查询支付状态,兜底回调未到的场景
/api/refund/createPOST申请退款。入参:order_id, refund_amount, refund_reason
/api/refund/notifyPOST退款回调通知。验签后更新订单状态为 REFUNDED
/api/store/bind-sub-mchidPOST场馆入驻审核通过后,绑定 sub_mchid 到 store_id(运营后台调用)

8.12 异常场景处理

异常场景处理方案
子商户未激活(sub_mchid_status ≠ ACTIVE)前端提示"该场馆暂不支持在线支付",引导到店办理
支付超时(30分钟未支付)后端定时任务扫描超时订单,调用关单接口关闭后标记 CLOSED
回调未收到前端轮询 /api/pay/query 兜底查询,后端在 T+1 对账时补单
用户切换场馆后支付每次下单时从当前 store_id 动态获取 sub_mchid,不缓存
同一用户多场馆有会员卡会员卡绑定 store_id,购买时使用对应场馆的 sub_mchid 收款
网络异常导致重复下单前端做防重复提交(按钮 loading 态 + 请求去重),后端做幂等校验

9美团/抖音团购核销接入

9.1 美团团购核销 — 开通申请流程

美团团购核销接入需通过美团技术服务合作中心完成,分为服务商和自研品牌商两种身份。

身份类型适用对象特点
三方服务商SaaS公司、软件开发商需缴纳保证金,可服务多品牌
自研品牌商连锁品牌自有研发团队仅限自有品牌门店使用

第一步:官网注册

  • 访问 美团技术服务合作中心(developer.meituan.com)
  • 点击「注册」,选择对应身份类型(服务商 / 自研品牌商)

第二步:提交资质材料

材料类型具体要求
基本资质营业执照、法人身份证、申请人手持身份证照片
安全资质(上线必需)二级等保备案证明 或 网络信息安全险 + Web应用防火墙
软件著作权自研品牌商必须提供,服务商可选
承诺书《服务商数据交互合规化承诺书》

第三步:审核与签约

  1. 运营审核(通常 1-2 个工作日)
  2. 法人/授权人短信实名认证
  3. 签订电子合同
  4. 缴纳保证金(服务商需缴纳,金额根据业务评估自动生成)

第四步:获取开发者凭证

审核通过后,在控制台获取 developerId 和 SignKey,用于后续 API 调用签名。

9.2 美团团购核销 — 技术对接流程

商户授权绑定
→
查询可用团购
→
用户出示券码
→
调用核销接口
→
核销完成
接口功能接口路径说明
获取授权链接/api/groupBuy/getScopeUrl引导商户授权门店绑定
查询团购券适用门店查询接口获取门店可用团购套餐
核销验券/partner/tuangou/receipt/consume传入券码完成核销
撤销核销对应撤销接口核销后 1 小时内可撤销
重要提示说明
接口版本原北极星开放平台已下架,新对接需使用美团技术服务合作中心新接口
券码安全券码已加密,建议不要展示给用户,直接调用接口核销
批量核销最多支持单次 50 张券
撤销时效核销后 1 小时内可撤销,超时不可撤销

9.3 抖音团购核销 — 开通申请流程

抖音团购核销接入需通过抖音开放平台完成,创建生活服务商家应用。

第一步:前置准备

  • 入驻 抖音来客(life.douyin.com),获取来客账户 ID

第二步:创建应用

  • 访问抖音开放平台(open.douyin.com)
  • 注册并认证「生活服务商家应用代开发」能力
  • 平台审核周期约 10 个工作日

第三步:对公认证

  • 在「认证服务能力 - 对公认证」页签完成对公认证

第四步:申请接口权限

权限名称permission_key用途
门店管理-同步门店信息
商品查询-查询团购商品
团购核销12核心核销验券能力
团购核销对账-财务对账

9.4 抖音团购核销 — 技术对接流程

获取 Client Token
→
商家授权
→
验券准备接口
→
确认核销接口
→
核销完成

关键接口调用

1. 获取 Access Token

GET https://open.douyin.com/oauth/client_token/
    ?grant_type=client_credential
    &client_key={APPID}
    &client_secret={APP_SECRET}

2. 验券准备(查询券状态)

  • 从用户出示的二维码 URL 中提取 encrypted_data 参数
  • URL 格式:https://developer.toutiao.com/api/apps/trade/v2/share?encrypted_data=xxx

3. 确认核销

  • 调用核销接口完成验券,接口需确保幂等性设计,避免重复核销
重要提示说明
权限要求必须获得商家授权 permission_key=12(团购核销权限)
二维码数据encrypted_data 是加密字符串,只需提取参数值,不要感知 URL 其他部分
常见错误码参数错误(10000)、系统错误(13000)、二维码失效

9.5 集成方案对比

维度美团团购核销抖音团购核销
入驻门槛高(需等保/防火墙)中等(需对公认证)
审核周期1-2 个工作日约 10 个工作日
保证金服务商需缴纳无
接口权限需申请开通需单独申请 permission_key=12
核销方式输入券码 / 扫码扫码提取加密数据
撤销机制支持 1 小时内撤销需查看具体接口文档
数据同步支持查询团购套餐映射支持门店/商品同步

9.6 小程序统一核销架构

建议采用统一核销网关设计,将美团和抖音的核销差异封装在后端,前端保持统一体验:

┌─────────────────────┐
│   微信小程序          │
│  (核销入口页面)       │  ← 统一 UI,用户无需感知平台差异
└──────────┬──────────┘
           │ 券码/扫码数据
┌──────────▼──────────┐
│   核销网关服务        │  ← 自动识别券码类型,路由到对应平台
│  (统一后端服务)       │
└──────────┬──────────┘
           │
    ┌──────┴──────┬──────────┐
    ▼             ▼          ▼
┌───────┐  ┌───────┐  ┌───────┐
│美团API │  │抖音API │  │其他平台│  ← 可扩展接入更多团购平台
└───────┘  └───────┘  └───────┘

核心功能模块

模块功能说明
券码识别自动识别美团券码(纯数字)vs 抖音二维码(加密 URL)
渠道路由根据券码格式自动路由到对应平台 API
状态管理查询券状态:未使用 / 已使用 / 已过期 / 已退款
核销确认展示券详情后二次确认,避免误操作
撤销功能支持异常时撤销核销(美团 1 小时内)
对账同步每日同步核销记录用于财务对账

9.7 注意事项

美团侧

  • 必须完成二级等保和防火墙采购才能上线(硬性要求)
  • 建议通过第三方服务商接口降低接入成本(如已有服务商资质)
  • 批量核销注意单次上限 50 张

抖音侧

  • 需先入驻抖音来客,再创建开放平台应用(顺序不可颠倒)
  • 苹果开发者账号必须注册,否则 iOS 用户无法看到核销入口
  • 小程序内不允许上线外卖/配送能力,仅限到店核销

通用建议

  • 两个平台核销流程差异较大,建议抽象统一核销模型(输入 → 查询 → 确认 → 结果)
  • 务必做好幂等性控制,防止网络重试导致重复核销
  • 建议先接入沙箱环境测试,再申请正式权限
  • 核销记录需持久化存储,支持后续对账和争议处理

参考文档

  • 美团技术服务合作中心:developer.meituan.com
  • 抖音开放平台:open.douyin.com/platform/doc
  • 抖音来客:life.douyin.com