下载账单代码示例
本章主要介绍下载账单的 Java SDK 代码示例。
代码示例
public void bill(String billDate) {
// 翼辉支付平台公钥
String acopayPublicKey = "<acopayPublicKey>";
// 商户私钥
String mchPrivateKey = "<yourMchPrivateKey>";
// 商户号
String mchNo = "<yourMchNo>";
// 请求对账单信息实例
AcopayBillRequestModel billRequestModel = new AcopayBillRequestModel();
// 获取前一天的对账单信息 可获取商户三个月内的交易账单信息 下载日期时区为东八区
if (StringUtils.isBlank(billDate)) {
LocalDate localDate = LocalDate.now(ZoneId.of("Asia/Shanghai")).minusDays(1);
billDate = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
billRequestModel.setBillDate(billDate);
AcopayResponse<AcopayBillResponseModel> acopayBillResponse = null;
try {
// 创建 AcopayClient 实例
AcopayClient acopayClient = new DefaultAcopayClient(acopayPublicKey, mchPrivateKey, mchNo);
// 获取对账单信息
acopayBillResponse = acopayClient.bill(billRequestModel);
} catch (AcopayException e) {
// 根据商户业务需求进行异常处理
log.error("请求对账单信息出错", e);
}
// 正常流程进行业务处理
if (!Objects.isNull(acopayBillResponse)) {
log.info("接收下载对账单信息:{}", acopayBillResponse);
if (acopayBillResponse.statusSuccessful()) {
// 获取业务数据
AcopayBillResponseModel data = acopayBillResponse.getData();
// NO_BILL :账单不存在,SUCCESS :成功,BILL_NOT_EXIST :对账单未生成
if (StringUtils.equals(data.getCode(), SUCCESS)) {
// 获取下载对账单地址
String billDownloadUrl = data.getUrl();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> msg = restTemplate.getForEntity(billDownloadUrl, String.class);
log.info("接收账单:{}", msg.getBody());
// 进行数据校验业务处理
} else {
// 根据 code 值进行业务处理
}
} else {
// 进行业务处理
}
}
}