资讯专栏INFORMATION COLUMN

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

Dean / 2007人阅读

摘要:本文是浅析微信支付系列文章的第七篇,主要讲解微信商户平台的订单查询和关闭接口的使用。查询订单以下为微信官方的查询订单文档应用场景该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。

本文是【浅析微信支付】系列文章的第七篇,主要讲解微信商户平台的订单查询和关闭接口的使用。

浅析微信支付系列已经更新六篇了哟~,没有看过的朋友们可以看一下哦。

浅析微信支付:支付结果通知

浅析微信支付:统一下单接口

浅析微信支付:微信公众号网页授权

声明:这里的查询订单关闭订单接口仅适用于 小程序支付、公共号支付、扫码支付、APP支付刷卡支付方式此处并不适用。

1、查询订单

以下为微信官方的查询订单文档:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2
1.1. 应用场景

该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。

需要调用查询接口的情况:
◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
◆ 调用支付接口后,返回系统错误或未知交易状态情况;
◆ 调用刷卡支付API,返回USERPAYING的状态;
◆ 调用关单或撤销接口API之前,需确认支付状态;
1.2. 接口链接
https://api.mch.weixin.qq.com/pay/orderquery
1.3. 是否需要证书

不需要

1.4. 调用接口

查询订单接口需要使用微信订单号或者商户订单号来查询,其他参数为商户平台信息的公共参数,为常量,此处省略解释。

微信订单号:transaction_id(微信的订单号,建议优先使用)
商户订单号:out_trade_no(商户系统内部订单号)

此两个参数必填其中之一,微信推荐使用微信订单号来查询,下面为实现代码:

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方法,具体实现请参考作者github源码。

对于商户关键信息的写入,公共方法为wxPay.fillRequestData,实现如下:

/**
 * 向 Map 中添加 appid、mch_id、nonce_str、sign_type、sign 
* 该函数适用于商户适用于统一下单等接口,不适用于红包、代金券接口 * * @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; }

以上为查询微信订单的使用方式,具体的返回参数请参考官方文档。

2、关闭订单

以下为微信官方的关闭订单文档:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_3
2.1. 应用场景

以下情况需要调用关单接口:

商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;
系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。

注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。

2.2. 接口链接
https://api.mch.weixin.qq.com/pay/closeorder
2.3. 是否需要证书

不需要

2.4. 调用接口

关闭订单接口需要使用商户订单号来查询,其他参数为商户平台信息的公共参数,为常量,此处省略解释。

商户订单号:out_trade_no(商户系统内部订单号)

PS:关单接口只能使用微信订单号来查询,和查询接口不同,下面为实现代码:

private void doOrderClose() {
    System.out.println("关闭订单");
    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();
    }
}

关单接口的公共参数设置和查询订单一致,这里就不重复解释了,具体的返回参数请参考微信官方文档。

PS:关单接口可能会调用失败,已支付、已关闭等场景,所以需要开发者注意官方文档中的错误码,对异常情况进行处理。

结语

以上为查询订单关闭订单的调用方式,如果是刷卡支付方式,他的关闭订单接口为撤销订单:reverse,在作者sdk源码中也有具体的实现方式。

预告:下一篇文章 申请退款和退款回调接口,敬请期待!!!

​如果想要提前一览源码的小伙伴,可以先看看我的 github,地址如下:

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

加作者私人微信,作者微信号如下 yclimb,标明 微信支付 可拉入微信支付讨论群与小伙伴一起探讨哦,一定要标明 微信支付 哦~

到此本文就结束了,关注公众号查看更多推送!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72076.html

相关文章

  • 浅析微信支付:下载对账单资金账单

    摘要:本文是浅析微信支付系列文章的第九篇,主要讲解商户下载对账单接口和资金账单接口的实现和一些注意事项。注意微信侧未成功下单的交易不会出现在对账单中。 本文是【浅析微信支付】系列文章的第九篇,主要讲解商户下载对账单接口和资金账单接口的实现和一些注意事项。 浅析微信支付系列已经更新九篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:申请退款、退款回调接口、查询退款 浅析微信支付:查询订...

    Ethan815 评论0 收藏0
  • 浅析微信支付:申请退款、退款回调接口、查询退款

    摘要:注意交易时间超过一年的订单无法提交退款微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。 本文是【浅析微信支付】系列文章的第八篇,主要讲解商户如何处理微信申请退款、退款回调、查询退款接口,其中有一些坑的地方,会着重强调。 浅析微信支付系列已经更新七篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:查询订单和关闭订单 浅析微信支付:支...

    silenceboy 评论0 收藏0
  • 浅析微信支付支付结果通知

    摘要:本文是浅析微信支付系列文章的第六篇,主要讲解支付成功后,微信回调商户支付结果通知的处理。微信支付支付回调接口该链接是通过统一下单中提交的参数设置,如果链接无法访问,商户将无法接收到微信通知。 本文是【浅析微信支付】系列文章的第六篇,主要讲解支付成功后,微信回调商户支付结果通知的处理。 浅析微信支付系列已经更新五篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:统一下单接口 浅析...

    Dean 评论0 收藏0
  • 浅析微信支付:开通免充值产品功能及如何进行接口升级指引

    摘要:本文是浅析微信支付系列文章的第十五篇,主要讲解如何开通免充值产品功能流程和其中的注意事项,对于接口升级会重要讲解,避免爬坑。 本文是【浅析微信支付】系列文章的第十五篇,主要讲解如何开通免充值产品功能流程和其中的注意事项,对于接口升级会重要讲解,避免爬坑。 浅析微信支付系列已经更新十五篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发...

    NicolasHe 评论0 收藏0
  • 浅析微信支付:前篇大纲

    摘要:浅析微信支付前篇大纲本文是浅析微信支付系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。下面讲一下我是如何去学习微信支付的。 浅析微信支付:前篇大纲 本文是【浅析微信支付】系列文章的第一篇,主要会介绍一下为何写下这个系列以及对于微信支付的一点小经验,与君共勉。 以下会分几个步骤讲一下我学习微信支付的过程,也是一部辛酸史,也是希望朋友们不要再次跌进...

    mayaohua 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<