支付宝的对账单下载

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

image

 

posted @ 2025-09-21 19:04  lksses  阅读(12)  评论(0)    收藏  举报