微信支付系统与自有业务系统对账实现
文章目录账单下载数据解析数据解析方法实现行标题与行数据对比数据对象TO与自有支付业务订单核对账单下载参考官网API数据解析数据解析方法实现/*** 解析微信账单字符串数据为对象* Ps: 仅支持单天数据** @param result 微信账单字符串数据* @param date账单日期 例: 2020-09-07* @return list* @author zhengshangjin* cre
·
账单下载
参考官网API
数据解析
数据解析方法实现
/**
* 解析微信账单字符串数据为对象
* Ps: 仅支持单天数据
*
* @param result 微信账单字符串数据
* @param date 账单日期 例: 2020-09-07
* @return list
* @author zhengshangjin
* created on 2020-09-08
*/
private List<WxPayBill> wxPayBillAnalysis(String result, String date) {
List<WxPayBill> billList = new ArrayList<>();
// 获取第一行列标题(仅演示 提交删除)
String title = result.substring(0, result.indexOf("`"));
List<String> titleArr = Arrays.stream(title.split(",")).collect(Collectors.toList());
System.out.println("表格行标题:" + JsonUtils.toJson(titleArr));
// 去除表格数据列标题
result = result.substring(result.indexOf("`"));
// 去除表格数据底部汇总
String finalData = result.substring(0, result.indexOf("总")).replaceFirst(date, "").replaceAll("`", "");
// 通过交易时间分割订单数
String[] tradeArray = finalData.split(date);
for (String trade : tradeArray) {
String[] order = trade.split(",");
// 获取表格行数据(仅演示 提交删除)
List<String> orderArr = Arrays.stream(trade.split(",")).collect(Collectors.toList());
System.out.println("表格行数据:" + JsonUtils.toJson(orderArr));
WxPayBill bill = new WxPayBill();
bill = bill.attach(order);
bill.setCreateDate(date + order[0]);
billList.add(bill);
}
return billList;
}
行标题与行数据对比
数据对象TO
/**
* <p>
* 微信账单对象
* 注意:字段顺序为表格顺序
* </p>
*
* @author zhengshangjin
* @version 1.0.0
* @since 1.0.0
* created on 2020-09-08
*/
@Data
public class WxPayBill implements Serializable {
private static final long serialVersionUID = 1L;
/**
* [0] 交易时间
*/
private String createDate;
/**
* [1] 公众账号ID
*/
private String appId;
/**
* [2] 商户号
*/
private String mchId;
/**
* [3] 特约商户号、子商户号
*/
private String subMchId;
/**
* [4] 设备号
*/
private String deviceInfo;
/**
* [5] 微信订单号
*/
private String wxOrderNo;
/**
* [6] 商户订单号
*/
private String mchOrderNo;
/**
* [7] 用户标识
*/
private String openId;
/**
* [8] 交易类型
*/
private String type;
/**
* [9] 交易状态
*/
private String status;
/**
* [10] 付款银行
*/
private String bank;
/**
* [11] 货币种类
*/
private String currency;
/**
* [12] 应结订单金额
*/
private String amount;
/**
* [13] 代金券金额
*/
private String envelopeAmount;
/**
* [14] 退款微信订单号
*/
private String refundWxOrderNo;
/**
* [15] 退款商户订单号
*/
private String refundMchOrderNo;
/**
* [16] 退款金额
*/
private String refundAmount;
/**
* [17] 充值券退款金额
*/
private String refundRechargeAmount;
/**
* [18] 退款类型
*/
private String refundType;
/**
* [19] 退款状态
*/
private String refundStatus;
/**
* [20] 商品名称
*/
private String goodsName;
/**
* [21] 商户数据包
*/
private String packet;
/**
* [22] 手续费
*/
private String poundage;
/**
* [23] 费率
*/
private String rate;
/**
* [24] 订单金额
*/
private String orderAmount;
/**
* [25] 申请退款金额
*/
private String applyRefundAmount;
/**
* 数据转换提取
*
* @param order 订单数组
* @return bill
* @author zhengshangjin
* created on 2020-09-08
*/
public WxPayBill attach(String[] order) {
if (order == null || order.length < 1) {
return null;
}
WxPayBill bill = new WxPayBill();
bill.setAppId(order[1]);
bill.setMchId(order[2]);
bill.setSubMchId(order[3]);
bill.setDeviceInfo(order[4]);
bill.setWxOrderNo(order[5]);
bill.setMchOrderNo(order[6]);
bill.setOpenId(order[7]);
bill.setType(order[8]);
bill.setStatus(order[9]);
bill.setBank(order[10]);
bill.setCurrency(order[11]);
bill.setAmount(order[12]);
bill.setEnvelopeAmount(order[13]);
bill.setRefundWxOrderNo(order[14]);
bill.setRefundMchOrderNo(order[15]);
bill.setRefundAmount(order[16]);
bill.setRefundRechargeAmount(order[17]);
bill.setRefundType(order[18]);
bill.setRefundStatus(order[19]);
bill.setGoodsName(order[20]);
bill.setPacket(order[21]);
bill.setPoundage(order[22]);
bill.setRate(order[23]);
bill.setOrderAmount(order[24]);
bill.setApplyRefundAmount(order[25]);
return bill;
}
}
与自有支付业务订单核对
更多推荐
已为社区贡献2条内容
所有评论(0)