java后台实现支付宝对账功能的示例代码

2025-05-29 0 43

完成支付宝支付、查询的接口之后,我们应该还需要定时与支付宝进行对账,以确保商户系统的订单信息是正确的,想知道支付宝支付、查询接口实现过程的亲们,可移步到上一篇有详细过程。

现在我们来讲一下支付宝对账的功能,关于与支付宝交互的关键代码,其实支付宝的api已经讲得很清楚,如果亲们想直接看支付宝api,点击 支付宝对账api ,当然我在文章也会进行说明解释。

实现支付宝自动对账功能

先看一下商户系统和支付宝的大概交互过程:

java后台实现支付宝对账功能的示例代码

所谓对账,其实就是调用支付宝查询接口,跟上一篇的查询接口不同的是,上一篇的查询接口是针对特定的一个订单,通过订单号或者支付宝交易号去查询这一笔订单的信息,而对账,我们需要获取一个时间段的所有订单信息,因此,我们自然而已的去看支付宝提供的sdk是否有提供该接口给我们,经过查看支付宝api,我们发现确实我们所需要的接口:alipay.data.dataservice.bill.downloadurl.query。废话不多说,先上我实现的代码

1.先是调用支付宝对账查询接口,获取账单文件下载地址url,关于一些支付宝的公共参数,在上一篇我已经封装好,下面代码是针对对账的实现过程,传入关键的2个业务参数.公共参数支付宝sdk已经封装好。

第一个参数,账单类型(字符串类型,trade或者signcustomer,具体含义见支付宝api)

第二个参数,获取时间段(字符串类型,(2018-03-15)需要下载的账单日期,最晚是当期日期的前一天)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
/**

* 实现支付宝对账

* @param request

* @return response

*/

@override

public void alipaybill() {

logger.info("==================向支付宝发起对账请求");

// 获取支付宝支付的配置信息

valueoperations<string, object> valueops = redistemplate.opsforvalue();

payment alipayment = (payment) valueops.get("alipayment");

if (alipayment == null) {

alipayment = alipaymentorderrepository.getpayment(1, 1);

}

try {

//实例化客户端(参数:网关地址、商户appid、商户私钥、格式、编码、支付宝公钥、加密类型)

alipayclient alipayclient = new defaultalipayclient(alipayconfig.url, alipayment.getappid(),

alipayconfig.rsa_private_key, alipayconfig.format, alipayconfig.charset,

alipayconfig.alipay_public_key,alipayconfig.signtype);

alipaydatadataservicebilldownloadurlqueryrequest request = new alipaydatadataservicebilldownloadurlqueryrequest();//创建api对应的request类

request.setbizcontent("{" +

"\\"bill_type\\":\\"trade\\"," +

"\\"bill_date\\":\\"2018-03-14\\"}"); //设置业务参数

alipaydatadataservicebilldownloadurlqueryresponse response = alipayclient.execute(request);

string billdownloadurl=response.getbilldownloadurl();

logger.info("==================支付宝返回文件下载地址:"+billdownloadurl);

this.downbill(billdownloadurl); //调用下载文件方法

} catch (alipayapiexception e) {

// todo auto-generated catch block

e.printstacktrace();

}//通过alipayclient调用api,获得对应的response类

//根据response中的结果继续业务逻辑处理

}

2.获取到支付宝返回的订单文件下载地址之后,我们直接把它下载到本地,下载的代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
/**

* 下载账单文件:

* @param request

* @return response

*/

public string downbill(string billdownloadurl){

long filename=new date().gettime();

//指定希望保存的文件路径

string filepath = "g:/alipay/billfile/fund_bill_"+filename+".zip";

url url = null;

httpurlconnection httpurlconnection = null;

inputstream fis = null;

fileoutputstream fos = null;

try {

url = new url(billdownloadurl);

httpurlconnection = (httpurlconnection) url.openconnection();

httpurlconnection.setconnecttimeout(5 * 1000);

httpurlconnection.setdoinput(true);

httpurlconnection.setdooutput(true);

httpurlconnection.setusecaches(false);

httpurlconnection.setrequestmethod("get");

httpurlconnection.setrequestproperty("charsert", "utf-8");

httpurlconnection.connect();

fis = httpurlconnection.getinputstream();

byte[] temp = new byte[1024];

int b;

fos = new fileoutputstream(new file(filepath));

while ((b = fis.read(temp)) != -1) {

fos.write(temp, 0, b);

fos.flush();

}

} catch (malformedurlexception e) {

e.printstacktrace();

} catch (ioexception e) {

e.printstacktrace();

} finally {

try {

if(fis!=null) fis.close();

if(fos!=null) fos.close();

if(httpurlconnection!=null) httpurlconnection.disconnect();

} catch (ioexception e) {

e.printstacktrace();

}

}

return null;

}

以上就是与支付宝交互的过程,支付宝api上也能找到这些代码,完成以上2步之后,我们就可以下载每日账单文件了

我下载下来是这样的,上个图:

java后台实现支付宝对账功能的示例代码

解压之后:

java后台实现支付宝对账功能的示例代码

打开excel(汇总)

是这样的:

java后台实现支付宝对账功能的示例代码

至此,我们已经拿到了支付宝提供的每日账单文件,接下来才是重头戏,目前还没有确定选择哪种方案进行自动对账

确定之后,会把过程也补上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:https://blog.csdn.net/ouyzc/article/details/79568611

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java后台实现支付宝对账功能的示例代码 https://www.kuaiidc.com/111527.html

相关文章

发表评论
暂无评论