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

支付系统设计:对账处理(二)

11月19日 先锋客投稿
  可以说,对账是支付系统最头疼的事情。每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。
  对电商系统来说,每一笔交易,在所有相关主体侧都要能对得上:
  交易主体,如果发起人是个人,必须能够从个人交易历史记录中找到这笔交易。但大部分人不会保留电子记录,所以一般是提供可以下载的账单或交易记录,让用户自己对去。
  交易对手,一般是商户。商户侧对账处理同用户侧,也仅仅提供对账单。
  交易渠道侧,这是对账的重点,一是核实交易流水,二是核实交易佣金,毕竟是租用人家通道做结算的。
  那有哪些记录需要对账?目前主要是两个:一个是交易记录;一个是退款记录。
  对账处理流程
  一般来说,对账流程涉及到如下步骤:渠道对账单下载、本地交易记录准备、轧账、平账。
  渠道对账单下载
  银行,第三方支付,银联等,基本都会提供对账单下载的功能。不过也有少数工作做不到位或者太到位的银行,只提供账单查询后台,不提供对账单下载功能。
  对开发人员来说,这里有几个坑:
  对账单格式不一。文本,XML,csv的都有。为了后续能够统一处理,在账单下载完成后,需要进行标准化处理。
  下载方式不一,HTTP,HTTPS,FTP的,都有。下载程序需要按照渠道的协议来处理。
  下载时间不一,一般是凌晨1点后,到中午12才能用的也有。如果在预定的时间取不到数据,需要注意重试读取。
  稳定性差。FTP服务器出问题那是常有的事。渠道侧解决方案往往就是重启。所以重试机制是必要的。
  看一下第三方支付的对账单情况:
  银行直连的对账情况:
  技术选型上,HTTP(S)用apachehttpclient即可实现链接池和断点续传,FTP也可以使用ApacheCommonsNetAPI。但不管是哪一个,都需要设置重试次数和链接超时间。重试次数和间隔的设置需要小心,重试太频繁,容易把服务器打死。;时间间隔太大,又会阻塞后续处理步骤。5~10分钟是一个合适的重试间隔区间。
  链接超时指在服务器出现问题时,连接在指定时间内获取不到数据即自动断开。这个很容易被忽略。我们有一次系统出问题,是渠道侧的FTP假死后重启,导致我们的客户端挂住,一直在等待重新链接。
  渠道对账单标准化
  找个例子大家看看,比如微信的对账单,他是csv格式的,包括如下信息:
  交易时间:这是在微信侧的支付完成的时间。这个时间会成为一个陷阱。
  公众账号ID,商户号,子商户号,设备号:这些信息需要做验证,确保是自己的单子,不要让微信把老王家的单子也给发过来了;
  微信订单号,商户订单号:这两个是对单的核心。前者是微信侧产生的订单号,在微信支付接口返回值中有。但是万一收不到这个返回值,那在本地记录中可能就空了。后者是我们发送给微信的订单号,一般用这个来做对单依据。两边的数据中都会有这个值。
  用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额:这几个就是对单的核心字段,必须确保双方是一致的。
  商品名称,商户数据包,手续费,费率:这些是可选验证。
  而某宝的对账单,是文本格式的,用空格隔开。他们家的就简单很多,只有商户订单号,交易流水号,交易时间,支付时间,付款方,交易金额,交易类型,交易状态这些字段。
  由于每个渠道的账单格式都不尽相同,在得到账单后,下一步是对账单做标准化处理,这样轧帐以及后续工作就可以统一处理了。标准化后的账单数据可以放在文件系统或者数据库中。这取决于交易数据量。每天百万以上的量,还是使用文件系统,比较合适。数据库操作相对比较慢,也浪费资源。
  基于文件系统的标准化涉及如下内容:
  文件格式标准化:统一使用csv或者json或者xml格式。如果是使用hadoop或者spark来对账,使用csv是个不错的选择。
  文件存储统一化:文件目录,文件名都需要遵循统一命名规范。
  为了加快处理速度,我们使用hdfs作为文件系统,有利于后续的对账的处理。
  本地交易记录准备
  本地交易记录的准备,总的来说有如下方法:啥都不做,直接用原始数据。鉴于大部分系统使用的是mysql,这也意味着在MySQL上做对账。对账时需要大量的数据查找工作,必然会影响线上业务。在数据规模较大,比如超过100万时,就不太合适了。
  当然,还有一个选择是使用备库来执行对账,这样既简单,也不影响线上业务。这是典型的空间换时间的做法。
  如果业务大到需要分表分库才能处理,那对账数据准备也不一样。使用分库也不现实,因为分库一般是按照主体id,而不是渠道id,来分库,这样对账就需要在多个库上进行,效率反而降低了。而对分表分库建立从库也非常耗费资源。这种情况下,需要同步一份数据到(hdfs)文件系统中,或者NOSQL数据库上。
  由于交易记录是支付系统核心数据,有大量的应用,如信用、风控等,都需要交易记录数据。这些应用对交易记录的需求还不完全一致,为了提升性能,交易记录会使用异步的方式来将数据投递给使用方。交易记录在入库时,投递消息到消息系统中。使用方监听这个消息,一旦收到新消息,则从交易记录库中查询数据,获取数据并更新到库中。关于此类数据同步的文章不少,这里就不详细介绍。
  轧帐
  轧帐是按照客户订单号来比较本地交易记录和渠道交易记录是否一致。从算法角度,是计算两个数组的差异。在单机运行时,可以采用的算法不少,这里不详细介绍。我们推荐采用mapreduce来轧帐,这有个优势,可以按照订单号将渠道提供的记录和本地记录shuffle到同一个reduce处理上,这样就可以很容易进行数据比对。轧帐中最大的坑,莫过于切分点的问题。
  比如以整0点为切分点,那存在一个问题,本地23:59发起的交易,到了渠道侧,可能会在00:01处理,这一笔交易变成第二天的帐了。实际处理中,一笔交易在渠道侧处理,花上几分钟都有可能。对于切分点附近无法确认的帐,做一个时间窗,在时间窗内的数据,留待第二天对账时继续处理。
  平帐
  发现两边不一致的数据,那应该如何处理?数据量不大时,记录起来,人工甄别就行。但如果数据量很大,每天上千条,人工处理就成本太高了。这个没有统一的处理方法,需要根据有问题的数据,做个分析,然后做自动处理。针对交易记录的对账的处理,主要有如下情况:
  本地未支付,支付渠道已支付。这主要是本地未正确接收到渠道下发的异步通知导致。一般处理是将本地状态修改为已支付,并做响应的后续处理,比如通知业务方等。
  本地已支付,支付渠道已支付,但是金额不同,这个需要人工核查。
  本地已支付,但是支付渠道中无记录;或者本地无记录,支付渠道有记录。在排除跨日因素外,这种情况非常少见,需要了解具体原因后做处理。
  针对退款的对账处理,主要有如下情况:
  本地未退款,支付渠道已退款,则以支付渠道为准,修改本地为已退款状态,并触发后续处理。
  本地已退款、支付渠道已退款,但是金额不同,需要人工核查;
  本地已退款,但是支付渠道无记录;或者支付渠道有记录,但是本地没有。在排除跨日因素外,这种情况非常少见,需要了解具体原因后做处理。
  总之,对账工作,即复杂也不复杂。需要细心,对业务要有深入的了解,并选择合适的架构。
  相关阅读
  支付系统设计:支付系统的账户模型(一)
