微信支付之下載賬單

應用場景

商戶可以通過該接口下載歷史交易清單。比如掉單、系統錯誤等導致商戶側和微信側數據不一致,通過對賬單核對後可校正支付狀態。


官方在線文檔: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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章