Parcourir la source

增加机构相关功能付款后回调的功能

hgw il y a 3 ans
Parent
commit
ce60ebd4ea

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TenantOrderRecordService.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.dto.TenantOrderRecordDto;
 import com.ym.mec.biz.dal.entity.TenantOrderRecord;
 import com.ym.mec.common.page.PageInfo;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
 
 /**
@@ -32,5 +33,7 @@ public interface TenantOrderRecordService extends IService<TenantOrderRecord> {
 
     void rechargeSuccess(TenantOrderRecord record);
 
+    String callback(HttpServletRequest request);
+
 }
 

+ 61 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantOrderRecordServiceImpl.java

@@ -9,6 +9,9 @@ import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 
+import com.alibaba.fastjson.JSONObject;
+import com.huifu.adapay.core.AdapayCore;
+import com.huifu.adapay.core.util.AdapaySign;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.LocalDateTime;
@@ -64,6 +67,8 @@ import com.ym.mec.thirdparty.adapay.Payment;
 import com.ym.mec.thirdparty.adapay.entity.HfMerchantConfig;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * 机构付款记录表(TenantOrderRecord)表服务实现类
  *
@@ -98,7 +103,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
     private TenantProxyDividendService tenantProxyDividendService;
     @Autowired
     private TenantProxyUserRelationService tenantProxyUserRelationService;
-    
+
     @Autowired
     private HfMerchantConfigService hfMerchantConfigService;
 
@@ -344,10 +349,10 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
             try {
                 Integer tenantId = -1;
                 HfMerchantConfig hfMerchantConfig = hfMerchantConfigService.queryByTenantId(tenantId);
-                if(hfMerchantConfig == null){
-                	throw new BizException("机构[{}]汇付商户信息找不到", tenantId);
+                if (hfMerchantConfig == null) {
+                    throw new BizException("机构[{}]汇付商户信息找不到", tenantId);
                 }
-                
+
                 payment = Payment.queryPayment(orderRecord.getTransNo(), hfMerchantConfig.getMerKey());
                 log.info("    >>>>> checkTenantOrder  payment start");
                 String status = (String) payment.get("status");
@@ -429,6 +434,58 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
         detail.put("num", productInfo.getExpiryCount());
     }
 
+    /**
+     * 机构相关支付-回调
+     */
+    @Override
+    public String callback(HttpServletRequest request) {
+        // 验签请参data
+        String data = request.getParameter("data");
+        // 验签请参sign
+        String sign = request.getParameter("sign");
+        log.info("tenant callback request param:{}", data);
+        try {
+            // 验签
+            if (AdapaySign.verifySign(data, sign, AdapayCore.PUBLIC_KEY)) {
+                JSONObject dataObj = JSON.parseObject(data);
+                String transType = request.getParameter("type");
+                String orderNo = dataObj.getString("order_no");
+                TenantOrderRecord record = this.getOne(Wrappers.<TenantOrderRecord>lambdaQuery()
+                        .eq(TenantOrderRecord::getOrderNo, orderNo));
+                if(Objects.isNull(record)){
+                    log.error("error tenant callback request orderNo is null param:{}", data);
+                    return "failed";
+                }
+                switch (transType) {
+                    case "payment.succeeded":// 支付成功
+                        Consumer<TenantOrderRecord> consumer = checkOrder.get(record.getOrderType());
+                        if (Objects.nonNull(consumer)) {
+                            consumer.accept(record);
+                        }
+                        LocalDateTime now = LocalDateTime.now();
+                        record.setPayDate(now.toLocalDate().toDate());
+                        record.setPayTime(now.toDate());
+                        //修改流水
+                        record.setOrderState(1);
+                        baseMapper.updateById(record);
+                        break;
+                    case "payment.failed":// 支付失败
+                        //修改流水
+                        record.setOrderState(2);
+                        baseMapper.updateById(record);
+                        break;
+                    default:
+                        break;
+                }
+            } else {
+                return "验签失败";
+            }
+        } catch (Exception e) {
+            log.error("error tenant callback request param:{}", data);
+            return e.getMessage();
+        }
+        return "succeeded";
+    }
 
 }
 

