java 查询微信支付订单

总体思路

  1. 对参数进行加密
  2. 发送请求,请求回来的参数进行验签
  3. 后续你自己的处理逻辑

1.对参数进行加密

//对参数进行加密
 public String getSign(Map<String, Object> convert) {
        //转换成key=value&key1=value1
        String urlMap = WxUtil.sortMap(convert,"你的商户key");
        //加密
        return SecureUtil.md5(urlMap).toUpperCase();
    }

发送请求对返回参数进行验签

//hutool里的XmlUtil
Map<String, Object> responseMap =  XmlUtil.xmlToMap(responseXml);

//判断result_code和return_code

//取出返回来的sign用于比较
String resonseSign = responseMap.get("sign").toString();

//对返回的sign进行验签,验签不需要sign所以移除
responseMap.remove("sign");

//调用上面的getSign(Map<String, Object> convert)方法进行加密
String sign = getSign(responseMap);
//true为验证通过
boolean verifySign = sign.equals(resonseSign );

接下来就是看订单状态[trade_state]

trade_state有7种状态 SUCCESS—支付成功 REFUND—转入退款 NOTPAY—未支付 CLOSED—已关闭 REVOKED—已撤销(刷卡支付) USERPAYING–用户支付中 PAYERROR–支付失败(其他原因,如银行返回失败)
经验分享 程序员 微信小程序 职场和发展