投诉 评论

个性化推荐十大挑战(下)本文为个性化推荐十大挑战最后一部分,主要介绍了推荐系统效果评估,用户界面与用户体验,多维数据的交叉利用,社会推荐。接上文:个性化推荐十大挑战(中)挑战七:推荐系统效……为什么我们不反感微信做支付,却反感支付宝做社交?携带着不安全感的基因,支付宝做社交既是战略导向,也是为前途考量,这次充满荷尔蒙和LOW的尝试,不知能不能留住用户的心。支付宝和微信都是超级APP,功能非常丰富,同是生态型的AP……个性化推荐十大挑战(中)前文介绍了个性化推荐十大挑战的背景其中的数据稀疏性问题,冷启动问题。本篇介绍个性化推荐十大挑战中的大数据处理与增量计算问题,多样性与精确性的两难困境,推荐系统的脆弱性问题,用户……深度怎么总是支付宝?马云的社交梦阿里就没人能扛吗?支付宝的料,想必大家已经饱了眼瘾了。马云这是社交梦未死,还是支付宝产品经理另有打算?怎么总是支付宝?我们今天准备从DT的角度解读这件事。一、社交是假的,本质还是要数据……也来扒一扒移动支付NFC支付(上)编者按:又快到苹果新品发布会,一如往年,苹果手机对NFC的支持又引来猜测。的确在移动支付风起云涌的时代,苹果的站队将能一锤定音的作用。那移动支付的未来将会在哪里呢?欢迎关注“也……个性化推荐十大挑战(上)有的人觉得个性化推荐就是细分市场和精准营销,实际上细分市场和精准营销往往是把潜在的用户分成很多群体,这固然相比基于全体的统计有了长足的进步,但是距离“给每一个用户量身定做的信息……支付系统设计:对账处理(二)可以说,对账是支付系统最头疼的事情。每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,……观察DEMO:支付宝的屡败屡战当昨天支付宝的新版“圈子”裹挟着各种美女的大尺度照片霸占了社交网络的话题头条时,舆论导向就既定了,再加上“娱乐圈纪委”王思聪的一条“支付鸨”的微博,就像是彻底给这事儿定了一个“……“小绿人”就这样灭了,它不会再亮起来小雪导语:犹记得当初企鹅和360干架的时候很多人弃用企鹅转向MSN,如今,企鹅早已运用微信占领了大众,小绿人却面临消失,不注重更新不注重用户体验的产品被淘汰也算了大势了。……起点学院内训起点学院走进易立德,千锤百炼出精品2014年2016年对于很多面临转型互联网的公司来说都是痛苦的,两年来起点学院接触了近百家企业,涉及家电、汽车、金融、医疗等领域,在和这些企业的接触中,我们能深刻的感受到他们对……移动互联网内容营销“玩法”变了!原生广告“主宰”新规则这篇文章说一下原生广告对对互联网及移动互联网带来改变,上篇文章中写道【原生广告“颠覆”来袭,移动互联网营销革命爆发】在我看来,互联网营销最本质的东西就是内容,不管你是搜索营销、……蛋糕背后的大坑:互联网车险的主要模式与可行性分析要想在互联网车险这个市场有所作为,还需要创业者和从业公司更多的时间和耐心去寻求突破。一、互联网车险市场发展状况:2013年左右,随着互联网金融的极速发展,互联网车险……
从赔光身家到年销数千万,这个中年男人在直播间“逆袭”直播间观众都很信任老黄。不仅因为他坦诚的直播风格,也因为他的退伍老兵身份。没有人质疑过这个身份,假冒者很难随口报出自己的部队代号,“当过兵的人一听就知道。”今年41……淘宝京东念念不忘的二楼,究竟是什么?剁手党不难发现,如今在淘宝进入很多品牌的店铺,扑面而来的是一个占据半屏的店铺直播间或短视频,一句引导下滑、点击的文案,十分显眼。直播间或短视频在半屏显示时默认静音,点进去后,音……微信公众号后台用户增长来源新增视频号数据站长之家(ChinaZ。com)2月23日消息:随着公众号和视频号打通,运营者也就可以利用二者相互引流,而现在在公众号后台也能清楚的看到视频号为公众号带来的粉丝量了。进入……抖音整治“引流收徒”类账号下架侵权视频338万条站长之家(ChinaZ。com)2月22日消息:如果你经常刷抖音,你可能见过这类账号,他们一般会在用户名称的后面带上(收徒)两个字。这类账号内容基本上是通过剪辑影视画面涨粉,然……手机浏览器看文章自动跳转下载APP人民日报发声人口红利走到终点,不少APP在吸引用户时采取的手段越来越卑劣”,其中之一就是浏览器文章只显示一半,点击阅读全文”就自动跳转下载APP。有些用户为了阅读全文不得不下载安装A……腾讯内测团购工具“鹅享团”针对微信私域交易场景站长之家(ChinaZ。com)2月18日消息:据新言财经消息,近日,腾讯内测了一款团购工具“鹅享团”,这是腾讯首次涉足团购领域。据了解,鹅享团是面向小微商户,针对微信私域交易……腾讯:承诺2030年前实现全面碳中和站长之家(ChinaZ。com)2月24日消息:据腾讯微信公众号消息,腾讯宣布今天开始净零行动,并承诺不晚于2030年,实现自身运营及供应链的全面碳中和,以及100绿色电力。……我写了一个程序,我难过的时候,电脑会自动给我发猫猫的照片最近,国内外糟心的事太多了,每天看得文摘菌郁郁寡欢。每次这个时候,文摘菌都会去朋友家吸猫,吸着吸着就感觉神清气爽了,可谓一剂良药。最近文摘菌发现,吸猫治愈这个事,还……《瑞克与莫蒂》和《外星也难民》幕后工作者正在组建工会本周二,TheAnimationGiuld,IATSELocal839(TAG)宣布,《瑞克与莫蒂》和《外星也难民》两部动画背后的从业者正在组建工会。Deadline报道称,A……白杨SEO:为什么做短视频、直播比写网站文章、公众号图文更难前言:这是白杨SEO公众号原创第346篇。为什么想到写这个?因为短视频与直播现在是流量趋势,流量从业人员均应该了解到底应该如何做?上面这张手写文字图是我在准备写这篇关于短……腾讯云爆款2核2G云服务器首年40元,企业首购最高获赠3002022腾讯云新春采购云服务器特价40元一年,错过再等一年哦。据了解,这波优惠活动将会持续到3月31日,如果你有云服务器方面购买需求的话,那这波羊毛可别错过了。本次腾讯云……2022,私域中进化的导购们!当我们回看整个私域进程,会发现有个群体之前被大家一直忽略,后来却又被无数企业开始重视。这个群体就是导购。私域走到今天,导购甚至成为影响企业私域进程的重要决定因素,并……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界