对账设计

转自 https://coffee.pmcaff.com/article/1650943162549376/pmcaff?utm_source=forum&tdsourcetag=s_pctim_aiomsg

对账设计

接下来讲讲对账咋做的。因为对账里有个财会知识,叫单边账,双边账。根据自家系统的需求,我采用了双边账这一类型。

对账主流程有四步:

(一)下载账单:

1.定时触发下载任务

时间建议设置为:支付宝3:30,微信10:30

支付渠道 对账周期 账单提供方式 账单文件格式
支付宝 3:30 https xml
支付宝退款 3:30 https xml
微信 10:30 https Gzip(txt)
微信退款 10:30 https Gzip(txt)

2.查询/连接下载地址:

支付通道 查询接口/地址 传参 出参
支付宝 alipay.data.dataservice.bill.downloadurl.query    
微信 https://api.mch.weixin.qq.com/pay/downloadbill    

3.重试机制:

若下载失败,5分钟重试一次,尝试10次。

4.下载文件:

通过https访问下载地址,将文件下载到本地。

(二)创建批次

记录对账批次,对账结束时将对账的结果信息存储到批次中。

(三)解析文件

1.判断文件来源通道

微信,支付宝

2.判断文件类型

xml,txt,csv?

微信是Gzip压缩包,支付宝是XML。

3.解析文件

由开发编写脚本程序,解析文件内容的范式。

4.转换入库

文件转换为CSV格式,存储入库。

5.账单明细

后台管理系统展示账单的明细内容。供财务查错账使用。

(四)账单文件存储

文件命名:业务类型_资金渠道_清算日期_序列号.文件格式

I_WEIXIN_20190101_01.csv

1.业务类型:入款I、出款O、退款R(撤销、退货)。

2.资金渠道:WEIXIN/ALIPAY

3.清算日期:YYYY-MM-DD

4.序列号:同一业务类型、同一资金渠道存在,多份对账单的情况。

5.文件格式:CSV格式。

(五)对账处理

获取、解析完支付通道的账单数据后,进行对账时,需要将对账单中订单、金额、服务费与我方平台系统订单、金额、服务费进行比对。

1.找出订单

根据渠道、日期、交易状态(交易成功)获取我方系统订单;

2.系统订单与支付通道对账单勾对

    A.按照系统订单中顺序一条条与对账单记录进行勾对;

    B.勾对时先按照订单号进行勾对,再进行金额勾对;

    C.系统订单勾对完成后,检查对账单是否存在剩余记录。

3.对账处理

对于订单号、金额一致的,记为已平账;

对于订单号勾对一致,但金额不一致的,记为金额不一致,放入差错池;

对于订单号匹配不到的,记为短账。(我方有,对方没有)

对于对账单中存在剩余记录,全部记为多账。(我方没有,对方有)

4.结果输出:

对账无差异的,显示对账成功,可进行汇总确认。

对账存在差异的进行展示,并在差错池处理。

3次对账都没对平的放入差错池。

对账结束时候,将对账的结果信息存储在批次中。

5.对账逻辑:

查出我方交易状态成功的订单,遍历支付通道订单的所有数据,找出订单号一致的订单,勾对金额、服务费是否一致。

// 缓存池3天依旧对不平的交易,放入差错池  //

遍历缓存池

if 今日-缓存池中订单号交易时间>2

    该订单放入差错池

// 勾对清我方有,对方也有的账单  //

if    我方单在对方单中能找到

        if 金额一致,跳过

        else 该笔置入差错池

else 我方单在对方单找不到

        if 遍历缓存池找到

                if  金额一致,跳过

                else 置入差错池

        else 遍历缓存池找不到

                记为短款,存入缓存池

// 找出我方没有,对方有的长款  //

if 对账单中还有订单,

        记为长款,存入缓存池

else

        跳过

(六)对账接口

支付宝_app支付接口2.0:https://docs.open.alipay.com/api_1/alipay.trade.app.pay

微信_app支付:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_6&index=8


五.后台_对账表单设计

(一)交易订单列表:

序号 内支付账号 用户ID 用户名称 商户订单号 业务类型 订单金额 状态 下单时间 支付通道 支付类型
1     张大胆   消费 10 支付成功   支付宝 即时转账
2 XXX   王小明   提现 100 交易超时   微信 即时转账
3     李老汉   消费 50     余额  

交易订单的展示:跟交易笔数对应。查看订单提交信息,作用--用户行为漏斗模型分析,辅助项目排序。(下单了但不支付,这类项目的排序权重上升)

字段说明:

1.序号:0,1,2...99...

2.内支付账号:我方生成,系统内部支付账户编号。

3.用户ID:系统内用户编号。

4.用户名称:系统内用户的名称。

5.商户订单号:我方生成传给支付通道。支付宝和微信变量都定义为“out_trade_no”。

6.业务类型:消费,退款,提现,充值。

6.订单金额:total_fee。

7.状态:等待支付,支付成功,交易超时(15分钟未支付,认定超时且关闭交易)。

7.下单时间:YYYY-MM-DD hh-mm-ss

8.支付通道:微信,支付宝,余额。(不可混合)

9.支付类型:默认即时转账。

(二)支付记录列表:(双边账)

交易订单的展示:跟账户明细对应。双边记账,记录每笔支付的业务流、资金流明细。

字段说明:

1.序号:0,1,2...99...

2.商户订单号:out_trade_no。

3.用户ID:系统内用户编号。

4.用户名称:系统内用户的名称。

5.交易主体

(1)内账户:

借记金额--收入

贷记金额--支出

(2)外账户

借记金额--收入

贷记金额--支出

6.交易对手

(1)内账户:

借记金额--收入

贷记金额--支出

(2)外账户

借记金额--收入

贷记金额--支出

7.创建时间:交易生成时间。

8.业务类型:消费,退款,提现,充值。

9.支付通道:微信,支付宝,余额。(不可混合)

10.支付类型:默认即时转账。(预留预授权等支付类型位置)

11.支付流水号:trade_no。

12.订单金额:total_fee。

13.支付通道手续费:由签约的支付通道规定的标准定。

14.平台服务费:消费类收取5%服务费,提现、充值、充退类不收服务费;

15.状态:等待支付,支付成功,交易超时(15分钟未支付,认定超时且关闭交易)。

转载于:https://my.oschina.net/Denniswang/blog/3041649

你可能感兴趣的:(对账设计)