威富通对账

威富通

快捷对账

1,新增对账处理器

实现 cn.swiftpass.core.server.acc.service.billdownloader.impl.AbstractCheckBillProcessor
    
@Service
@ApiProvider(apiProviderValue = AccConstants.自己约定的值)
public class WlmqFastPayCheckBillProcessor extends AbstractCheckBillProcessor {
    重写
        beforeProcess,下载文件前做些什么
        getTargetDownFileName,获取下载文件名称
        downloadCheckBillInner,下载第三方账单
        parsePayOrderDtoByLine,按照行解析文件,
            这里把第三方订单信息存放thirdMap,
            需关注存入的是否为威富通订单号
            1,key 威富通订单号
            2,key 不是威富通订单号
        
        
}

2,对账前置校验

cn.swiftpass.core.server.acc.account.worker.CheckBillWorker#validate
需改动
如果第三方返回的有下载路径,这不需要验证,配置下载文件路径
// 需要对账方式-任务没有配置下载文件路径
if (payCenterDto.getApiProvider()!=API_PROVIDER_FAST_CARD ......) {
    logger.error("第三方下载地址为空,请检查。任务id={}", task.getTaskId());
    return false;
}
    
如果第三方没用返回下载路径
cn.swiftpass.core.server.acc.service.impl.CheckBillTaskServiceImpl#buildCheckBillTask
修改 设置对账下载路径
    
/** 下载任务属性初始化 */
// 设置对账下载路径
if (AccConstants.API_PROVIDER_FAST == payCenterDto.getApiProvider()) {
    String downloadMessage = payCenterDto.getDownLoadMessage();
    Map downMsgMap = JSON.parseObject(downloadMessage, Map.class);
    if (downMsgMap.containsKey("path")) {
        checkBillTaskDto.setBillPath(downMsgMap.get("path").toString());
    }else {
        logger.error("快捷支付-对账信息 path 未配置");
    }
}   

3,逐笔对账

cn.swiftpass.core.server.acc.account.worker.CheckBillWorker#work

jdbc逐笔对账
cn.swiftpass.core.server.acc.account.job.CheckBillPayOrderJob#execute     支付订单处理
cn.swiftpass.core.server.acc.account.job.CheckBillRefundOrderJob#execute  退款订单处理
    thirdMap key不是威富通订单号
        thirdPayOrder = thirdMap.get(wftPayOrder.getOrderNo())需改动
        checkedThirdOrderNoSet.add(wftPayOrder.getOrderNo()) 需改动
    
    checkedThirdOrderNoSet是已对的第三方账单Set
    checkBillUpDownDtos挂销账List
    
销账处理,过滤thirdMap中已对账的订单,剩下之前挂账的订单
cn.swiftpass.core.server.acc.account.worker.CheckBillWorker#dealRemainingBill
    
根据thirdMap中订单号获取本地订单信息
    thirdMap key不是威富通订单号,需改动,获取威富通订单号
cn.swiftpass.core.server.acc.account.utils.ThirdMoreOrderHandler#thirdMoreOrderHandle
    

4,模拟造订单数据

运行bill-generator服务
修改数据库连接信息

1,下载最新导入模板
2,select * from TRA_PAY_TYPE; --- 支付类型
     获取 支付类型简称,pay_type_id,pay_center_id通道id,api_code
   SELECT * FROM CMS_MERCHANT; --- 商户表
     获取 商户号    商户编号
3,修改excel,新增订单

5,修改订单商户手续费

支付订单
SELECT * FROM PAY_ORDER ORDER BY OUT_TRADE_NO DESC;
修改 calc_state为1(计算完成),mch_theory_procedure_fee, mch_real_procedure_fee, mch_discount_fee 为0 

退款订单
SELECT * FROM pay_refund ORDER BY REFUND_NO  DESC;
修改 calc_state为1(计算完成)...手续费为0 

5,构造第三方订单文件

按照第三方订单格式修改数据

修改订单号或者流水号为 我们造的数据 的订单号或第三方订单号等

上传到ftp

6,页面测试

1,支付通道管理配置
2,对账任务设置--选择对账时间--1,删除第三方账单 2,重新对账 3,单任务触发对账

需要关注的点
1,对账的文件是否需要过滤非数币订单?如果过滤以什么标识过滤  无须过滤
2,交易类型需要关注那几个类型?
3,冲正单是否需要处理?
4,三方账单的实收金额 对应 我们订单表的支付金额 totalFee 嘛? 
5,三方账单模板是否有

打包顺序

transmit -> cle-bank -> cle -> acc    然后pravite-war做一次maven refers

not bean 问题

1,需要在HessianConsumerConfiguration中注入

@Bean("InterestsApiService")
public InterestsApiService interestsApiService(){
    return interestsApiService;
}

@HessianClient("interests")
InterestsApiService interestsApiService;

----------
    
2,在app-config.properties中配置
hessian.interests.server=http://127.0.0.1:8001/sppay-cms-war

Transmit 接口对接

1,api.json 添加对应配置

2,添加Constant常量,对应api.json中配置路径

3,reqDto,respDto 编写

4,WlmqForwardService编写

5,行内接口测试,得到返回值

6,添加数据到mock-data.json

7,编写test案例测试

打包发布镜像时要修改

https://gitlab.swifer.co/fbu-public/service-configs/service-configs-test/-/tree/master/wlmq/sppay-transmit-service/test

api.json配置


日夜颠倒头发少 ,单纯好骗恋爱脑 ,会背九九乘法表 ,下雨只会往家跑 ,搭讪只会说你好 ---- 2050781802@qq.com

×

喜欢就点赞,疼爱就打赏

相册 说点什么 简历