diff --git a/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java b/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java index 351b845e..d1e4ac55 100644 --- a/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java +++ b/hai-bweb/src/main/java/com/bweb/controller/OutRechargeOrderController.java @@ -1,6 +1,7 @@ package com.bweb.controller; import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSONObject; import com.bweb.config.SysConst; import com.bweb.model.ExportOutRechargeOrder; import com.bweb.model.ExportOutRechargeOrderCount; @@ -14,6 +15,7 @@ import com.hai.common.pay.util.XmlUtil; import com.hai.common.pay.util.sdk.WXPayConstants; import com.hai.common.utils.ResponseMsgUtil; import com.hai.common.utils.WxUtils; +import com.hai.config.HuiLianTongUnionCardConfig; import com.hai.entity.OutRechargeOrder; import com.hai.model.*; import com.hai.service.OutRechargeOrderService; @@ -124,6 +126,7 @@ public class OutRechargeOrderController { @RequestParam(name = "rechargeModel", required = false) String rechargeModel, @RequestParam(name = "rechargeContent", required = false) String rechargeContent, @RequestParam(name = "userPhone", required = false) String userPhone, + @RequestParam(name = "payType", required = false) Integer payType, @RequestParam(name = "payTimeS", required = false) Long payTimeS, @RequestParam(name = "payTimeE", required = false) Long payTimeE, @RequestParam(name = "pageNum", required = true) Integer pageNum, @@ -150,7 +153,10 @@ public class OutRechargeOrderController { if (StringUtils.isNotBlank(userPhone)) { map.put("userPhone", userPhone); } + if (payType != null) { + map.put("payType" , payType.toString()); + } if (payTimeS != null) { map.put("payTimeS", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(payTimeS)); } @@ -189,6 +195,7 @@ public class OutRechargeOrderController { @RequestParam(name = "rechargeModel", required = false) String rechargeModel, @RequestParam(name = "rechargeContent", required = false) String rechargeContent, @RequestParam(name = "userPhone", required = false) String userPhone, + @RequestParam(name = "payType", required = false) Integer payType, @RequestParam(name = "createTimeS", required = false) Long createTimeS, @RequestParam(name = "createTimeE", required = false) Long createTimeE, @RequestParam(name = "payTimeS", required = false) Long payTimeS, @@ -201,6 +208,7 @@ public class OutRechargeOrderController { map.put("rechargeModel", rechargeModel); map.put("rechargeContent", rechargeContent); map.put("userPhone", userPhone); + map.put("payType", payType); map.put("createTimeS", createTimeS); map.put("createTimeE", createTimeE); map.put("payTimeS", payTimeS); @@ -236,32 +244,53 @@ public class OutRechargeOrderController { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法退款,订单不处于已支付状态"); } - Map param = new HashMap<>(); - param.put("appid", "wx637bd6f7314daa46"); - param.put("mch_id", "1289663601"); - param.put("sub_mch_id" , "1609882817"); - param.put("nonce_str", WxUtils.makeNonStr()); - param.put("transaction_id", order.getPaySerialNo()); - param.put("out_refund_no", "HFR"+new Date().getTime()); - param.put("total_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue())); - param.put("refund_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue())); - param.put("sign_type", "HMAC-SHA256"); - - String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5" , WXPayConstants.SignType.HMACSHA256); - param.put("sign", signStr); - - String resultXmL = doRefundRequest(param.get("mch_id"), null, WxUtils.mapToXml(param)); - OrderRefundModel orderRefundModel = XmlUtil.getObjectFromXML(resultXmL, OrderRefundModel.class); - if(orderRefundModel.getResult_code().equals("SUCCESS")) { - order.setStatus(5); - order.setRefundTime(new Date()); - order.setOutRefundNo(orderRefundModel.getOut_refund_no()); - order.setRefundId(orderRefundModel.getRefund_id()); - order.setRefundFee(new BigDecimal(orderRefundModel.getRefund_fee()).divide(new BigDecimal("100"))); - outRechargeOrderService.updateOrder(order); - return ResponseMsgUtil.success("退款成功"); + if (order.getPayType() == 2) { + JSONObject jsonObject = HuiLianTongUnionCardConfig.refund( "HFR"+new Date().getTime() , order.getOrderNo()); + JSONObject dataObject = HuiLianTongUnionCardConfig.resolveResponse(jsonObject.getString("data")); + + if (dataObject.getBoolean("success")) { + order.setStatus(5); + order.setRefundTime(new Date()); + order.setOutRefundNo("HFR"+new Date().getTime() ); + order.setRefundFee(order.getPayRealPrice()); + order.setRefundId(dataObject.getString("orderId")); + outRechargeOrderService.updateOrder(order); + return ResponseMsgUtil.success("退款成功"); + } else { + log.error("orderToPay error!", dataObject.getString("message")); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, dataObject.getString("message")); + } + + } else { + Map param = new HashMap<>(); + param.put("appid", "wx637bd6f7314daa46"); + param.put("mch_id", "1289663601"); + param.put("sub_mch_id" , "1609882817"); + param.put("nonce_str", WxUtils.makeNonStr()); + param.put("transaction_id", order.getPaySerialNo()); + param.put("out_refund_no", "HFR"+new Date().getTime()); + param.put("total_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue())); + param.put("refund_fee", String.valueOf(order.getPayRealPrice().multiply(new BigDecimal("100")).intValue())); + param.put("sign_type", "HMAC-SHA256"); + + String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5" , WXPayConstants.SignType.HMACSHA256); + param.put("sign", signStr); + + String resultXmL = doRefundRequest(param.get("mch_id"), null, WxUtils.mapToXml(param)); + OrderRefundModel orderRefundModel = XmlUtil.getObjectFromXML(resultXmL, OrderRefundModel.class); + if(orderRefundModel.getResult_code().equals("SUCCESS")) { + order.setStatus(5); + order.setRefundTime(new Date()); + order.setOutRefundNo(orderRefundModel.getOut_refund_no()); + order.setRefundId(orderRefundModel.getRefund_id()); + order.setRefundFee(new BigDecimal(orderRefundModel.getRefund_fee()).divide(new BigDecimal("100"))); + outRechargeOrderService.updateOrder(order); + return ResponseMsgUtil.success("退款成功"); + } + return ResponseMsgUtil.success("退款失败!错误代码:"+orderRefundModel.getErr_code()+",错误描述"+orderRefundModel.getErr_code_des()); } - return ResponseMsgUtil.success("退款失败!错误代码:"+orderRefundModel.getErr_code()+",错误描述"+orderRefundModel.getErr_code_des()); + + } catch (Exception e) { log.error("HighOrderController --> getUserOrderList() error!", e); diff --git a/hai-bweb/src/main/java/com/bweb/model/ExportOutRechargeOrder.java b/hai-bweb/src/main/java/com/bweb/model/ExportOutRechargeOrder.java index 16c6e695..72533171 100644 --- a/hai-bweb/src/main/java/com/bweb/model/ExportOutRechargeOrder.java +++ b/hai-bweb/src/main/java/com/bweb/model/ExportOutRechargeOrder.java @@ -22,9 +22,6 @@ public class ExportOutRechargeOrder { @ExcelProperty("充值内容") private String rechargeContent; - @ExcelProperty("中石油持卡人姓名") - private String rechargeName; - @ExcelProperty("备注") private String remarks; @@ -107,14 +104,6 @@ public class ExportOutRechargeOrder { this.rechargeContent = rechargeContent; } - public String getRechargeName() { - return rechargeName; - } - - public void setRechargeName(String rechargeName) { - this.rechargeName = rechargeName; - } - public String getRemarks() { return remarks; } diff --git a/hai-cweb/src/main/java/com/cweb/config/SysConfig.java b/hai-cweb/src/main/java/com/cweb/config/SysConfig.java index ab133ed3..b8ba35f1 100644 --- a/hai-cweb/src/main/java/com/cweb/config/SysConfig.java +++ b/hai-cweb/src/main/java/com/cweb/config/SysConfig.java @@ -27,6 +27,9 @@ public class SysConfig { private String notifyUrl; private String qzNotifyUrl; +// 重庆惠兑电子商务有限公司 + private String HDAppId; + public String getQzNotifyUrl() { return qzNotifyUrl; } @@ -138,4 +141,12 @@ public class SysConfig { public void setNotifyUrl(String notifyUrl) { this.notifyUrl = notifyUrl; } + + public String getHDAppId() { + return HDAppId; + } + + public void setHDAppId(String HDAppId) { + this.HDAppId = HDAppId; + } } diff --git a/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java index 414fb54a..ff13043e 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/OutRechargeOrderController.java @@ -263,7 +263,7 @@ public class OutRechargeOrderController { weChatPayReqInfo.setAppid(SysConst.getSysConfig().getWxMchAppId()); //公众号id weChatPayReqInfo.setMch_id(SysConst.getSysConfig().getWxMchId()); //商户号 weChatPayReqInfo.setSub_appid(SysConst.getSysConfig().getWxSubAppId()); //商户号 - weChatPayReqInfo.setSub_mch_id("1614670195"); //子商户号 + weChatPayReqInfo.setSub_mch_id("1614670195"); // weChatPayReqInfo.setOpenid(openId); weChatPayReqInfo.setSub_openid(openId); diff --git a/hai-cweb/src/main/resources/dev/config.properties b/hai-cweb/src/main/resources/dev/config.properties index 6316dbef..996cde57 100644 --- a/hai-cweb/src/main/resources/dev/config.properties +++ b/hai-cweb/src/main/resources/dev/config.properties @@ -12,6 +12,9 @@ wxSubAppId=wx8d49e2f83025229d wxSubMchId=1609882817 wxUnifiedOrderUrl=https://api.mch.weixin.qq.com/pay/unifiedorder +# ???????????? +HDAppId = 1614670195 + notifyUrl=https://hsgcs.dctpay.com/crest/wechatpay/notify fileUrl=/home/project/hsg/filesystem diff --git a/hai-service/src/main/java/com/hai/dao/OutRechargeOrderMapperExt.java b/hai-service/src/main/java/com/hai/dao/OutRechargeOrderMapperExt.java index e5ab4456..3612e890 100644 --- a/hai-service/src/main/java/com/hai/dao/OutRechargeOrderMapperExt.java +++ b/hai-service/src/main/java/com/hai/dao/OutRechargeOrderMapperExt.java @@ -64,12 +64,12 @@ public interface OutRechargeOrderMapperExt { " a.order_no orderNo," + " a.user_name userName," + " a.user_phone userPhone," + - " case a.recharge_model when 1 then '话费充值' when 2 then '中石化' when 3 then '中石油' end rechargeModelName," + + " case a.recharge_model when 1 then '电信话费' when 2 then '移动话费' when 3 then '联通话费' end rechargeModelName," + " a.recharge_content rechargeContent," + " a.recharge_name rechargeName," + " a.id_card rechargeIdCard," + " a.remarks remarks," + - " case a.pay_type when 1 then '微信' end payTypeName," + + " case a.pay_type when 1 then '微信' when 2 then '工会卡' when 3 then '积分' end payTypeName," + " a.order_price orderPrice," + " a.pay_price payPrice," + " a.pay_real_price payRealPrice," + diff --git a/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java index bbf9301e..9f913a87 100644 --- a/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/OutRechargeOrderServiceImpl.java @@ -62,6 +62,10 @@ public class OutRechargeOrderServiceImpl implements OutRechargeOrderService { criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); } + if (MapUtils.getInteger(map, "payType") != null) { + criteria.andPayTypeEqualTo(MapUtils.getInteger(map, "payType")); + } + if (MapUtils.getString(map, "orderNo") != null) { criteria.andOrderNoLike("%" + MapUtils.getString(map, "orderNo") + "%"); }