童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

基础向:从0开始学习支付系统架构

8月12日 金钟寨投稿
  文章主要是从支付架构、支付流程分析、支付核心逻辑、支付基础服务、支付安全五个方面来详细讲述支付系统架构,一起来看看
  流程图:
  架构的定义:架构一定是基于业务功能来展开的,主要是制定技术规范、框架,指导系统落地,好的架构是需要不断演变和进化而来的。
  架构需要关注的基础核心点主要是:安全、稳定、可扩展。
  构建架构时需要关注的点:目标客户是谁、主要场景有哪些、流程是怎样的、模型、职责有哪些、边界在哪里以及设计。其中比较难以理解的点是困难及模型这两块。
  架构与业务需求的关系:架构的产生来自于业务需求,业务需求进一步抽象形成架构,架构指导后续研发,研发最终成果解决业务需求的问题。整体是一个正向循环的关系。
  一、支付架构
  二、支付流程分析
  第一步,用户选择支付渠道,进入商户客户端;
  第二步,商户客户端发送支付要素,到商户服务端;
  第三步,商户服务端发起支付请求到渠道侧(个别渠道如支付宝是不需要此步骤);
  第四步渠道返回支付凭证到商户服务端;
  第五步商户服务端返回支付凭证到商户客户端;
  第六步,用户调用支付宝控件完成支付。
  接下来是重点,第七步一般渠道是采用异步通知方法来通知商户,但是有些企业是在第六步支付完成之后,在C端会同步通知支付成功。如果以此结果来判断支付是否成功,其实是不严谨会出问题的,应当调用渠道的支付接口来进行核查,然后以渠道返回的结果为准。
  在日常工作中,许多企业在选择第四方服务商或者渠道的时候,会着重关注并发这个点,认为并发量需要达到上万级才可以满足日常需求,但实际上这个量级非常大,其实并没有必要的。
  若直接对接渠道可能会遇到的问题:
  接口文档升级、变更能及时得到通知;
  有些业务没有异步通知;
  同一业务在不同渠道表现不一样;
  各种渠道的各自异常。
  商户的要求:
  清晰的API、SDK文档;
  安全;
  所有应用接口统一标准的异步通知;
  保证出口IP稳定(安全)。
  在系统架构设计时需要注意的一些要点:
  提供规范的API、SDK;
  安全(通讯安全、数据安全);
  稳定;
  异步通知统一;
  各渠道的异常;
  及时了解渠道接口调整。
  以上为示例
  三、支付核心逻辑
  这里讲一下,支付成功之后,我们会把订单信息同步到财务系统,在账务系统里我们设计了诸如转账、汇款等功能,在前期设计时会设计好账务的生成规则,例如;一笔支付的请求会生成多笔账务,对其字段进行区分,这样方便管理和维护。
  支付网关
  此处特指API网关,支付网关的功能:
  限流最好不要放到业务流程中做,会影响用户的体验。
  支付网关的内容:
  唯一的请求入口;
  统一的身份认证、签名、加解密、流控;
  API调用计费;
  API的监控、报警分析;
  API发布管理;
  熔断;
  API聚合;
  协议转换。
  上述内容除了必要意外,其他不放在业务层做,也是为了更好的用户体验。
  支付逻辑
  主要是根据请求的参数进行静态检验和业务逻辑校验,避免系统异常。
  适配渠道的参数校验:长度、类型、格式;
  订单的支付状态:是否支付;
  订单的有效期等等。
  要点:
  一般商户是不需要做支付路由,大部分都是指定了最终的某个支付渠道。
  但也有些没有指定了某个最终的渠道,比如银行卡的支付可以选择哪个第三方支付来完成支付,还有微信线上线下的封装,这个时候就涉及到支付路由规则配置。
  费率:单笔费率、总额费率、阶梯费率;
  营销活动:固定时间单笔优惠、单笔满减、单笔这款、直接补贴;
  额度限制:单笔额度、时间范围内总额度;
  服务指标:失败率、平均响应时间、异常率、TPS;
  特殊配置:特殊要求(比如某渠道能快速结算)。
  支付网关的目的省钱。
  支付风控
  要点:梳理清楚业务风险,分析风险原因,制定风险防范规则。
  (1)数据来源
  内部数据:
  用(商)户信息
  交易数据
  账户数据
  黑名单
  设备、位置信息
  日志数据
  外部数据:
  第三方购买
  央行征信
  芝麻信用
  合作数据
  (2)风控流程
  事前:
  入网审核
  风险评估
  单笔限额设置
  单日限额设置
  频次设置
  事中:
  实时分析
  多维度判断
  拒绝
  拦截进一步验证人工介入
  延迟操作(例如用户大额提现,需要时间段进行复核)
  事后:
  数据分析
  巡查、警告
  降低评级
  升级防范措施
  逻辑完善
  反馈至事前、事中规则中
  账务系统
  账务生成
  内部对账
  原始账单下载
  生成标准账单
  对账
  差错处理
  账务生成后首先进行内部对账,一直后进行原始账单下载,再生成标准账单,进行对账之后进行差错处理。
  内部流程如图:
  订阅交易信息;
  根据交易事件查询生成账务的规则。
  交易事件:支付、退款、转账等等。
  根据规则生成账务明细;
  将账务明细落地。
  对账流程(实现方式之一)
  内部对账:
  保证账务和交易信息配对
  一条交易信息有多条账务信息
  渠道账单下载:
  下载;
  账单标准化(对账字段统一);
  落地标准化账单。
  对账:
  账务和标准账单对账;
  双向对账;
  差错处理。
  账单下载:
  这里提一句,在做异常处理这部分工作时,有的研发朋友写代码时遇到过类似的问题,例如:订单在周末下单,但账单周一才能查询;等到周一时发现查询不到,选择立即重试X分钟后重试就结束了。
  这样是不行的,因为银行有的是8点之后可以查询到,有的是9点之后,所以要选择递增时间重试,然后标记人工处理。
  对账:
  对账部分:
  获取核对文件;
  以账务系统为准来逐笔比对(以某个字段为准进行比对);
  数据一致标记成功,数据不一致标记差错。
  反向操作:
  以渠道账单为准来逐笔比对;
  数据一致标记成功,数据不一致标记差错。
  差错处理
  本地丢失:渠道账单的数据未在账务中查找到。
  渠道丢失:账务中的数据未在渠道账单中查找到。
  数据差错:账务与渠道某些对账字段未能对上。
  此处需要注意的是,针对差错都需要向渠道查询每笔订单信息再次确认,同时,有些渠道的交易成功时间本来就是有错误的。一般来说是件不会差错很大,一般出现在跨日交易中,例如:当天交易无账单,先标记为差错,第二天再改正。
  四、支付基础服务
  Webhook
  公共推送服务
  主动查询
  补偿
  链路监控
  Webhook
  公共推送服务
  主动查询
  异步延时调用
  场景:
  订单创建成功的时候会向服务推送主动查询信息,如果订单支付成功会通知服务取消后续的主动查询,否则在过期时间点向渠道主动查询订单是否支付目的是避免渠道异步通知服务的异常。
  退款创建成功的时候会向服务推送主动查询信息,该服务会在一定的时间范围内多次查询渠道直到有明确的结果返回(有些渠道没有异步通知)。
  转账也是类似的逻辑,但某些渠道只提供重试的功能,要注意幂等性。
  补偿:
  协调保证各模块间数据的一致性;
  一般会跟重试、回滚、兜底来协调使用;
  使用条件:系统异常、业务异常;
  补偿失败报警人工干预。
  链路监控
  展示信息:应用、URL、调用方、调用时间、调用次数、调用失败次数、本地平均耗时、总平均耗时、调用失败平均耗时、错误率、依赖度。
  关注:Cache、SQL、HTTP、TCP
  基本信息
  依赖度
  五、支付安全
  数据安全
  防窃听、防越权防抵赖、防破坏、防篡改、防重放、防泄漏。
  使用范围:网络、系统、应用、业务等。
  数据安全要点
  加密通讯(防窃听)
  双向签名(防抵赖、防篡改)
  敏感数据加密存储(防泄漏)
  密钥管理(通过认证接口获取,只允许加载到内存,不允许直接写入配置文件)
  权限控制(防越权非法访问)
  数据的完整性(放篡改数据被恶意修改、非法篡改)
  其他
  内部接口认证。
  避免内部代码未经审核发布到托管平台!!!
  数据异常分析。
  安全机构合作。
  注意点
  使用HTTPS加密传输;
  传输的数据使用签名;
  提交的数据是符合规则并且是不存在或者是未支付的;
  支付成功以服务端异步通知为准。
