1. 项目概述
1.1 项目背景
本项目旨在构建一个完整的微信优惠券营销管理平台,通过接入云数汇第三方微信优惠券服务商,为合作银行提供统一的优惠券发放服务。项目包含三个核心组成部分:云数汇API接入层、主题活动管理系统和活动优惠券管理系统,形成完整的营销活动管理闭环。
1.2 项目目标
- 统一接入服务:与云数汇API对接,实现优惠券发放功能
- 标准化接口:封装标准化接口供合作银行调用
- 完整业务管理:提供主题活动和微信活动的全生命周期管理
- 数据统计分析:提供完善的数据统计和查询功能
- 可靠回调机制:建立完善的异步回调处理机制
1.3 系统架构概览
系统整体架构:
- 主题活动管理系统:负责营销活动的策划、配置和管理,包含转盘抽奖等互动功能
- 活动优惠券管理系统:专门管理多渠道优惠券活动(微信、支付宝、银联),与主题活动关联,提供优惠券发放和核销管理
- 云数汇接入层:封装云数汇API,提供统一的优惠券发放服务接口
- 联合营销平台:为运营人员提供统一的管理界面和数据查询功能
1.4 业务价值
核心价值:
- 降低接入成本:银行无需直接对接云数汇,通过标准化接口快速接入
- 统一管理平台:提供完整的活动管理和数据分析能力
- 扩展性保障:中间层设计支持后续接入多个上游发券通道
- 数据安全可控:完整的权限控制和数据隔离机制
2. 业务逻辑与流程
2.1 整体业务逻辑
业务逻辑核心:
整个系统围绕"主题活动"和"微信活动"两个核心概念构建。主题活动作为营销活动的顶层设计,定义活动的基本信息、参与规则和奖品配置;微信活动作为主题活动的具体实施载体,负责优惠券的发放和管理。两者通过活动关联形成完整的营销闭环。
系统协作关系:
- 活动策划阶段:运营人员在主题活动管理系统中创建营销活动,配置活动规则、奖品和转盘等互动元素
- 优惠券配置:在活动优惠券管理系统中创建优惠券活动,关联到对应的主题活动
- 用户参与:用户通过H5页面参与主题活动,获取微信OpenID,触发优惠券发放流程
- 发券执行:系统调用云数汇API发放优惠券,记录发放结果
- 核销管理:用户使用优惠券时,通过回调机制更新核销状态
- 数据分析:在联合营销平台查看活动效果和数据统计
2.1 业务流程
业务流程时序图:
图2.1 云数汇微信优惠券业务流程时序图(详细版)
流程说明:
该时序图展示了行方系统、微信平台等系统间的完整交互流程:
- H5获取OpenID:跳转到拉卡拉提供的中转地址,最终跳转到云数汇H5页面获取用户微信OpenID
- 发券API调用:行方系统调用云数汇发放接口,参数包含openid和活动信息
- 核销回调通知:用户使用优惠券时,通过回调机制通知相关系统
- 数据查询:支持实时查询发放结果和核销状态
简化流程概述:
用户 → 接入方系统 → 我方系统 → 云数汇 → 微信
2.2 接入节点:
1. 银行嵌入云数汇h5地址获取用户openid,地址示例
wmcb参数为接收openid数据的回调页面地址。
回调参数拼接:${redirect_url}&openid=${response.data.openId}&from=dshy
银行需记录openid,用于后续发券使用
2. 接入云数汇发券接口:
3. 后台管理系统
本项目包含两个核心的后台管理系统,分别负责不同层面的营销活动管理。两个系统既相互独立又紧密协作,共同构成完整的营销活动管理平台。
3.1 主题活动管理系统
系统定位:营销活动的顶层设计和管理平台
核心功能:
- 活动策划:创建和配置营销主题活动,定义活动基本信息、时间范围和参与规则
- 互动设计:配置转盘抽奖、积分兑换等互动玩法,提升用户参与度
- 奖品管理:设置活动奖品池,包括优惠券、实物奖品等多种奖励形式
- 状态管理:支持活动的启动、暂停、恢复和结束等状态流转
- 数据统计:提供活动参与度、转化率等核心指标分析
3.2 活动优惠券管理系统
系统定位:多渠道优惠券活动的专业管理平台
核心功能:
- 活动关联:创建多渠道优惠券活动(微信、支付宝、银联)并关联到对应的主题活动
- 券种管理:配置不同类型的优惠券,设置发放规则和使用条件
- 发放监控:实时监控优惠券发放状态,支持发放明细查询
- 核销管理:管理优惠券核销流程,提供核销数据统计
- 数据分析:提供发放量、核销率、活动ROI等关键指标分析
3.3 系统协作关系
协作模式:
- 数据关联:优惠券活动通过活动ID与主题活动建立关联关系
- 状态同步:主题活动状态变更会影响关联的优惠券活动状态
- 统一入口:通过联合营销平台提供统一的管理入口和数据视图
- 权限继承:优惠券活动的操作权限基于主题活动的权限设置
4. 系统架构与技术设计
4.1 云数汇API接口技术规范
本节详细描述云数汇API接口的技术实现规范,包括四个核心接口的详细说明。
4.1.1 获取OpenID接口
接口说明:在券列表或详情页嵌入H5链接,用于获取用户的openid,以便进行后续的业务操作。
接入方式:嵌入H5
测试环境地址:
https://bmk-market.dshytest.com/deliverWM/1017578611540230144?wmcb=xxx
生产环境地址:
https://market.dsaika.com/deliverWM/1019393703635943424?wmcb=xxx
回调请求方式:GET
回调参数:${redirect_url}&openid=${response.data.openId}&from=dshy
请求示例:
GET /callback?redirect_url=https:\\example.com&openid=oRvltwHjF4p7g5j3h2k1j0i9h8g7&from=dshy HTTP/1.1
Host: your-domain.com
返回示例:
{
"status": "success",
"msg": "OpenID retrieved successfully",
"data": {
"openid": "oRvltwHjF4p7g5j3h2k1j0i9h8g7",
"from": "dshy"
}
}
4.1.2 发放优惠券接口
请求URL:
- 测试环境:https://test.wsmsd.cn/sit/api/...
- 生产环境:待提供
请求参数说明:
字段名称 |
内容 |
是否必输 |
最大长度 |
示例值 |
member_id |
会员号 |
M |
String(10-20) |
AAA200154561278 |
activity_id |
活动号 |
M |
String(10) |
1100000086 |
owner_id |
业主Id |
M |
String(8) |
80000007 |
promotion_id |
优惠Id |
M |
String(32) |
WX1623452352312523523 |
channel_openid |
接口1中获取到的openid |
M |
String(128) |
oKL-mwRzR-SBfI4QDAI1QXOpkyc8 |
mer_order_id |
商户订单号 |
M |
String(64) |
20211203092301 |
writeOffNotify |
核销事件通知地址 |
M |
String(256) |
https://test.bank.com/notif |
请求示例:
{
"member_id": "AAA200154561278",
"activity_id": "1100000086",
"owner_id": "80000007",
"promotion_id": "WX1623452352312523523",
"channel_openid": "oKL-mwRzR-SBfI4QDAI1QXOpkyc8",
"mer_order_id": "20211203092301",
"writeOffNotify": "https://test.bank.com/notif"
}
返回示例:
{
"msg": "处理成功",
"code": "000000",
"data": {
"resCode": "000000",
"failMsg": "",
"activity_id": "1100000086",
"owner_id": "80000007",
"promotion_id": "WX1623452352312523523",
"third_coupon_id": "wxd596543989121024",
"mer_order_id": "20211203092301",
"trade_no": "202112030923010001",
"batch_code": "1254325364564365",
"channel_openid": "oKL-mwRzR-SBfI4QDAI1QXOpkyc8",
"trade_status": "SUCCESS"
}
}
4.1.3 核销回调接口
接口说明:通知接入方系统,通过延时队列进行散列通知,通知频率:间隔:1s/5s/5s/10s/3m/10m/20m/30m/1h/2h - 总计 4h3m21s。商户返回应答SUCCESS,将终止通知。
Header认证:
Authorization: "LKLAPI-SHA256withRSA timestamp="${timeStamp}",nonce_str="${nonceStr}",signature="${signature}""
通知报文参数:
字段名称 |
约束 |
字段类型 |
字段描述 |
取值说明 |
member_id |
M |
String |
会员ID |
AAA200154561278 |
tradeStatus |
M |
String |
核销状态 |
USED:已实扣 EXPIRED:已过期 |
请求示例:
{
"member_id": "AAA200154561278",
"owner_id": "80000007",
"channel_openid": "oKL-mwRzR-SBfI4QDAI1QXOpkyc8",
"promotion_id": "WX1623452352312523523",
"third_coupon_id": "wxd596543989121024",
"activity_id": "1100000086",
"promo_amount": "1000",
"total_amount": "9000",
"org_amount": "10000",
"trade_no": "202112030923010001",
"mer_order_id": "20211203092301",
"gmt_used": "2021-12-03 10:30:00",
"tradeStatus": "USED"
}
响应示例:
{
"code": "SUCCESS",
"msg": "处理成功"
}
4.1.4 数据查询接口
接口说明:用于查询发券结果和核销结果。
请求参数:
字段名称 |
内容 |
是否必输 |
最大长度 |
示例值 |
owner_id |
业主Id |
M |
String(8) |
80000007 |
mer_order_id |
商户订单号 |
M |
String(64) |
20211203092301 |
activity_id |
活动号 |
M |
String(32) |
1100000086 |
trade_no |
平台订单号 |
M |
String(64) |
202112030923010001 |
请求示例:
{
"owner_id": "80000007",
"mer_order_id": "20211203092301",
"activity_id": "1100000086",
"trade_no": "202112030923010001"
}
返回示例:
{
"msg": "处理成功",
"code": "000000",
"data": {
"resCode": "000000",
"failMsg": "",
"trade_status": "SUCCESS",
"promo_amount": "1000",
"total_amount": "9000",
"org_amount": "10000",
"gmt_used": "2021-12-03 10:30:00",
"tradeStatus": "USED"
}
}
4.2 系统组成
- 云数汇接入层:对接云数汇API,处理发券和回调
- 业务封装层:封装标准化接口,提供统一服务
- 数据存储层:存储活动、发放和核销数据
- 营销平台层:主题活动和微信活动管理
- 联合营销平台:统一的数据查询和管理界面
4.3 业务流程
4.3.1 发券流程
线下创建优惠券,优惠券信息填入联合营销平台——活动编码(营销平台提供即微信活动批次号):batchCode;活动编码关联主题活动ID。
用户 → 接入方系统 → 我方系统 → 云数汇 → 微信
——使用活动编码+用户访问h5时获取的openid发放优惠券,并实时记录发放结果。
4.3.2 详细流程步骤
第一阶段:获取用户OpenID
- H5页面跳转:跳转到拉卡拉提供的中转地址,最终跳转到云数汇H5页面
- 微信授权:H5页面获取用户微信OpenID
- 回调返回:携带OpenID回跳到行方系统
格式:${redirect_url}&openid=${response.data.openId}&from=dshy
第二阶段:优惠券发放
- API调用准备:行方系统准备发券参数(详细参数说明见技术需求章节)
- 发券请求:调用云数汇发放接口
- 云数汇处理:云数汇向微信平台发起优惠券发放
- 结果返回:微信平台返回发放结果给云数汇
- 同步保存:同步保存发放记录
第三阶段:回调与查询
- 核销回调:用户使用优惠券时,云数汇通过回调通知系统
- 数据查询:查询发放结果
- 结果展示:行方系统返回查询结果
5. 云数汇接入技术需求
本章节详细描述云数汇API接入的技术实现方案,包括接口封装、数据处理、回调机制等核心技术需求。
4.4 接口封装架构
请求格式及加密方式说明文档:
公共参数说明:
4.5 数据存储要求
- 按活动编码:发放成功、核销成功数量统计
- 核销明细:详细核销记录——根据回调接口更新明细状态
- 发放明细:详细发放记录——根据发放接口返回结果,生成发放明细
- 查询支持:供运营与合作银行查询相关数据
5. 联合营销平台集成需求
5.1 平台集成概述
集成目标:将主题活动管理、微信活动管理和云数汇接入服务整合到联合营销平台中,为运营人员和合作银行提供统一的管理和查询界面。
集成范围:
- 活动管理集成:在联合营销平台中嵌入主题活动和微信活动的管理功能
- 数据查询集成:提供统一的数据查询和统计分析功能
- 权限管理集成:基于银行机构的数据权限隔离和访问控制
- 回调数据处理:接收并处理云数汇回调数据,更新本地记录
5.2 数据存储与同步
数据处理策略:
后台系统需对接云数汇回调接口,在联合营销平台创建优惠券活动绑定主题活动后,活动数据存储在本地。回调的优惠券数据除接口透传外,也需将数据进行保存,并用于后续的查询服务。
数据同步机制:
- 实时同步:发放和核销数据通过API调用和回调机制实时更新
- 定时对账:定期调用云数汇查询接口进行数据对账
- 异常处理:数据不一致时的告警和修复机制
5.3 查询功能技术特性
用户体验设计:
- 多标签页管理:支持同时打开多个查询页面,提高操作效率
- 智能分页:支持5/10/20/50/100条每页显示选项
- 实时统计:查询结果显示总记录数和当前页范围
- 响应式设计:适配不同屏幕尺寸的终端设备
查询性能优化:
- 索引优化:基于查询字段建立数据库索引
- 分页查询:避免大数据量查询影响系统性能
- 缓存机制:热点查询数据缓存,提升查询速度
- 异步加载:大数据量统计支持异步处理
数据安全控制:
- 权限控制:基于银行机构的数据权限隔离
- 操作日志:记录所有查询操作的审计日志