摘要:本文是淺析微信支付系列文章的第七篇,主要講解微信商戶平臺(tái)的訂單查詢和關(guān)閉接口的使用。查詢訂單以下為微信官方的查詢訂單文檔應(yīng)用場(chǎng)景該接口提供所有微信支付訂單的查詢,商戶可以通過查詢訂單接口主動(dòng)查詢訂單狀態(tài),完成下一步的業(yè)務(wù)邏輯。
本文是【淺析微信支付】系列文章的第七篇,主要講解微信商戶平臺(tái)的訂單查詢和關(guān)閉接口的使用。
淺析微信支付系列已經(jīng)更新六篇了喲~,沒有看過的朋友們可以看一下哦。
淺析微信支付:支付結(jié)果通知
淺析微信支付:統(tǒng)一下單接口
淺析微信支付:微信公眾號(hào)網(wǎng)頁授權(quán)
聲明:這里的查詢訂單、關(guān)閉訂單接口僅適用于 小程序支付、公共號(hào)支付、掃碼支付、APP支付,刷卡支付方式此處并不適用。
1、查詢訂單以下為微信官方的查詢訂單文檔:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_21.1. 應(yīng)用場(chǎng)景
該接口提供所有微信支付訂單的查詢,商戶可以通過查詢訂單接口主動(dòng)查詢訂單狀態(tài),完成下一步的業(yè)務(wù)邏輯。
需要調(diào)用查詢接口的情況: ◆ 當(dāng)商戶后臺(tái)、網(wǎng)絡(luò)、服務(wù)器等出現(xiàn)異常,商戶系統(tǒng)最終未接收到支付通知; ◆ 調(diào)用支付接口后,返回系統(tǒng)錯(cuò)誤或未知交易狀態(tài)情況; ◆ 調(diào)用刷卡支付API,返回USERPAYING的狀態(tài); ◆ 調(diào)用關(guān)單或撤銷接口API之前,需確認(rèn)支付狀態(tài);1.2. 接口鏈接
https://api.mch.weixin.qq.com/pay/orderquery1.3. 是否需要證書
不需要
1.4. 調(diào)用接口查詢訂單接口需要使用微信訂單號(hào)或者商戶訂單號(hào)來查詢,其他參數(shù)為商戶平臺(tái)信息的公共參數(shù),為常量,此處省略解釋。
微信訂單號(hào):transaction_id(微信的訂單號(hào),建議優(yōu)先使用) 商戶訂單號(hào):out_trade_no(商戶系統(tǒng)內(nèi)部訂單號(hào))
此兩個(gè)參數(shù)必填其中之一,微信推薦使用微信訂單號(hào)來查詢,下面為實(shí)現(xiàn)代碼:
private void doOrderQuery() { System.out.println("查詢訂單"); HashMapdata = new HashMap (); // data.put("out_trade_no", out_trade_no); data.put("transaction_id", "4008852001201608221962061594"); try { WXPay wxPay = new WXPay(WXPayConfigImpl.getInstance()); Map r = wxPay.orderQuery(data); System.out.println(r); } catch (Exception e) { e.printStackTrace(); } }
wxPay.orderQuery方法為封裝的sdk方法,具體實(shí)現(xiàn)請(qǐng)參考作者github源碼。
對(duì)于商戶關(guān)鍵信息的寫入,公共方法為wxPay.fillRequestData,實(shí)現(xiàn)如下:
/** * 向 Map 中添加 appid、mch_id、nonce_str、sign_type、sign
* 該函數(shù)適用于商戶適用于統(tǒng)一下單等接口,不適用于紅包、代金券接口 * * @param reqData r * @return map * @throws Exception e */ public MapfillRequestData(Map reqData) throws Exception { reqData.put("appid", config.getAppID()); reqData.put("mch_id", config.getMchID()); reqData.put("nonce_str", WXPayUtil.generateNonceStr()); if (SignType.MD5.equals(this.signType)) { reqData.put("sign_type", WXPayConstants.MD5); } else if (SignType.HMACSHA256.equals(this.signType)) { reqData.put("sign_type", WXPayConstants.HMACSHA256); } reqData.put("sign", WXPayUtil.generateSignature(reqData, config.getKey(), this.signType)); return reqData; }
以上為查詢微信訂單的使用方式,具體的返回參數(shù)請(qǐng)參考官方文檔。
2、關(guān)閉訂單以下為微信官方的關(guān)閉訂單文檔:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_32.1. 應(yīng)用場(chǎng)景
以下情況需要調(diào)用關(guān)單接口:
商戶訂單支付失敗需要生成新單號(hào)重新發(fā)起支付,要對(duì)原訂單號(hào)調(diào)用關(guān)單,避免重復(fù)支付; 系統(tǒng)下單后,用戶支付超時(shí),系統(tǒng)退出不再受理,避免用戶繼續(xù),請(qǐng)調(diào)用關(guān)單接口。
注意:訂單生成后不能馬上調(diào)用關(guān)單接口,最短調(diào)用時(shí)間間隔為5分鐘。
2.2. 接口鏈接https://api.mch.weixin.qq.com/pay/closeorder2.3. 是否需要證書
不需要
2.4. 調(diào)用接口關(guān)閉訂單接口需要使用商戶訂單號(hào)來查詢,其他參數(shù)為商戶平臺(tái)信息的公共參數(shù),為常量,此處省略解釋。
商戶訂單號(hào):out_trade_no(商戶系統(tǒng)內(nèi)部訂單號(hào))
PS:關(guān)單接口只能使用微信訂單號(hào)來查詢,和查詢接口不同,下面為實(shí)現(xiàn)代碼:
private void doOrderClose() { System.out.println("關(guān)閉訂單"); HashMapdata = new HashMap (); data.put("out_trade_no", out_trade_no); try { WXPay wxPay = new WXPay(WXPayConfigImpl.getInstance()); Map r = wxPay.closeOrder(data); System.out.println(r); } catch (Exception e) { e.printStackTrace(); } }
關(guān)單接口的公共參數(shù)設(shè)置和查詢訂單一致,這里就不重復(fù)解釋了,具體的返回參數(shù)請(qǐng)參考微信官方文檔。
PS:關(guān)單接口可能會(huì)調(diào)用失敗,已支付、已關(guān)閉等場(chǎng)景,所以需要開發(fā)者注意官方文檔中的錯(cuò)誤碼,對(duì)異常情況進(jìn)行處理。
結(jié)語以上為查詢訂單、關(guān)閉訂單的調(diào)用方式,如果是刷卡支付方式,他的關(guān)閉訂單接口為撤銷訂單:reverse,在作者sdk源碼中也有具體的實(shí)現(xiàn)方式。
預(yù)告:下一篇文章 申請(qǐng)退款和退款回調(diào)接口,敬請(qǐng)期待!??!
?如果想要提前一覽源碼的小伙伴,可以先看看我的 github,地址如下:
?https://github.com/YClimb/wxpay-sdk/blob/master/README.md
加作者私人微信,作者微信號(hào)如下 yclimb,標(biāo)明 微信支付 可拉入微信支付討論群與小伙伴一起探討哦,一定要標(biāo)明 微信支付 哦~
到此本文就結(jié)束了,關(guān)注公眾號(hào)查看更多推送?。。?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72076.html
摘要:本文是淺析微信支付系列文章的第九篇,主要講解商戶下載對(duì)賬單接口和資金賬單接口的實(shí)現(xiàn)和一些注意事項(xiàng)。注意微信側(cè)未成功下單的交易不會(huì)出現(xiàn)在對(duì)賬單中。 本文是【淺析微信支付】系列文章的第九篇,主要講解商戶下載對(duì)賬單接口和資金賬單接口的實(shí)現(xiàn)和一些注意事項(xiàng)。 淺析微信支付系列已經(jīng)更新九篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:申請(qǐng)退款、退款回調(diào)接口、查詢退款 淺析微信支付:查詢訂...
摘要:注意交易時(shí)間超過一年的訂單無法提交退款微信支付退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號(hào)和設(shè)置不同的退款單號(hào)。 本文是【淺析微信支付】系列文章的第八篇,主要講解商戶如何處理微信申請(qǐng)退款、退款回調(diào)、查詢退款接口,其中有一些坑的地方,會(huì)著重強(qiáng)調(diào)。 淺析微信支付系列已經(jīng)更新七篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:查詢訂單和關(guān)閉訂單 淺析微信支付:支...
摘要:本文是淺析微信支付系列文章的第六篇,主要講解支付成功后,微信回調(diào)商戶支付結(jié)果通知的處理。微信支付支付回調(diào)接口該鏈接是通過統(tǒng)一下單中提交的參數(shù)設(shè)置,如果鏈接無法訪問,商戶將無法接收到微信通知。 本文是【淺析微信支付】系列文章的第六篇,主要講解支付成功后,微信回調(diào)商戶支付結(jié)果通知的處理。 淺析微信支付系列已經(jīng)更新五篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:統(tǒng)一下單接口 淺析...
摘要:本文是淺析微信支付系列文章的第十五篇,主要講解如何開通免充值產(chǎn)品功能流程和其中的注意事項(xiàng),對(duì)于接口升級(jí)會(huì)重要講解,避免爬坑。 本文是【淺析微信支付】系列文章的第十五篇,主要講解如何開通免充值產(chǎn)品功能流程和其中的注意事項(xiàng),對(duì)于接口升級(jí)會(huì)重要講解,避免爬坑。 淺析微信支付系列已經(jīng)更新十五篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:商戶平臺(tái)代金券或立減優(yōu)惠開通、指定用戶代金券發(fā)...
摘要:淺析微信支付前篇大綱本文是淺析微信支付系列文章的第一篇,主要會(huì)介紹一下為何寫下這個(gè)系列以及對(duì)于微信支付的一點(diǎn)小經(jīng)驗(yàn),與君共勉。下面講一下我是如何去學(xué)習(xí)微信支付的。 淺析微信支付:前篇大綱 本文是【淺析微信支付】系列文章的第一篇,主要會(huì)介紹一下為何寫下這個(gè)系列以及對(duì)于微信支付的一點(diǎn)小經(jīng)驗(yàn),與君共勉。 以下會(huì)分幾個(gè)步驟講一下我學(xué)習(xí)微信支付的過程,也是一部辛酸史,也是希望朋友們不要再次跌進(jìn)...
閱讀 3541·2021-10-09 09:41
閱讀 2745·2021-10-08 10:18
閱讀 2182·2021-09-10 10:51
閱讀 2680·2021-09-10 10:50
閱讀 776·2021-09-09 09:33
閱讀 3383·2021-09-06 15:14
閱讀 3017·2019-08-30 11:06
閱讀 3248·2019-08-29 14:04