投诉 评论 转载

万字长文深度分析:产品排行榜的设计和玩法排行无处不在,很多产品本质就是排行榜的玩法,优质产品的排行功能都做得很好,含排行榜设计四大心理分析和六大操作技巧。排行于无形之中把你上了很多次,而你还依然无所察觉。……假如让我来设计一套会议系统。。回想上一次我们参加开会时在什么时候,是跟谁在什么地方开会很可能,当时使用的投影设备就是一台普通的投影仪外加一台用于演示资料的笔记本吧。像在日常工作中的方案演示、咖啡厅里的……大眼模型:产品是承载用户价值的最终容器大眼模型对于产品的设计需要提出了更高的要求,我们也希望通过分享EICO团队的方法论理解我们眼中的产品设计,帮助大家定位自己产品的阶段性诉求。在文章《EICO:设计的边界》……基础向:从0开始学习支付系统架构文章主要是从支付架构、支付流程分析、支付核心逻辑、支付基础服务、支付安全五个方面来详细讲述支付系统架构,一起来看看流程图:架构的定义:架构一定是基于业务功能来展开的……权限管理:带着枷锁跳舞发现每次设计权限体系都很痛苦,归根结底就是没有沉淀出一套方法论。看了下网上的文章大多是讲RBAC权限管理模型RBAC0介绍到RBAC3,看的吐血了,还是自己总结点实际点的东西。……设计中的异常:超全面的设计异常情况和处理方式汇总本篇文章汇总了常见的异常情况及处理方式,赶紧来收藏学习!在设计中,一些异常情况经常很容易被忽略,在后期的实践过程才发现原来还有这种状态一、快速了解异常是什么?……关于CRM体系的高阶模型基础系统设计方法论今天想和大家分享的是最近设计CRM系统过程中产生的一些思考和心得,希望通过本文大家能对CRM系统有一个全新而深刻的认识。文章结构:CRM体系的基本概念深层理……B端与C端的设计价值差异分析作为B端产品设计师,当我接触一个新项目正准备写用户故事的时候,SE告诉我,UCD的方法是围绕真实用户的,但我们运营商的产品不一样,我们接触不到真实用户并且那些东西也没有那么重要……让输入更简单:APP设计中简化输入的10种方式本文主要总结了在应用设计中简化输入的10种方式,让输入变得更简单不知道你有没有在走路时和朋友聊天经常打错字,有没有在输入长密码的时候因为输错抓狂呢,甚至输到奔溃也还没登录……真实案例需求分析师如何设计出让客户满意的系统界面?软件需求分析就好比是装修房子,客户把户型告诉你,你去设计每个房间放些什么,如何放比较合理。如果把油烟机放到卧室去,那就乱套了。先说一下背景:客户公司是做信用评级的,之前他……看似简单的输入框,你真的会设计吗?输入框几乎每天都会接触到,但是看似简单的输入框,你真的会设计吗?不知道各位设计师在做设计的时候,是不是经常觉得自己做得很完善了,几乎没差什么逻辑或或者是图,但是往往后期开……产品设计七宗罪:任何离开人性谈需求的行为都是耍流氓周鸿祎说:商业的本质就是让人性得到释放,做产品同样如此。做产品,归根结底就是研究如何满足人性的最根本需求。面对一个产品,有什么方法能够快速判断它未来是否能够成功?很……
AppStore预览视频AppPreviews制作心得总结PRD中产品功能点及其描述自查清单【知乎问答】微信里面让你删掉一个功能,你选哪个?大数据分析可视化:不止酷炫,而且内涵提醒功能泛滥的时代,如何保持清醒?客户常说的“互动性不够强”是什么?为什么一个聪明的产品经理设计产品原型时会邀请设计和开发加入人性那么广,我想看看从互联网产品看人性〔杂谈〕产品经理招聘:杨过韦小宝你选哪一个?〔干货〕用户体验太抽象?一个神奇的公式帮你轻松搞定!从Uber和国产打车App对比看人性哪些能力很重要,但却是多数人没有的?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界