官方文档

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

一、应用场景

  • 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知
  • 调用支付接口后,返回系统错误或未知交易状态情况
  • 调用刷卡支付API,返回USERPAYING的状态
  • 调用关单或撤销接口API之前,需确认支付状态

二、接口地址

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

三、请求参数

可以根据微信订单号(优先使用)或者商户订单号进行查询
package com.phil.wechatpay.model.rep;import java.io.Serializable;/*** 查询订单请求参数(正常XML)* @author phil* @date  2017年7月25日**/
public class OrderQueryParams extends AbstractPayParams implements Serializable{/*** */private static final long serialVersionUID = -168458096490563992L;private String transaction_id; //微信订单号,优先private String out_trade_no; //商户订单号    二选一public String getTransaction_id() {return transaction_id;}public void setTransaction_id(String transaction_id) {this.transaction_id = transaction_id;}public String getOut_trade_no() {return out_trade_no;}public void setOut_trade_no(String out_trade_no) {this.out_trade_no = out_trade_no;}
}

四、返回结果

自己酌情封装
package com.phil.wechatpay.model.resp;import java.io.Serializable;import com.phil.common.annotation.NotRequire;/*** 查询订单返回参数(带<![CDATA[]]>XML格式)* * @author phil* @date 2017年7月25日**/
public class OrderQueryResult extends AbstractPayResult implements Serializable {/*** */private static final long serialVersionUID = -1996103742747816922L;private String return_code; // 返回状态码SUCCESS/FAIL@NotRequireprivate String err_code;// 错误返回的信息描述@NotRequireprivate String err_code_des;// 错误返回的信息描述/**** return_code 、result_code、trade_state ***为SUCCESS ****/.....
}

五、查询订单

package com.phil.wechatpay.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.phil.common.config.WechatConfig;
import com.phil.common.util.HttpReqUtil;
import com.phil.common.util.PayUtil;
import com.phil.common.util.SignatureUtil;
import com.phil.common.util.XmlUtil;
import com.phil.wechatpay.model.rep.OrderQueryParams;
import com.phil.wechatpay.model.resp.OrderQueryResult;
import com.phil.wechatpay.service.WechatPayService;/*** 查询订单* @author phil* @date  2017年7月25日**/
@Controller
@RequestMapping("/wxpay/")
public class WechatPayOrderQueryController {@Autowiredprivate WechatPayService wechatPayService;@ResponseBody@RequestMapping("orderQuery")public OrderQueryResult orderQuery(HttpServletRequest request, HttpServletResponse response) throws Exception {OrderQueryResult orderQueryResult = null;OrderQueryParams orderQueryParams = new OrderQueryParams();orderQueryParams.setAppid(WechatConfig.APP_ID);orderQueryParams.setMch_id(WechatConfig.MCH_ID);orderQueryParams.setNonce_str(PayUtil.createNonceStr());orderQueryParams.setTransaction_id(""); //二者选其一,推荐transaction_id//orderQueryParams.setOut_trade_no("");//请求的xmlString orderQueryXml = wechatPayService.abstractPayToXml(orderQueryParams);//签名合并到service// 返回<![CDATA[SUCCESS]]>格式的XMLString orderQueryResultXmL = HttpReqUtil.HttpsDefaultExecute(HttpReqUtil.POST_METHOD,WechatConfig.ORDER_QUERY_URL, null, orderQueryXml);// 进行签名校验if (SignatureUtil.checkIsSignValidFromWeiXin(orderQueryResultXmL)) {orderQueryResult = XmlUtil.getObjectFromXML(orderQueryResultXmL, OrderQueryResult.class);}return orderQueryResult;}
}

Java微信支付开发之查询订单相关推荐

  1. 微信撤销订单java,Java微信支付开发之关闭订单

    一.应用场景 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口 注意:订单生成后不能马上调用关单 ...

  2. java微信支付v3系列——3.订单创建准备操作

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  3. Java微信支付开发之扫码支付模式二

    官方文档 准备工作:已通过微信认证的公众号,域名可以不通过ICP备案 借鉴了很多大神的文章,在此先谢过了 大体过程:根据固定金额和商品的ID先生成订单,再生成二维码,客户扫一扫付款 模式二支付的流程如 ...

  4. Java微信支付开发之公众号支付(微信内H5调起支付)

    官方文档 准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败) 借鉴了很多大神的文章,在此先谢过了 整个支付流程,看懂就很好写了 一.设置支付目录 在微信公众平台设置您的公众号 ...

  5. java微信支付v3系列——6.微信支付查询订单API

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  6. java微信支付v3系列——4.创建订单的封装及使用

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  7. java微信支付v3系列——1.微信支付准备工作

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  8. java微信支付v3系列——8.微信支付之退款成功回调

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  9. java微信支付v3系列——7.微信支付之申请退款

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  10. java微信支付v3系列——5.微信支付成功回调

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

最新文章

  1. SAP WM Storage Type Search配置里的Storage Class WPC标记
  2. 关于WPF 中 “System.Windows.Markup.XamlParseException”类型的未经处理的异常在 PresentationFramework.dll 中发生 异常的处理。
  3. 这样就可以很方便的知道明天的天气了
  4. 关键词匹配(Ac自动机模板题)
  5. Vue——自定义组件的 v-model
  6. sql语法中u‘‘ n‘‘详解
  7. Ruby on Rails,创建开发用的MYSQL数据库
  8. 吴恩达机器学习总结五:单变量线性回归实战
  9. solr4.3纠错源码学习二——基于主索引
  10. 即时语音提示软件php,即时语音提示校对专家
  11. 为什么谐振时电抗为0_108kVA/108kV/27kV变频串联谐振试验装置
  12. 深度学习常用数据集汇总
  13. spyder的变量窗口显示不全
  14. WTL 自绘控件库 (CQsEdit)
  15. C#快递单号查询源码
  16. 解决 Javascript 中 atob 方法解码中文字符乱码问题
  17. DirectX11 裁剪像素
  18. 1006 - 打印星号三角形
  19. 简单的直接修改MAC地址的方法
  20. react生命周期详细介绍

热门文章

  1. 超级详细-NMOS、PMOS的工作原理及相关内容整理(上)
  2. QA和软件测试员的区别
  3. 【2019.06.21】基于Airtest的微信朋友圈自动点赞脚本设计与实现 2019.06.21脚本正常运行
  4. /etc/fstab详细参数配置
  5. ios旧版本app网站_你的iPhone还需要降级吗?深度分析:苹果为什么不开放iOS降级!...
  6. 【前端静态资源托管库-CDN】BootCDN资源全线失效
  7. 解决Android studio 导入工程慢的方法
  8. 三十种共识算法,直抵背后的灵魂
  9. 计算机上平方米的单位,word怎么写平方米 word中平方米的单位怎么打
  10. Unity笔记之动画遮罩