https://api.mch.weixin.qq.com/pay/orderqueryphp
請求參數:算法
字段名api |
變量名微信 |
必填app |
類型微信支付 |
示例值spa |
描述code |
---|---|---|---|---|---|
公衆帳號IDxml |
appidblog |
是 |
String(32) |
wx8888888888888888 |
微信分配的公衆帳號ID |
商戶號 |
mch_id |
是 |
String(32) |
1900000109 |
微信支付分配的商戶號 |
微信訂單號 |
transaction_id |
否 |
String(32) |
013467007045764 |
微信的訂單號,優先使用 |
商戶訂單號 |
out_trade_no |
否 |
String(32) |
1217752501201407033233368018 |
商戶系統內部的訂單號,當沒提供transaction_id時須要傳這個。 |
隨機字符串 |
nonce_str |
是 |
String(32) |
C380BEC2BFD727A4B6845133519F3AD6 |
隨機字符串,不長於32位。推薦隨機數生成算法 |
簽名 |
sign |
是 |
String(32) |
5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
簽名,詳見簽名生成算法 |
字段名 |
變量名 |
必填 |
類型 |
示例值 |
描述 |
---|---|---|---|---|---|
返回狀態碼 |
return_code |
是 |
String(16) |
SUCCESS |
SUCCESS/FAIL 此字段是通訊標識,非交易標識,交易是否成功須要查看trade_state來判斷 |
返回信息 |
return_msg |
否 |
String(128) |
簽名失敗
|
返回信息,如非空,爲錯誤緣由 簽名失敗 參數格式校驗錯誤 |
如下字段在return_code爲SUCCESS的時候有返回
字段名 |
變量名 |
必填 |
類型 |
示例值 |
描述 |
---|---|---|---|---|---|
公衆帳號ID |
appid |
是 |
String(32) |
wx8888888888888888 |
微信分配的公衆帳號ID |
商戶號 |
mch_id |
是 |
String(32) |
1900000109 |
微信支付分配的商戶號 |
隨機字符串 |
nonce_str |
是 |
String(32) |
5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
隨機字符串,不長於32位。推薦隨機數生成算法 |
簽名 |
sign |
是 |
String(32) |
C380BEC2BFD727A4B6845133519F3AD6 |
簽名,詳見簽名生成算法 |
業務結果 |
result_code |
是 |
String(16) |
SUCCESS |
SUCCESS/FAIL |
錯誤代碼 |
err_code |
否 |
String(32) |
SYSTEMERROR |
詳細參見第6節錯誤列表 |
錯誤代碼描述 |
err_code_des |
否 |
String(128) |
系統錯誤 |
結果信息描述 |
如下字段在return_code 和result_code都爲SUCCESS的時候有返回
字段名 |
變量名 |
必填 |
類型 |
示例值 |
描述 |
---|---|---|---|---|---|
設備號 |
device_info |
否 |
String(32) |
013467007045764 |
微信支付分配的終端設備號, |
用戶標識 |
openid |
是 |
String(128) |
wxd930ea5d5a258f4f |
用戶在商戶appid下的惟一標識 |
是否關注公衆帳號 |
is_subscribe |
是 |
String(1) |
Y |
用戶是否關注公衆帳號,Y-關注,N-未關注,僅在公衆帳號類型支付有效 |
交易類型 |
trade_type |
是 |
String(16) |
JSAPI |
調用接口提交的交易類型,取值以下:JSAPI,NATIVE,APP,MICROPAY,詳細說明見參數規定 |
交易狀態 |
trade_state |
是 |
String(32) |
SUCCESS |
SUCCESS—支付成功 REFUND—轉入退款 NOTPAY—未支付 CLOSED—已關閉 REVOKED—已撤銷 USERPAYING--用戶支付中 PAYERROR--支付失敗(其餘緣由,如銀行返回失敗) |
付款銀行 |
bank_type |
是 |
String(16) |
CMC |
銀行類型,採用字符串類型的銀行標識 |
總金額 |
total_fee |
是 |
Int |
100 |
訂單總金額,單位爲分 |
貨幣種類 |
fee_type |
否 |
String(8) |
CNY |
貨幣類型,符合ISO 4217標準的三位字母代碼,默認人民幣:CNY,其餘值列表詳見貨幣類型 |
現金支付金額 |
cash_fee |
是 |
Int |
100 |
現金支付金額訂單現金支付金額,詳見支付金額 |
現金支付貨幣類型 |
cash_fee_type |
否 |
String(16) |
CNY |
貨幣類型,符合ISO 4217標準的三位字母代碼,默認人民幣:CNY,其餘值列表詳見貨幣類型 |
代金券或立減優惠金額 |
coupon_fee |
否 |
Int |
100 |
「代金券或立減優惠」金額<=訂單總金額,訂單總金額-「代金券或立減優惠」金額=現金支付金額,詳見支付金額 |
代金券或立減優惠使用數量 |
coupon_count |
否 |
Int |
1 |
代金券或立減優惠使用數量 |
代金券或立減優惠批次ID |
coupon_batch_id_$n |
否 |
String(20) |
100 |
代金券或立減優惠批次ID ,$n爲下標,從1開始編號 |
代金券或立減優惠ID |
coupon_id_$n |
否 |
String(20) |
10000 |
代金券或立減優惠ID, $n爲下標,從1開始編號 |
單個代金券或立減優惠支付金額 |
coupon_fee_$n |
否 |
Int |
100 |
單個代金券或立減優惠支付金額, $n爲下標,從1開始編號 |
微信支付訂單號 |
transaction_id |
是 |
String(32) |
1217752501201407033233368018 |
微信支付訂單號 |
商戶訂單號 |
out_trade_no |
是 |
String(32) |
1217752501201407033233368018 |
商戶系統的訂單號,與請求一致。 |
商家數據包 |
attach |
否 |
String(128) |
123456 |
商家數據包,原樣返回 |
支付完成時間 |
time_end |
是 |
String(14) |
20141030133525 |
訂單支付時間,格式爲yyyyMMddHHmmss,如2009年12月25日9點10分10秒錶示爲20091225091010。其餘詳見時間規則 |
交易狀態描述 |
trade_state_desc |
是 |
String(256) |
支付失敗,請從新下單支付 |
對當前查詢訂單狀態的描述和下一步操做的指引 |
後臺代碼:
/// <summary> /// 訂單查詢 /// </summary> /// <returns></returns> public JsonResult OrderQuery(WXM_TRADE_Model trade) { string nonceStr = Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetNoncestr(); Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null); //設置package訂單參數 packageReqHandler.SetParameter("appid", AppId); //公衆帳號ID packageReqHandler.SetParameter("mch_id", MchId); //商戶號 //packageReqHandler.SetParameter("transaction_id", ""); //填入微信訂單號 packageReqHandler.SetParameter("out_trade_no", trade.TRADE_NO); //填入商家訂單號 packageReqHandler.SetParameter("nonce_str", nonceStr); //隨機字符串 string querysign = packageReqHandler.CreateMd5Sign("key", Key); packageReqHandler.SetParameter("sign", querysign); //簽名 string data = packageReqHandler.ParseXML(); var result = Senparc.Weixin.MP.AdvancedAPIs.TenPayV3.OrderQuery(data); var res =System.Xml.Linq.XDocument.Parse(result); string return_code = res.Element("xml").Element("return_code").Value; string trade_state = res.Element("xml").Element("trade_state").Value;//SUCCESS-支付成功,REFUND-轉入退款,NOTPAY-未支付,CLOSED-已關閉,REVOKED-已撤銷,USERPAYING-用戶支付中,PAYERROR-支付失敗 Hashtable hashtable = new Hashtable(); hashtable.Add("trade_state", trade_state); return Json(hashtable); }