对账的一些总结- 电信计费系统
什么是对账
很多时候运营商的电信BSS系统也叫业务支撑系统,客户会通过VC充值卡进行充值或者通过app从第三方(银行,如支付宝等—)进行话费充值。
为了保证费用的准确性, 需要把两边的充值记录拿出来对比,确保两边记录是balanced平衡的。
为什么要对账
如果不对账,充值的时候可能客户钱钱充上了,另一端充值失败的问题。导致客户投诉或者收入损失。
另外对账如果有误差,
如果是VC侧有记录,BSS没记录,可以考虑两种方式:平账:一种是通过job自动平账,或者通过GUI运营商员工查询后单个或者批量手工平账。也可以不平账。
(为什么会存在这些问题呢?)
对账的几种模式+How
1.文件对账:
1.1以VC充值卡充值为例,一般数据以VC提供的文件为准。
High level workflow.
a.ZTE VC充值平台会定期生成包括date,Pin number,mobile number等字段的对账文件,
b.要么他们mput推送要么我们ftp方式去get。
c.然后BSS系统通过job去读区里面的文件,入库处理。
c1:如果OCS充值了,VC没有记录需要回退费用。c2:如果VC有记录,OCS没有,需要给客户补充值。
RECONCILE_STATE字段说明:A-未对帐,B-帐务平衡,C-不平衡,D-补充付款,E-冲正,F-本端多已被冲正。
1.1.1我方多,对方少,即VC对帐文件中没有该笔缴费记录,而数据库中有:
acct_book_reconcile表原记录状态由A变更为F。并对原缴费记录,做冲正处理,而新增记录ACCT_BOOK_RECONCILE表状态为E。表示冲正。
1.1.2双方一致,VC对帐文件与数据库中均有该笔记录
payment_partner表状态A->B;acct_book_reconcile表状态 A->B
1.1.3 我方少,对方多 ,VC对帐文件中有这笔记录,而数据库中没有。
会做充值操作 将新增缴费记录的acct_book_reconcile状态记为D(补充付款),将payment_partner原对端多出的记录的状态记为F(本端多已被冲正)。
代码解析:
/account/src/com/xxxx/xxxx/bss/account/base/payment/dao/abstractimpl/ReconcileMgrDAO
读取VC ftp过来的文件通过batchInsertPaymentPartner方法插入partner缴费表:
PAYMENT_PARTNER(LOG_ID,PARTNER_SN,CHARGE,SCRATCH_CARD_PWD,REVERSED_SN,PREFIX,ACC_NBR,RECONCILE_STATE,DAYS,COMMENTS,SP_ID,ROUTING_ID)
然后通过updateEqualPaymentReconcile方法
创建4个临时表:
createAcctbookTempTable:TEMP_AB
"INSERT INTO TEMP_AB(ACCT_BOOK_ID,CHARGE) \nSELECT E.ACCT_BOOK_ID, E.CHARGE \nFROM ACCT_BOOK E \nWHERE E.CREATED_DATE>=TO_DATE(:P_START_TIME,'YYYY-MM-DD') - (&MINUS_SECONDS&/(3600 * 24)) AND E.CREATED_DATE<(TO_DATE(:P_END_TIME ,'YYYY-MM-DD') + 1 + (&MINUS_SECONDS&/(3600 * 24)) ) AND E.CONTACT_CHANNEL_ID= :P_CONTACT_CHANNEL_ID AND E.ACCT_BOOK_TYPE = 'P'";
----某段时间某渠道的充值记录。如果是按小时平账,时间差应该是小时,考虑到一些千万级用户的运营商,可以考虑date上建索引或者通过part_id的日分区来优化sql。
createPaymentPartnerTempTable:TEMP_ABR
"INSERT INTO TEMP_ABR(ACCT_BOOK_ID,CHARGE,PARTNER_SN) \nSELECT T.ACCT_BOOK_ID, B.CHARGE, B.PARTNER_SN \n FROM \n PAYMENT_PARTNER B, ACCT_BOOK_RECONCILE T \n WHERE B.LOG_ID = :P_LOG_ID \n AND B.PARTNER_SN = T.PARTNER_SN";
createEqualChargeTempTable:TEMP_ABR_UPDATE_B
"INSERT INTO TEMP_ABR_UPDATE_B(ACCT_BOOK_ID,PARTNER_SN) SELECT A.ACCT_BOOK_ID, A.PARTNER_SN \n FROM TEMP_ABR A, TEMP_AB B \n WHERE A.ACCT_BOOK_ID = B.ACCT_BOOK_ID \n AND -A.CHARGE = B.CHARGE "; ///记录平,同时充值金额也平的记录。
createNotEqualChargeTempTable:TEMP_ABR_UPDATE_C
"INSERT INTO TEMP_ABR_UPDATE_C(ACCT_BOOK_ID,PARTNER_SN) SELECT A.ACCT_BOOK_ID, A.PARTNER_SN \n FROM TEMP_ABR A, TEMP_AB B \n WHERE A.ACCT_BOOK_ID = B.ACCT_BOOK_ID \n AND -A.CHARGE != B.CHARGE "; //记录平,但是金额不平的记录。
然后基于上面4个临时表,RECONCILE_STATE(A代表未到账,B代表账目平,C代表账不平)
如果平账更新ACCT_BOOK_RECONCILE(RECONCILE_STATE 变A-> B,LOG_ID),更新PAYMENT_PARTNER表RECONCILE_STATE:A-->B ,参考TEMP_ABR_UPDATE_B表
如果不平,更新ACCT_BOOK_RECONCILE(RECONCILE_STATE 变A-> C,LOG_ID),更新PAYMENT_PARTNER表RECONCILE_STATE:A-->C ,参考TEMP_ABR_UPDATE_C表
最后 TRUNCATE掉4个临时表。
最终对账处理结果统一在ACCT_BOOK_RECONCILE_LOG里面记录。
另外,由于VC系统时间和BSS系统时间可能不一致,需要统一对账使用的时间。
1.2 以代理商结算为例:ticket number--->1471226
Partner每个月会传Statement文件过来,是第三方平台统计的业务订购情况,用于跟我们系统的计算结果进行对账。
Statement文件格式如下:
PartnerName|PartnerCode|ServiceName|ServiceCode|CA Brut Amount|CreatedDate
文件可以通过FTP传给我们,也可以在界面上传处理,
BSS内部做完合帐之后,就可以跟Partner提供的费用文件进行对账了。
对账文件是按照Partner为维度生成的,每个Partner生成一份对账文件,可以包含多个Service,分多页展示。
一个业务的对账结果里,各个字段的含义如下:
CA BRUT: Service revenue (including Taxes) ,含税总和
CA NET:NET revenue (excluding Taxes),除税以后的总和
REV. SHARE: NET partner revenue after revenue sharing,按照分成比例计算后的总和
FACTURE: Amount to pay to partner in currency (FCFA),实际应该支付给Partner的总和
对账结果计算出来后,界面上先打开预览,待客户确认信息都无误后,保存提交,支持导出 PDF和CSV格式。
后台会自动把文件保存一份到服务器某个目录下,由FTP脚本传给对端。
银行对账:
比如某平台Fuc对接了银行,支付宝等支付渠道,BSS直接跟平台对接。
使用Fuc接口支付的时,Fuc平台会生成一条交易流水。当该笔交易退款时,Fuc在交易流水的报告中只是将该条交易流水的状态置为已回退状态,同时专门提供了一个退款的文件用于存储所有退款记录。会生成两个对账文件:
支付成功的记录:cashier_record_yyyymmdd.xls 如下
Payment method | Order No. | Store | Payer | Payment Amount(CNY) | Amount(USD) | Amount(PHP) | Coupon amount(PHP) | Payment Time | Status | Consumer note | Merchant note | Authorization number | AliPay Order Type | |
alipay | 201208000002611 | Dito Test Online | sla***@163.com | 0.85 | 0.13 | 5.94 | 0 | 2020-12-08 16:23:22 | Paid | Alipay Online Order | ||||
alipay | 201208000003433 | Dito Test | 189****6875 | -5.45 | -0.85 | -40 | 0 | 2020-12-08 11:33:12 | Refunded | Alipay Offline Order | ||||
alipay | 201208000003425 | Dito Test | 151****2328 | -1.37 | -0.21 | -10 | 0 | 2020-12-08 10:15:28 | Refunded | Alipay Offline Order | ||||
alipay | 201208000002591 | Dito Test | 151****0645 | -2.05 | -0.32 | -15 | 0 | 2020-12-08 10:02:42 | Refunded | Alipay Offline Order | ||||
Total | 0.85 | 1.51 | 5.94 | 0 |
退款成功、退款未成功以及等待确认的订单 phl_refund_history_20201208211100.csv
Order No. | Payment method | Store Name | Apply refund fee(USD) | Apply refund fee(PHP) | Refund fee(USD) | Refund fee(PHP) | Goods Price(USD) | Goods Price(PHP) | Refund fee type | Operator | Refund number | Refund Time | Refund application time | Status | Refund remark | |
201208000002591 | alipay | Dito Test | 0.32 | 15 | 0.32 | 15 | 0.32 | 15 | PHP | ditoadmin | C2118S47392088202012081145001206 | 2020/12/8 11:45 | 2020/12/8 11:45 | Successful | Cancelled payment | |
201208000003425 | alipay | Dito Test | 0.21 | 10 | 0.21 | 10 | 0.21 | 10 | PHP | ditoadmin | C2118S47392088202012081144411593 | 2020/12/8 11:44 | 2020/12/8 11:44 | Successful | Wrong amount-underpaid | |
201208000003433 | alipay | Dito Test | 0.85 | 40 | 0.85 | 40 | 0.85 | 40 | PHP | ditoadmin | C2118S47392088202012081143553430 | 2020/12/8 11:43 | 2020/12/8 11:43 | Successful | Wrong amount-overpaid |
如果遗漏了退款的就会导致账不平,所以要一起处理。
- 退款中需要将fuc返回的退款流水号out_refund_no记录到PAY_CHANNEL_SERIAL字段中,用于后续对账
- 通过文件名前缀判别是支付成功文件还是退款文件,分别解析处理
- 支付成功的文件对账时可不关注Status字段,文件中的记录都是支付成功的记录,只是有的记录可能后续又再次发起了退款或已经退款成功
- 退款文件中需要判别Status字段,只有为Successful状态的记录才是退款成功的记录,只取退款成功的记录与payc的退款记录进行对账
- 退款文件中的Refund number即为payc退款记录中的PAY_CHANNEL_SERIAL值
- 根据退款文件中的Refund fee type取对应的Refund fee(USD)或Refund fee(PHP) 用户获取退款金额和货币类型
重新对账:
选择时间,渠道等支持重新对账,需要删除数据看里面的历史记录。
对账的一些总结- 电信计费系统相关推荐
- java电信计费项目论文_电信计费系统的设计与实现毕业论文.doc
电信计费系统的设计与实现毕业论文 毕业设计(论文)任务书 毕业设计(论文)题目: 电信计费系统的设计与实现 毕业设计(论文)要求及原始数据(资料): 1.综述国内外电信计费系统的技术研究现状: 2.介 ...
- java电信计费项目论文_毕业论文-基于JAVA开发的电信IP计费系统3.doc
您所在位置:网站首页 > 海量文档  > 计算机 > Java 毕业论文-基于JAVA开发的电信IP计费系统3.doc ...
- java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文
基于JAVA开发的电信IP计费系统设计毕业论文 本科毕业设计(论文)基于 JAVA 开发的电信 IP 计费系统毕业设计(论文)任务书学院:信息科学与工程学院 系级教学单位:电子与通信工程学号学生姓名专 ...
- 视频回顾 | Pulsar Summit Asia 2020 · 场景案例(上):即时零售, 金融证券, 物联网, 电信计费等...
关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...
- java电信计费项目,java毕业设计_springboot框架的电信计费
今天介绍一个java毕设题目, 题目内容为springboot框架的电信计费, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+springb ...
- 电信计费模拟系统c语言,电信计费模拟实现(C语言).doc
- 程序设计报告 ( 2012 / 2013 学年 第 二 学期) 题 目: 电信计费模拟实现 专 业 通信工程 学 生 姓 名 班 级 学 号 指 导 教 师 郭 剑 指 导 单 位 计算机软件教学 ...
- 用c语言编写计费程序,电信计费模拟实现(C语言)...docx
日期 日期2013 年6月27日 程序设计报告 (2012 / 2013 学年第二学期) 专 题 目: 业 电信计费模拟实现 通信工程 学 生 姓 名 班 级 学 口号 郭佥 郭佥I」 指 导 教 师 ...
- 什么是电信BOSS系统?
BOSS(Business & Operation Support System)是业务操作支撑系统的简称. BOSS名称是由中国移动联合多家咨询公司为传统电信企业计费系统起的转门名称,是世界 ...
- [附源码]计算机毕业设计JAVA基于Java小区电信计费管理系统
[附源码]计算机毕业设计JAVA基于Java小区电信计费管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...
最新文章
- TypeError: 'module' object is not callable 原因分析
- pcb二次钻孔_PCB的内层制作流程,你学会了吗?
- ListView smoothScrollToPosition 定位不准笨方法解决
- mysql 升级 openssl_【1分钟教程】LNMP架构应用实战 Openssl升级操作
- 【Elasticsearch】2021 年的顶级 ETL 工具......以及对 ETL 说“不”的理由
- 金融科技的别样财报:趣店坎坷后回暖、品钛首盈利
- 19【推荐系统5】NeuralCF
- 苹果Mac全能视频播放器:Playr
- Spark Java实战
- 简单使用apipost和jmeter 测试接口
- 视频会议中回声消除与噪音抑制的技巧
- 类似于android短信校验码的demo
- 微信的营销策略你了解多少?
- Android自定义Activity切换动画完全解析
- 在a标签中使用javascript
- CentOS 7 安装 Mysql 8.0 教程
- 原理图,PCB设计软件
- 计算机毕业论文选题推荐|软件工程|系列九
- c++ 怎么控制输出的两位数不足十的时候用零来补齐前面空余的位数
- bat批处理删除文件
热门文章
- 2020年10月公有云性能评测:盛大云-华东蝉联冠军,腾讯云-北京无缘前三
- 趣味数学——线性变换可视化交互系统
- Pandas系列教程:盛大开篇了!
- python 物理引擎 摩擦力_Python 愤怒的小鸟代码实现:物理引擎pymunk使用
- 实时多人脸检测和识别
- Spring Authorization Server入门 (三) 集成流程说明、细节补充和各种方式获取token测试
- 深度学习云GPU服务器推荐(Featurize)
- 哪些是可移动的计算机设备,什么是移动设备 移动设备有哪些优点
- Qt版连连看之极速连连看:设计
- 如何在电脑重启后还能直接进行远程桌面