應用場景
商戶可以通過該接口下載歷史交易清單。比如掉單、系統錯誤等導致商戶側和微信側數據不一致,通過對賬單核對後可校正支付狀態。
官方在線文檔:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_6
注意:
1.微信側未成功下單的交易不會出現在對賬單中。支付成功後撤銷的交易會出現在對賬單中,跟原支付單訂單號一致,bill_type爲REVOKED;
2.微信在次日9點啓動生成前一天的對賬單,建議商戶10點後再獲取;
3.對賬單中涉及金額的字段單位爲“元”。
接口鏈接
https://api.mch.weixin.qq.com/pay/downloadbill
參考代碼如下
package com.wingo.action.config;
import java.util.SortedMap;
import java.util.TreeMap;
import com.wingo.util.CommonUtil;
import com.wingo.util.ConfigUtil;
import com.wingo.util.PayCommonUtil;
/**
*
* @author 李欣樺
* @date 2015-1-6下午5:13:34
*
* 對賬接口
*/
public class DownloadBillAction {
/*注意:
* 微信側未成功下單的交易不會出現在對賬單中。支付成功後撤銷的交易會出現在對賬單中,跟原支付單訂單號一致, bill_type 爲 REVOKED
* 微信在次日 9 點啓動生成前一天的對賬單,建議商戶 9 點半後再獲取;
* 對賬單中涉及金額的字段單位爲“元”。
* 該接口對應的數據爲服務號--->微信支付---->訂單流水(退款訂單的日期不是發起退訂請求的日期,目前沒測出是哪個日期)
*/
/*第一行數據:
* 當日所有訂單 :
* 交易時間, 公衆賬號ID, 商戶號, 子商戶號, 設備號, 微信訂單號, 商戶訂單號, 用戶標識,交易類型, 交易狀態, 付款銀行, 貨幣種類, 總金額, 現金券金額, 微信退款單號, 商戶退
* 款單號, 退款金額, 現金券退款金額, 退款類型, 退款狀態, 商品名稱, 商戶數據包, 手續費,費率
*
* 當日成功支付的訂單:
* 交易時間, 公衆賬號ID, 商戶號, 子商戶號, 設備號, 微信訂單號, 商戶訂單號, 用戶標識,交易類型, 交易狀態, 付款銀行, 貨幣種類, 總金額, 現金券金額, 商品名稱, 商戶數據包,
* 手續費, 費率
*
* 當日退款的訂單:
* 交易時間, 公衆賬號ID, 商戶號, 子商戶號, 設備號, 微信訂單號, 商戶訂單號, 用戶標識,交易類型, 交易狀態, 付款銀行, 貨幣種類, 總金額, 現金券金額, 退款申請時間, 退款成功
* 時間, 微信退款單號, 商戶退款單號, 退款金額, 現金券退款金額,退款類型,退款狀態,商品名稱, 商戶數據包, 手續費, 費率
*
*/
/*
* 第二行爲數據記錄,各參數以逗號分隔,參數前增加`符號,爲標準鍵盤 1 左邊鍵的字符,字段順序與表頭一致
*
*/
/*
* 倒數第二行爲訂單統計標題,最後一行爲統計數據,順序:總交易單數,總交易額,總退款金額,總現金券退款金額,手續費總金額
*/
public static void main(String[]args) throws Exception {
SortedMap<Object,Object> parameters =new TreeMap<Object,Object>();
parameters.put("appid",ConfigUtil.APPID);
parameters.put("mch_id",ConfigUtil.MCH_ID);
// parameters.put("device_info", "");//微信支付分配的終端設備號,填寫此字段,只下載該設備號 的對賬單
parameters.put("nonce_str",PayCommonUtil.CreateNoncestr());
parameters.put("bill_date","20141231");//下載對賬單的日期,格式:20140603,日期不可爲當天。
//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);
if(result.startsWith("<xml>")){//查詢日期爲當天時,錯誤信息提示日期無效
System.out.println(result);
System.out.println("無訂單");
}else {
String tradeMsg = result.substring(result.indexOf("`"));
String tradeInfo = tradeMsg.substring(0,tradeMsg.indexOf("總"));
String tradeTotalMsg =tradeMsg.substring(tradeMsg.indexOf("總"));
String tradeTotalInfo =tradeTotalMsg.substring(tradeTotalMsg.indexOf("`"));
System.out.println(result);
System.out.println(tradeMsg);
System.out.println(tradeInfo);
System.out.println(tradeTotalMsg);
System.out.println(tradeTotalInfo);
}
}
}
上述代碼中相關工具類的下載地址如下:
http://download.csdn.net/detail/u011160656/8354883