支付宝的对账单下载
easy版:
LocalDate yesterday = LocalDate.now().minusDays(1); LocalDate selectDay = LocalDate.of(2025,9,15); String Mon = "2025-08"; String billDate = yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); //获取支付宝账单 String alipayBillDownloadUrl = getAlipayBillDownloadUrl(billDate);
/** * 调用支付宝接口获取对账单下载地址 * @param billDate 账单日期 (格式 yyyy-MM-dd) * @return 下载地址URL */ private static String getAlipayBillDownloadUrl(String billDate) { // 1. 构造配置(可直接写死,排查配置问题) Config config = new Config(); config.protocol = "https"; config.gatewayHost = "openapi-sandbox.dl.alipaydev.com"; // 沙箱环境 config.signType = "RSA2"; config.appId = "XXXXX"; config.merchantPrivateKey = "XXXXX"; config.alipayPublicKey = "XXXXX"; config.notifyUrl = ""; config.encryptKey = ""; // 2. 设置全局配置 Factory.setOptions(config); try { AlipayDataDataserviceBillDownloadurlQueryResponse response = Factory .Payment .Common() .downloadBill("trade", billDate); if ("10000".equals(response.code)) { System.out.println("调用成功"); System.out.println("账单下载地址:" + response.getBillDownloadUrl()); System.out.println(response.httpBody); // downloadAndParseBill(response.getBillDownloadUrl()); } else { System.out.println("调用失败"); } return response.getBillDownloadUrl(); } catch (Exception e) { System.out.println(e.getMessage()); return null; } }
V3版本:
ApiClient defaultClient = Configuration.getDefaultApiClient(); // 初始化alipay参数(全局设置一次) defaultClient.setAlipayConfig(getAlipayConfig()); AlipayDataDataserviceBillDownloadurlApi api = new AlipayDataDataserviceBillDownloadurlApi(); String billType = "trade"; String billDate = "2025-09-20"; String smid = "XXXXX"; try { AlipayDataDataserviceBillDownloadurlQueryResponseModel response = api.query(billType, billDate, smid); System.out.println("new:"+ response.getBillDownloadUrl()); } catch (ApiException e) { throw new RuntimeException(e); }
V3版对应的配置:
/** * 支付宝支付配置 * @return */ private static AlipayConfig getAlipayConfig() { AlipayConfig alipayConfig = new AlipayConfig(); alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com"); //沙箱环境 alipayConfig.setAppId("XXXXX"); alipayConfig.setPrivateKey("XXXXX"); alipayConfig.setAlipayPublicKey("XXXXX"); return alipayConfig; }
最后我有个疑问,我没用过正式的环境,这个沙箱环境不知道是不是不会有数据下载,我返回的响应是成功的代码,但我点返回的下载链接会直接跳ERROR的页面,30秒后再点也会弹过期的页面。
有懂的欢迎讨论下。
https://opendocs.alipay.com/support/01raze

难产难产难产

浙公网安备 33010602011771号