package com.ynxbd.common.service; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.Order; import com.ynxbd.common.dao.his.HisRecipeDao; import com.ynxbd.common.helper.common.CodeHelper; import com.ynxbd.common.helper.common.DateHelper; import com.ynxbd.common.helper.common.ErrorHelper; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.result.JsonResult; import com.ynxbd.wx.wxfactory.WxPayHelper; import com.ynxbd.wx.config.WeChatConfig; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import weixin.popular.api.PayMchAPI; import weixin.popular.bean.paymch.MchOrderInfoResult; import weixin.popular.bean.paymch.MchOrderquery; import java.math.BigDecimal; import java.util.ArrayList; @Slf4j public class Test { public static void main(String[] args) { // System.out.println(JsonHelper.toJsonString(queryOrder("WX7c1ea238c08f420d2bb8262f7254"))); String piMd5 = "9444144" + "Z2007" + "xbd"; piMd5 = DigestUtils.md5Hex(piMd5).toUpperCase(); System.out.println(piMd5); } /** * 查询订单 * * @param outTradeNo 订单号 * @return 订单信息 */ public static Order queryOrder(String outTradeNo) { Order order = new Order(); order.setOutTradeNo(outTradeNo); try { MchOrderquery mchOrderquery = new MchOrderquery(); String appId = WeChatConfig.APP_ID; String mchId = WeChatConfig.MCH_ID; String mchKey = WeChatConfig.MCH_KEY; mchOrderquery.setAppid(appId); mchOrderquery.setMch_id(mchId); mchOrderquery.setOut_trade_no(outTradeNo); mchOrderquery.setNonce_str(CodeHelper.get32UUID()); MchOrderInfoResult wxResult = PayMchAPI.payOrderquery(mchOrderquery, mchKey); if (wxResult == null) { order.setErrorMsg("【微信】查询订单失败"); return order; } // 调用错误 if (WxPayHelper.FAIL.equals(wxResult.getReturn_code())) { order.setErrorCode(wxResult.getReturn_code()); order.setErrorMsg(wxResult.getReturn_msg()); return order; } // 业务错误 if (WxPayHelper.FAIL.equals(wxResult.getResult_code())) { order.setErrorCode(wxResult.getErr_code()); order.setErrorMsg(wxResult.getErr_code_des()); return order; } String tradeState = wxResult.getTrade_state(); order.setTradeState(tradeState); if (WxPayHelper.SUCCESS.equals(tradeState)) { order.setSuccess(true); // 订单支付成功(判断条件) } else if (WxPayHelper.REFUND.equals(tradeState)) { order.setErrorMsg(wxResult.getTrade_state_desc()); order.setRefund(true); // 订单发生过退款 } else { // 交易错误 order.setErrorCode(tradeState); order.setErrorMsg(wxResult.getTrade_state_desc()); return order; } // 交易成功 order.setOpenid(wxResult.getOpenid()); order.setBankTransNo(wxResult.getTransaction_id()); Integer totalFee = wxResult.getTotal_fee(); if (totalFee != null) { order.setTotalFee(new BigDecimal(totalFee).movePointLeft(2)); } } catch (Exception e) { ErrorHelper.println(e); order.setErrorMsg("异常信息:" + e.getMessage()); } return order; } }