周箭河 5 rokov pred
rodič
commit
3e93ef03c0

BIN
mec-biz/src/main/resources/config/certificate/yqpay.cer


+ 75 - 38
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -21,7 +21,9 @@ import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.snaker.engine.core.OrderService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -32,6 +34,7 @@ import java.util.*;
 @RequestMapping("studentOrder")
 @Api(tags = "订单回调")
 @RestController
+@EnableScheduling
 public class StudentOrderController extends BaseController {
     private static final Logger logger = LoggerFactory.getLogger(StudentOrderController.class);
     @Autowired
@@ -46,45 +49,73 @@ public class StudentOrderController extends BaseController {
     @Autowired
     private YqQueryService yqQueryService;
 
-    @PostMapping("/notify")
-    public String notify(@ModelAttribute NotifyMsg notifyMsg) {
-        //       ArrayList<SysAccount> sysAccounts = new ArrayList<>();
-//       Map<String,String[]> msg = request.getParameterMap();
-//        for (Map.Entry<String, String[]> stringObjectEntry : msg.entrySet()) {
-//            SysAccount sysAccount = new SysAccount();
-//            String KeyVal = "Key:" + stringObjectEntry.getKey() + " val:" + stringObjectEntry.getValue().toString();
-//            log.warn(KeyVal);
-//            sysAccount.setMerNo(stringObjectEntry.getKey());
-//            sysAccount.setChannel(request.getParameter(stringObjectEntry.getKey()));
-//            sysAccounts.add(sysAccount);
+//    @PostMapping("/notify")
+//    public String notify(@ModelAttribute NotifyMsg notifyMsg) {
+//        //       ArrayList<SysAccount> sysAccounts = new ArrayList<>();
+////       Map<String,String[]> msg = request.getParameterMap();
+////        for (Map.Entry<String, String[]> stringObjectEntry : msg.entrySet()) {
+////            SysAccount sysAccount = new SysAccount();
+////            String KeyVal = "Key:" + stringObjectEntry.getKey() + " val:" + stringObjectEntry.getValue().toString();
+////            log.warn(KeyVal);
+////            sysAccount.setMerNo(stringObjectEntry.getKey());
+////            sysAccount.setChannel(request.getParameter(stringObjectEntry.getKey()));
+////            sysAccounts.add(sysAccount);
+////        }
+//        //sysAccountDao.batchInsert(sysAccounts);
+//
+//        // "SUCCESS";
+//        //
+//        //不是成功和失败的通知
+//        if (!notifyMsg.getStatus().equals("TRADE_SUCCESS") && !notifyMsg.getStatus().equals("TRADE_CLOSED")) {
+//            return "SUCCESS";
 //        }
-        //sysAccountDao.batchInsert(sysAccounts);
-
-        // "SUCCESS";
-        //
-        //不是成功和失败的通知
-        if (!notifyMsg.getStatus().equals("TRADE_SUCCESS") && !notifyMsg.getStatus().equals("TRADE_CLOSED")) {
-            return "SUCCESS";
-        }
-
-        StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(notifyMsg.getMerOrderId().substring(4));
-        if (order != null && !order.getStatus().equals(DealStatusEnum.ING)) { //订单状态不是在支付中
-            return "SUCCESS";
-        }
-        DealStatusEnum status = notifyMsg.getStatus().equals("TRADE_SUCCESS") ? DealStatusEnum.SUCCESS : DealStatusEnum.FAilED;
+//
+//        StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(notifyMsg.getMerOrderId().substring(4));
+//        if (order != null && !order.getStatus().equals(DealStatusEnum.ING)) { //订单状态不是在支付中
+//            return "SUCCESS";
+//        }
+//        DealStatusEnum status = notifyMsg.getStatus().equals("TRADE_SUCCESS") ? DealStatusEnum.SUCCESS : DealStatusEnum.FAilED;
+//
+//        order.setStatus(status);
+//        order.setTransNo(notifyMsg.getSeqId());
+//        order.setPaymentBusinessChannel(notifyMsg.getTargetSys());
+//        order.setPayTime(notifyMsg.getPayTime());
+//        if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
+//            studentRegistrationService.updateApplyOrder(order);
+//        } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
+//            vipGroupService.orderCallback(order);
+//        } else if (order.getType().equals(OrderTypeEnum.RENEW)) {
+//            musicGroupService.renewForCallback(order);
+//        }
+//        return "SUCCESS";
+//    }
 
-        order.setStatus(status);
-        order.setTransNo(notifyMsg.getSeqId());
-        order.setPaymentBusinessChannel(notifyMsg.getTargetSys());
-        order.setPayTime(notifyMsg.getPayTime());
-        if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
-            studentRegistrationService.updateApplyOrder(order);
-        } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
-            vipGroupService.orderCallback(order);
-        } else if (order.getType().equals(OrderTypeEnum.RENEW)) {
-            musicGroupService.renewForCallback(order);
+    @PostMapping("/notify")
+    public Msg notify(@ModelAttribute Msg msg) throws Exception {
+        logger.info(msg.toString());
+        Map<String, Object> rqMap = new LinkedHashMap<String, Object>();
+        rqMap.put("code", msg.getCode());
+        rqMap.put("msg", msg.getMsg());
+        rqMap.put("responseType", msg.getResponseType());
+        rqMap.put("responseParameters", msg.getResponseParameters());
+        rqMap.put("sign", msg.getSign());
+        //boolean rs = YqPayUtil.verify(rqMap);
+        msg.setMsg("fail");
+        Map<String, String> notifyMap = new HashMap<>();
+        //if (rs) {
+            notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
+        //}
+        //支付中订单存在,更新状态
+        if (msg.getResponseType().equals("1") && notifyMap.size() > 0) {
+            String tradeState = msg.getCode().equals("88") ? "1" : "0";
+            notifyMap.put("tradeState", tradeState);
+            notifyMap.put("totalMoney", notifyMap.get("payAmount"));
+            notifyMap.put("merOrderNo", notifyMap.get("merMerOrderNo"));
+            this.updateOrder(notifyMap);
+            msg.setCode("000000");
+            msg.setMsg("success");
         }
-        return "SUCCESS";
+        return msg;
     }
 
 
@@ -109,11 +140,15 @@ public class StudentOrderController extends BaseController {
 //            return failed("签名验证失败");
 //        }
         Payment payment = new Pay().executePayment(amount, orderNo, payChannel, orderSubject, orderBody);
+        StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(orderNo);
+        order.setTransNo(payment.getId());
+        studentPaymentOrderService.update(order);
+
         return succeed(payment);
     }
 
 
-    @Scheduled(cron = "0/5 * * * * ?")
+    //@Scheduled(cron = "0/5 * * * * ?")
     public void getOrderStatus() throws Exception {
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "YQPAY");
         String merOrderNos = ""; //
@@ -134,7 +169,9 @@ public class StudentOrderController extends BaseController {
         resultMap.put("merOrderNoList", merOrderNos);
         Map<String, Object> requestMap = YqPayUtil.getRequestMap(notifyUrl, resultMap);
         Msg queryRs = yqQueryService.orderQuery(requestMap);
-        logger.info("查询易乾结果" + queryRs.toString());
+        // = yqQueryService.orderQuery(requestMap);
+       logger.info("查询易乾结果" +queryRs.toString());
+       //logger.info("查询易乾结果" + queryRs.toString());
         if (queryRs.getCode().equals("88")) {
             //更新订单状态
             String[] statusArr = {"0", "1", "7"};