1、商户平台可能有几个账户,基本账户、运营账户、手续费账户
2、境内商户微信只提供交易账单和资金账单,不过其他比如结算账单可以从这两份账单计算出来
3、结算周期T+1、T+7
4、账单都是10点
先获取交易账单,为了方便看,获取完,我直接写入数据库。
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(time);
String fordate=sdf.format(date);
String nonce_str = getRandomStringByLength(32);
String bill_type="ALL";
Map<String, String> packageParams = new HashMap<>();
packageParams.put("appid", PayConfig.appid);
packageParams.put("mch_id", PayConfig.mch_id);
packageParams.put("nonce_str", nonce_str);
packageParams.put("bill_type",bill_type );
packageParams.put("bill_date", fordate);
String prestr = PayUtil.createLinkString(packageParams); // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
// MD5运算生成签名
String mysign = PayUtil.sign(prestr, PayConfig.key, "utf-8").toUpperCase();
String xml = "<xml>" + "<appid>" + PayConfig.appid + "</appid>" + "<mch_id>" + PayConfig.mch_id + "</mch_id>"
+ "<nonce_str>" + nonce_str + "</nonce_str>" + "<bill_type>" + bill_type + "</bill_type>"
+ "<bill_date>" + fordate + "</bill_date>" + "<sign>" + mysign + "</sign>" + "</xml>";
String result = PayUtil.httpRequest("https://api.mch.weixin.qq.com/pay/downloadbill", "POST", xml);
int i = result.indexOf("`");
int j = result.indexOf("总");
String substring = result.substring(i, j - 2);
String[] temp = substring.split(",``"