日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php微信支付查单,浅析微信支付:查询订单和关闭订单

發(fā)布時間:2023/12/3 php 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php微信支付查单,浅析微信支付:查询订单和关闭订单 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文是【淺析微信支付】系列文章的第七篇,主要講解微信商戶平臺的訂單查詢和關(guān)閉接口的使用。

淺析微信支付系列已經(jīng)更新六篇了喲~,沒有看過的朋友們可以看一下哦。

聲明:這里的查詢訂單、關(guān)閉訂單接口僅適用于 小程序支付、公共號支付、掃碼支付、APP支付,刷卡支付方式此處并不適用。

1、查詢訂單

以下為微信官方的查詢訂單文檔:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2

1.1. 應(yīng)用場景

該接口提供所有微信支付訂單的查詢,商戶可以通過查詢訂單接口主動查詢訂單狀態(tài),完成下一步的業(yè)務(wù)邏輯。

需要調(diào)用查詢接口的情況:

◆ 當(dāng)商戶后臺、網(wǎng)絡(luò)、服務(wù)器等出現(xiàn)異常,商戶系統(tǒng)最終未接收到支付通知;

◆ 調(diào)用支付接口后,返回系統(tǒng)錯誤或未知交易狀態(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/orderquery

1.3. 是否需要證書

不需要

1.4. 調(diào)用接口

查詢訂單接口需要使用微信訂單號或者商戶訂單號來查詢,其他參數(shù)為商戶平臺信息的公共參數(shù),為常量,此處省略解釋。

微信訂單號:transaction_id(微信的訂單號,建議優(yōu)先使用)

商戶訂單號:out_trade_no(商戶系統(tǒng)內(nèi)部訂單號)

此兩個參數(shù)必填其中之一,微信推薦使用微信訂單號來查詢,下面為實現(xiàn)代碼:

private void doOrderQuery() {

System.out.println("查詢訂單");

HashMap data = 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方法,具體實現(xiàn)請參考作者github源碼。

對于商戶關(guān)鍵信息的寫入,公共方法為wxPay.fillRequestData,實現(xiàn)如下:

/**

* 向 Map 中添加 appid、mch_id、nonce_str、sign_type、sign

* 該函數(shù)適用于商戶適用于統(tǒng)一下單等接口,不適用于紅包、代金券接口

*

* @param reqData r

* @return map

* @throws Exception e

*/

public Map fillRequestData(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ù)請參考官方文檔。

2、關(guān)閉訂單

以下為微信官方的關(guān)閉訂單文檔:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_3

2.1. 應(yīng)用場景

以下情況需要調(diào)用關(guān)單接口:

商戶訂單支付失敗需要生成新單號重新發(fā)起支付,要對原訂單號調(diào)用關(guān)單,避免重復(fù)支付;

系統(tǒng)下單后,用戶支付超時,系統(tǒng)退出不再受理,避免用戶繼續(xù),請調(diào)用關(guān)單接口。

注意:訂單生成后不能馬上調(diào)用關(guān)單接口,最短調(diào)用時間間隔為5分鐘。

2.2. 接口鏈接

https://api.mch.weixin.qq.com/pay/closeorder

2.3. 是否需要證書

不需要

2.4. 調(diào)用接口

關(guān)閉訂單接口需要使用商戶訂單號來查詢,其他參數(shù)為商戶平臺信息的公共參數(shù),為常量,此處省略解釋。

商戶訂單號:out_trade_no(商戶系統(tǒng)內(nèi)部訂單號)

PS:關(guān)單接口只能使用微信訂單號來查詢,和查詢接口不同,下面為實現(xiàn)代碼:

private void doOrderClose() {

System.out.println("關(guān)閉訂單");

HashMap data = 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ù)請參考微信官方文檔。

PS:關(guān)單接口可能會調(diào)用失敗,已支付、已關(guān)閉等場景,所以需要開發(fā)者注意官方文檔中的錯誤碼,對異常情況進(jìn)行處理。

結(jié)語

以上為查詢訂單、關(guān)閉訂單的調(diào)用方式,如果是刷卡支付方式,他的關(guān)閉訂單接口為撤銷訂單:reverse,在作者sdk源碼中也有具體的實現(xiàn)方式。

預(yù)告:下一篇文章 申請退款和退款回調(diào)接口,敬請期待!!!

?如果想要提前一覽源碼的小伙伴,可以先看看我的 github,地址如下:

?https://github.com/YClimb/wxpay-sdk/blob/master/README.md

加作者私人微信,作者微信號如下 yclimb,標(biāo)明 微信支付 可拉入微信支付討論群與小伙伴一起探討哦,一定要標(biāo)明 微信支付 哦~

到此本文就結(jié)束了,關(guān)注公眾號查看更多推送!!!

總結(jié)

以上是生活随笔為你收集整理的php微信支付查单,浅析微信支付:查询订单和关闭订单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。