最近接手了一个棘手的工作:微信下载对账单。
刚接手完全懵逼,怎么和微信对接啊。然后就是百度。。
终于找到了组织:
微信支付|开发文档 :点击跳转
通过文档我们可以看到,首先是:
1.下载对账单开放接口链接:
https://api.mch.weixin.qq.com/pay/downloadbill
关于应用场景:
商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和微信侧数据不一致,通过对账单核对后可校正支付状态。
注意:
1、微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致;
2、微信在次日9点启动生成前一天的对账单,建议商户10点后再获取;
3、对账单中涉及金额的字段单位为“元”。
4、对账单接口只能下载三个月以内的账单。
2.传入的参数:
接着我们看下传入参数:
其中,微信分配的appId 和 商户号 是自己的。
还有就是需要 去商户平台查自己商户号以及key。这个key主要用在生成签名中。
看一下查詢代码:
SortedMapparameters = new TreeMap();
parameters.put("appid", ConfigUtil.APPID); // APPid
parameters.put("mch_id", ConfigUtil.MCH_ID); // 商户id
// parameters.put("device_info", "");//微信支付分配的终端设备号,填写此字段,只下载该设备号 的对账单
parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());
// 下载对账单的日期,格式:20140603,当前日期前一天。
String billDate = DateUtil.date2Str(DateUtil.addDay(new Date(), -1), "yyyyMMdd");
parameters.put("bill_date", billDate);//
// bill_type:ALL返回当日所有订单信息,默认值SUCCESS返回当日成功支付的订单。REFUND,返回当日退款订单
parameters.put("bill_type", "ALL");
String sign = PayCommonUtil.createSign("utf-8", parameters);
parameters.put("sign", sign);
String reuqestXml = PayCommonUtil.getRequestXml(parameters);
String result = CommonUtil.httpsRequest(ConfigUtil.DOWNLOAD_BILL_URL, "POST", reuqestXml);
configUtil 工具类里面要配置APPID,MCH_ID,已及Key 。(注:所有的工具类我都放文章末尾链接里,自己下载即可。)我们需要在ConfigUtil工具类中配置一下:
public final static String APPID = "";//服务号的应用号
public final static String APP_SECRECT = "";//服务号的应用密码
pu