java 查询微信支付订单

总体思路

  1. 对参数进行加密
  2. 发送请求,请求回来的参数进行验签
  3. 后续你自己的处理逻辑
1.对参数进行加密
//所用到的参数
Map<String,Object> params = new HashMap<String,String>(7);
params.put("appid","");
params.put("mch_id","");
//微信的订单号和商户订单号2选1
params.put("transaction_id","");
//params.put("out_trade_no","");
params.put("nonce_str","");
params.put("sign_type","");
String sign = getSign(params);
params.put("sign",sign );
//得到请求的参数
String xmlStr = XmlUtil.mapToXmlStr(convert, "xml");

sortMap这个方法在支付里有写到感兴趣的就去看一下

//对参数进行加密
 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–支付失败(其他原因,如银行返回失败)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值