You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.7 KiB
103 lines
3.7 KiB
2 years ago
|
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;
|
||
|
}
|
||
|
}
|