按照嘉宾的要求,本文不对外公开。如果你是意外看到这篇文章,请勿将链接发送给其他人。


一、主题分享

缴费 的业务场景 就是咱们平时 在手机银行上进行缴纳水费,电费等这种场景,目前缴费中心的定位是支付系统的前置,主要负责前台展示,商户注册审批,秘钥管理等功能

业务的流程:

  1. 用户进入手机银行,进入缴费界面,系统根据用户所在位置信息,提供可以缴费的项目
  2. 选择相应的缴费项目,比如水费,输入缴费的单据号,传到系统后台,缴费中心生成一个针对单据号的订单号,还有缴费的项目信息,金额,返回到用户端,用户确认之后,输入密码,点击确认
  3. 缴费中心进行参数验证之后,根据缴费的项目类型,调用支付系统的相应的接口,等待返回结果,如果返回成功,那么缴费成功或失败,将订单状态和支付流水单状态修改成功或失败,将提示信息传给前台用户。
  4. 针对出现的异常的情况,会进行三次重试,如果依旧是异常中间状态,那么写入到异常记录表中,系统会设置轮询任务,对异常记录进行再次查询,确认,如果依旧异常,则进行人工处理环节

这块的技术架构上,springMVC+dubbo+mybaits 底层数据库是oracle集群,在订单数据和流水数据的存储上,数据库和redis都存一份,先写数据库,异步写redis,对外提供查询订单和流水功能上,先读redis如果没有,再读数据库 。


Q&A

Q: 你们异常时候不冲正吗
A: 冲正 有重试和 轮询任务进行冲正 对账
Q: 是什么样的节点会触发冲正呢,三次重试失败进入轮训后多久?

Q: 缴费涉及银行核心和缴费公司,你们是怎样对账的
A: 我们与缴费公司对账 提供了实时的查询接口,也有夜间的批量账单和流水文件下载

Q: 收费的账户分行内和行外?
A: 第三方渠道公司 账户, 银行自身的用户
Q: 第三方渠道公司的账户开在农行还是他行?
A: 农行

Q:我不太清楚第三方渠道公司做什么角色
A: 比如 第三方渠道公司 百度上可以缴纳水费,但是具体缴纳的时候,走的这边的接口

Q: 第三方渠道公司是帮忙把客户的缴费给到对应的水,电,燃气公司? 扣客户账到第三方渠道公司,然后第三方渠道公司再帮忙把客户的缴费转给对应的水,电,燃气公司吗?

A:
比如 我们与支付系统约定 接口返回 status=1, des=成功,返回比如-1,无法确定是否成功支付,这个时候就是中间状态,轮询是10s 一次
用户在第三方渠道公司上,进行扣款,缴费中心在第三方公司的账户上进行扣款,之后第三方公司把钱给银行,银行再把钱给水电公司
用户把钱给第三方渠道,渠道给银行,银行给水电公司 就是这样一个链条

Q: (1)客户账户A:开在农行 (2)第三方渠道公司账户B:开在农行 (3)水电公司账户C:开在工行 ; 第三方渠道公司是直连农行和工行?
A: 渠道公司 走我们这边缴费接口,走的农行

Q: 你们的缴费接口怎么把客户的钱给到水电公司的工行账户?走大小额?
A: 钱到工行账户,这块是支付系统那边做的,不是特别清楚,走的银联的接口

Q: 如果冲正超时了,你们怎么办,需要日终对账来调流水吗
A: 对于冲正超时,轮询任务几次都无法解决,报警处理人工接入了。 日终也会对账,但是问题就比较严重了,需要对支付各个接口进行排查

Q: 缴费用心负责商户注册审批,这个商户注册是什么业务
A: 商户管理就是对渠道公司的管理, 就是录入商户的基本信息,负责商户信息的核实,审核,分发和管理公钥,私钥,等等

Q: 我能这样理解不,渠道公司就是你们的代理 , 具体和水费公司签约是你们,如果其他第三方想使用你们的缴费通道就需要接入你们的接口
A: 渠道公司是我们的代理 对的

Q: 另外订单放到先放到数据库在放redis ,虽然并发可能不大 为何不先入缓存 缓存在异步入库呢
A: 先写库 后异步到redis, 是确保记录的更好的完整性, 先写redis后异步入库,性能更好,高并发读,压力小。就看系统目标 取舍了


本文档来自支付产品技术交流群的聊天记录整理,由志愿者整理并发布到本网站。如需要及时收到来自支付产品技术交流群的最新消息,请扫码关注“凤凰牌老熊”的微信公众号。 本群面向支付行业的有经验(2年以上)的产品经理、软件工程师、架构师等,提供交流平台。如想加入本群,请在本文评论中留言(不公开),说明所在的公司、负责的工作、入群分享的主题和时间。