+ 11 - 58
mec-web/src/main/java/com/ym/mec/web/controller/TenantInfoController.java

@@ -1,9 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.huifu.adapay.core.AdapayCore;
-import com.huifu.adapay.core.util.AdapaySign;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.TenantInfoDto;
@@ -12,26 +8,26 @@ import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.dal.entity.TenantProductSumm;
 import com.ym.mec.biz.service.TenantInfoSendMsgService;
 import com.ym.mec.biz.service.TenantInfoService;
+import com.ym.mec.biz.service.TenantOrderRecordService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.validator.ValidationKit;
-
 import io.swagger.annotations.*;
-
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
-
 import java.math.BigDecimal;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
@@ -46,6 +42,7 @@ import static com.ym.mec.biz.service.impl.TenantInfoSendMsgServiceImpl.OPEN;
 @Api(tags = "机构管理")
 @RestController
 public class TenantInfoController extends BaseController {
+    private static final Logger log = LoggerFactory.getLogger(TenantInfoController.class);
 
     @Autowired
     private TenantInfoService tenantInfoService;
@@ -56,6 +53,9 @@ public class TenantInfoController extends BaseController {
     @Autowired
     private TenantInfoSendMsgService tenantInfoSendMsgService;
 
+    @Resource
+    private TenantOrderRecordService tenantOrderRecordService;
+
     @ApiOperation("添加机构信息")
     @PostMapping(value = "/add")
     @PreAuthorize("@pcs.hasPermissions('tenantInfo/add')")
@@ -188,55 +188,8 @@ public class TenantInfoController extends BaseController {
     }
 
     @PostMapping("/callback")
-	public String callback(HttpServletRequest request) {
-		try {
-			// 验签请参data
-			String data = request.getParameter("data");
-			// 验签请参sign
-			String sign = request.getParameter("sign");
-			
-			logger.info("callback request param:{}", data);
-
-			// 验签
-			if (AdapaySign.verifySign(data, sign, AdapayCore.PUBLIC_KEY)) {
-				
-				JSONObject dataObj = JSON.parseObject(data);
-				
-				String transType = request.getParameter("type");
-				
-				Map<String, String> notifyMap = new HashMap<>();
-
-				switch (transType) {
-				case "payment.succeeded":// 支付成功
-
-					notifyMap.put("channelType", dataObj.getString("pay_channel"));
-					notifyMap.put("tradeState", "1");
-					notifyMap.put("totalMoney", dataObj.getString("pay_amt"));
-					notifyMap.put("merOrderNo", dataObj.getString("order_no"));
-					studentPaymentOrderService.updateOrder(notifyMap);
-					break;
-
-				case "payment.failed":// 支付失败
-
-					notifyMap.put("channelType", dataObj.getString("pay_channel"));
-					notifyMap.put("tradeState", "0");
-					notifyMap.put("totalMoney", dataObj.getString("pay_amt"));
-					notifyMap.put("merOrderNo", dataObj.getString("order_no"));
-					studentPaymentOrderService.updateOrder(notifyMap);
-
-					break;
-
-				default:
-					break;
-				}
-			} else {
-				return "验签失败";
-			}
-		} catch (Exception e) {
-			return e.getMessage();
-		}
-		
-		return "succeeded";
-	}
+    public String callback(HttpServletRequest request) {
+        return tenantOrderRecordService.callback(request);
+    }
 
 }

+ 0 - 2
mec-web/src/main/java/com/ym/mec/web/controller/TenantOrderRecordController.java

@@ -32,8 +32,6 @@ public class TenantOrderRecordController extends BaseController {
      */
     @Resource
     private TenantOrderRecordService tenantOrderRecordService;
-    @Autowired
-    private OrderPayOpsService orderPayOpsService;
 
     @ApiOperation("分页查询")
     @PostMapping(value = "/queryPage")