微信扫码支付——查询订单

微信支付订单查询:

  1. weconfig 中已设置好相应配置参数
  2. 相应工具类已写好
  3. 官方文档 微信订单查询接口API
	/*
	 * 微信支付查询方法
	 * 
	 * @see com.AlipayWeChatPay.service.weChatPayService#query(java.util.Map)
	 */
	@Override
	@Nullable
	public String query(Map<String, String> params) throws Exception {
		// 商品订单号和微信订单号
		String out_trade_no = params.get("out_trade_no");
		String transaction_id = params.get("transaction_id");

		if (StringUtils.isBlank(out_trade_no) && StringUtils.isBlank(transaction_id)) {
			return "微信订单号和商品订单号不能都为空";
		}

		// 时间,生成随机数
		String currTime = PayForUtil.getCurrTime();
		String strTime = currTime.substring(8, currTime.length());
		String strRandom = PayForUtil.buildRandom(4) + "";
		String nonce_str = strTime + strRandom;

		// 参数封装
		SortedMap<Object, Object> packageParams = new TreeMap<Object, Object>();
		packageParams.put("appid", weChatPayConfig.APP_ID);
		packageParams.put("mch_id", weChatPayConfig.MCH_ID);
		packageParams.put("nonce_str", nonce_str);
		if (!StringUtils.isBlank(out_trade_no)) {
			packageParams.put("out_trade_no", out_trade_no);
		}
		if (!StringUtils.isBlank(transaction_id)) {
			packageParams.put("transaction_id", transaction_id);
		}

		String sign = PayForUtil.createSign("UTF-8", packageParams, weChatPayConfig.API_KEY); // 获取签名
		packageParams.put("sign", sign);

		String resquestXML = PayForUtil.getRequestXml(packageParams);
		lg.info("请求参数报文:" + resquestXML);

		String responseXml = httpUtil.postData(weChatPayConfig.QUERY_URL, resquestXML);
		Map map = XMLUtil.xmlToMap(responseXml);
		lg.info("微信支付响应参数的报文" + responseXml);
		lg.info(map);

		String result = (String) map.get("trade_state_desc");
		return result;
	}

weChatPayConfig.QUERY_URL 是微信订单查询的地址
PayForUtil.getRequestXml() 将map转换为xml请求报文

微信其他接口API的调用方法与此类似,大多都是将参数封装,生成sign并发送请求报文

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值