1
0
Просмотр исходного кода

fix:微信、支付宝支付bug

lhm 3 лет назад
Родитель
Сommit
7358bd7f46

+ 10 - 6
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/ali/AliCusDeclareBiz.java

@@ -40,6 +40,7 @@ import org.springframework.util.StringUtils;
 import com.kmall.admin.cuspay.biz.ali.support.sign.MD5;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -126,7 +127,7 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             // 商户编号
             aliCbPayDoc.setMerchSn(params.get("merchSn").toString());
             // 商户名称
-            aliCbPayDoc.setMerchName(params.get("merchName").toString());
+            aliCbPayDoc.setMerchName(platName);
             // 平台编号
             aliCbPayDoc.setPlatSn(platSn);
             // 平台中文名
@@ -139,7 +140,7 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             aliCbPayDoc.setAliPaySn("alicb" + IdWorkerAide.nextId());
             // *********设置商户通知表参数*********
         } catch (Exception e) {
-            logger.error("支付宝支付单设置参数失败:" + e.getMessage());
+            logger.error("支付宝支付单设置参数失败:", e);
             return;
         }
 
@@ -148,7 +149,7 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         try {
             addAliCbPayDoc(aliCbPayDoc);
         } catch (Exception e) {
-            logger.error("支付宝支付单信息写入数据库失败:" + e.getMessage());
+            logger.error("支付宝支付单信息写入数据库失败:", e);
             return;
         }
         logger.info("支付宝支付单信息写入数据库结束");
@@ -193,8 +194,9 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
 
         try {
             // todo, 请求海关接口
-            // String result = OkHttpUtils.get(declareURL + paramter);
-            String result = "";
+             String result = OkHttpUtils.get(declareURL + paramter);
+//            String result = "";
+            result = new String(result.getBytes("GBK"));
             doc = DocumentHelper.parseText(result);
             logger.info("alipay response message result :" + result);
             stringObjectMap = XmlUtils.Dom2Map(doc);
@@ -214,7 +216,6 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         }
 
         MerchNoti merchNoti = new MerchNoti();
-        merchNoti.setOrderSn(params.get("orderSn").toString());
         try {
             if (stringObjectMap != null) {
                 isSuccess = stringObjectMap.get("is_success").toString();
@@ -279,6 +280,9 @@ public class AliCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         }
         merchNoti = builder.aliCbPay(aliCbPayDoc).build();
         merchNoti = builder.code(aliCbPayDoc.getResultCode()).cusDeclStatus(AliDict.MerchNoticeStatus.i_12.getItem()).build();
+        String orderSn = params.get("orderSn").toString();
+        merchNoti.setOrderSn(orderSn);
+        merchNoti.setAllSubOrderNo(orderSn);
         merchNotis.add(merchNoti);
 
         // 持久化商户通知数据

+ 15 - 4
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/merch/MerchantNoticeBiz.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.cuspay.biz.merch;
 
 import com.google.common.collect.ImmutableMap;
+import com.kmall.admin.cuspay.ccnet2cuspay.common.wx.WxDict;
 import com.kmall.admin.cuspay.common.contant.MerchNoticeDict;
 import com.kmall.admin.cuspay.util.Contants;
 import com.kmall.admin.dao.cuspay.merch.MerchNotiMapper;
@@ -19,6 +20,10 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 
 /**
@@ -69,13 +74,13 @@ public class MerchantNoticeBiz {
 
         notis.forEach(noti->{
 
-            if (StringUtils.isEmpty(noti.getNotifyUrl())) {
+            /*if (StringUtils.isEmpty(noti.getNotifyUrl())) {
                 logger.error("商户通知回调接口为空");
                 noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
                 noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
                 noticeList.add(noti);
                 return;
-            }
+            }*/
 
             if (Objects.isNull(noti.getNotiCount()) || noti.getNotiCount() <= 0) {
                 logger.error("通知商户次数为空");
@@ -106,11 +111,17 @@ public class MerchantNoticeBiz {
                 orderProcessRecordService.updateMallOrderProcessRecord(recordMap);
                 Map<String, Object> alipayMap = ImmutableMap.of("orderSn", noti.getOrderSn(), "buyerPayCheck", noti.getBuyerPayerCheck());
                 orderService.updateBuyerPayCheck(alipayMap);
+                if (MerchNoticeDict.BuyerPayerCheckStatus.i_1.getItem().equals(noti.getBuyerPayerCheck())
+                        && WxDict.MerchNoticeStatus.i_12.getItem().equals(noti.getCusDeclStatus())) {
+                    noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
+                    noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_2.getItem());
+                }
 
-            }else if(Constants.DocStatus.item_13.getItem().equals(noti.getCusDeclStatus())){
+            } else if(Constants.DocStatus.item_13.getItem().equals(noti.getCusDeclStatus())){
                 Map<String, Object> recordMap = ImmutableMap.of("orderSn", noti.getOrderSn(), "paymentSuccTime", new Date(),"isPaymentSend", Contants.WX_FAIL);
                 orderProcessRecordService.updateMallOrderProcessRecord(recordMap);
-
+                Map<String, Object> alipayMap = ImmutableMap.of("orderSn", noti.getOrderSn(), "buyerPayCheck", noti.getBuyerPayerCheck());
+                orderService.updateBuyerPayCheck(alipayMap);
             }
             noticeList.add(noti);
         });

+ 13 - 5
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/wx/WxCusDeclareBiz.java

@@ -145,6 +145,15 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             if (!StringUtils.isEmpty(params.get("productFee"))) {
                 wxCbPayDoc.setProductFee(Integer.parseInt(params.get("productFee").toString()));
             }
+            wxCbPayDoc.setCertType("IDCARD");
+            Object certIdObj = params.get("certId");
+            if (!StringUtils.isEmpty(certIdObj)) {
+                wxCbPayDoc.setCertId(String.valueOf(certIdObj));
+            }
+            Object nameObj = params.get("name");
+            if (!StringUtils.isEmpty(nameObj)) {
+                wxCbPayDoc.setName(String.valueOf(nameObj));
+            }
             // *********设置支付单报关参数*********
 
             // *********设置商户通知表参数*********
@@ -153,7 +162,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             // 商户编号
             wxCbPayDoc.setMerchSn(params.get("merchSn").toString());
             // 商户名称
-            wxCbPayDoc.setMerchName(params.get("merchName").toString());
+            wxCbPayDoc.setMerchName(platName);
             // 平台编号
             wxCbPayDoc.setPlatSn(platSn);
             // 平台中文名
@@ -168,7 +177,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
             }
             // *********设置商户通知表参数*********
         } catch (Exception e) {
-            logger.error("微信支付单设置参数失败:" + e.getMessage());
+            logger.error("微信支付单设置参数失败:", e);
             return;
         }
 
@@ -224,8 +233,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         WxResponseMsg wxResponseMsgDto = null;
         try {
             // todo, 请求海关接口
-            // String result = OkHttpUtils.post(request);
-            String result = "";
+            String result = OkHttpUtils.post(request);
             StringReader reader = new StringReader(result);
             wxResponseMsgDto = JAXB.unmarshal(reader, WxResponseMsg.class);
             logger.info("result:" + result + "wx response message pojo:" + wxResponseMsgDto);
@@ -239,7 +247,6 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
         }
 
         MerchNoti merchNoti = new MerchNoti();
-        merchNoti.setOrderSn(params.get("orderSn").toString());
         try {
             wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
             wxCbPayDoc.setReturnCode(wxResponseMsgDto.getReturnCode());
@@ -338,6 +345,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
                         .build();
             }
             wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
+            merchNoti.setOrderSn(params.get("orderSn").toString());
         } catch (Exception e) {
             logger.error("更新支付单证写入数据库信息状态异常", e);
             return;

+ 9 - 30
kmall-admin/src/main/java/com/kmall/admin/cuspay/biz/wx/WxCusDeclareQueryBiz.java

@@ -247,12 +247,10 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
                             }
                             wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
 
-                            MerchNoti noti = new MerchNoti();
-                            noti.setCode(wxQueryResponseMsg.getErrCode());
-                            noti.setAllPayNo(wxQueryResponseMsg.getTransactionId());
-                            noti.setCusDeclStatus(merchNoti.getCusDeclStatus());
-                            noti.setAllSubOrderNo(allSubOrderNo);
-                            updateMerchNoti(noti,allSubOrderId,merchNoti);//更新商户通知
+
+                            merchNoti.setAllSubOrderNo(allSubOrderNo);
+                            merchNoti.setOrderSn(wxCbPayDoc.getSubOrderNo());
+                            merchNotiService.updateByOrderSn(merchNoti);;//更新商户通知
                         }
                     }else{//业务状态码失败
                         wxCbPayDoc.setErrCode(wxQueryResponseMsg.getErrCode());
@@ -265,12 +263,8 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
                                 .build();
                         wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
 
-                        MerchNoti noti = new MerchNoti();
-                        noti.setCode(wxQueryResponseMsg.getErrCode());
-                        noti.setAllPayNo(wxQueryResponseMsg.getTransactionId());
-                        noti.setCusDeclStatus(merchNoti.getCusDeclStatus());
-                        noti.setAllSubOrderNo(allSubOrderNo);
-                        updateMerchNoti(noti,allSubOrderId,merchNoti);//更新商户通知
+                        merchNoti.setOrderSn(wxCbPayDoc.getSubOrderNo());
+                        merchNotiService.updateByOrderSn(merchNoti);;//更新商户通知
                     }
                 }
                 ///返回状态码为失败
@@ -284,12 +278,8 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
                             .build();
                     wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
 
-                    MerchNoti noti = new MerchNoti();
-                    noti.setCode(wxQueryResponseMsg.getErrCode());
-                    noti.setAllPayNo(wxQueryResponseMsg.getTransactionId());
-                    noti.setCusDeclStatus(merchNoti.getCusDeclStatus());
-                    noti.setAllSubOrderNo(allSubOrderNo);
-                    updateMerchNoti(noti,allSubOrderId,merchNoti);//更新商户通知
+                    merchNoti.setOrderSn(wxCbPayDoc.getSubOrderNo());
+                    merchNotiService.updateByOrderSn(merchNoti);;//更新商户通知
                 }
             } catch (Exception e) {
                 logger.error("更新支付单证入库信息状态异常", e);
@@ -311,18 +301,7 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
         }
 
     }
-    private void updateMerchNoti(MerchNoti noti,String allSubOrderId,MerchNoti merchNoti){
-        List<MerchNoti> merchNotiList = merchNotiService.getMerchNotiByCodeAndOrderNo(noti);
-        if(merchNotiList != null && merchNotiList.size()>0){
-            MerchNoti merchNoti1 = merchNotiList.get(0);
-            merchNoti1.setTstm(new Date());
-            merchNoti1.setAllSubOrderId(allSubOrderId);
-            merchNotiService.update(merchNoti1);
-        }else{
-            merchNoti.setNotiSn(TablePrimaryKeyPrefix.merch_pay_noti_type + IdWorkerAide.nextId());
-            merchNotiService.insert(merchNoti);
-        }
-    }
+
     /**
      * 记录异常的支付单证信息
      * @param wxCbPayDoc

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/cuspay/service/MerchNotiService.java

@@ -23,4 +23,6 @@ public interface MerchNotiService {
     MerchNoti insert(MerchNoti merchNoti);
 
     MerchNoti update(MerchNoti merchNoti);
+
+    int updateByOrderSn(MerchNoti merchNoti);
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/cuspay/service/impl/MerchNotiServiceImpl.java

@@ -47,4 +47,9 @@ public class MerchNotiServiceImpl implements MerchNotiService {
         }
         return null;
     }
+
+    @Override
+    public int updateByOrderSn(MerchNoti merchNoti) {
+        return merchNotiMapper.updateByorderSn(merchNoti);
+    }
 }

+ 6 - 1
kmall-admin/src/main/java/com/kmall/admin/cuspay/task/AliPayCuspayTask.java

@@ -3,10 +3,13 @@ package com.kmall.admin.cuspay.task;
 import com.kmall.admin.cuspay.biz.ali.AliCusDeclareBiz;
 import com.kmall.admin.cuspay.biz.ali.AliCusDeclareQueryBiz;
 import com.kmall.admin.cuspay.biz.merch.MerchantNoticeBiz;
+import com.kmall.admin.cuspay.biz.wx.WxCusDeclareBiz;
+import com.kmall.admin.cuspay.biz.wx.WxCusDeclareQueryBiz;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+@Component
 public class AliPayCuspayTask {
     @Autowired
     private MerchantNoticeBiz merchantNoticeBiz;
@@ -15,12 +18,14 @@ public class AliPayCuspayTask {
     private AliCusDeclareQueryBiz aliCusDeclareQueryBiz;
 
     @Autowired
-    private AliCusDeclareBiz aliCusDeclareBiz;
+    private WxCusDeclareQueryBiz wxCusDeclareQueryBiz;
 
     @Scheduled(fixedDelay = 5000L)
     public void task() {
 
         merchantNoticeBiz.biz();
 
+        aliCusDeclareQueryBiz.biz(null);
+        wxCusDeclareQueryBiz.biz(null);
     }
 }

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/cuspay/merch/MerchNotiMapper.java

@@ -2,6 +2,7 @@ package com.kmall.admin.dao.cuspay.merch;
 
 
 import com.kmall.admin.cuspay.entity.merch.MerchNoti;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -25,4 +26,6 @@ public interface MerchNotiMapper {
     int updateBatch(List<MerchNoti> records);
 
     List<MerchNoti> getMerchNotiByCodeAndOrderNo(MerchNoti merchNoti);
+
+    int updateByorderSn(MerchNoti merchNoti);
 }

+ 78 - 46
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2500,23 +2500,23 @@ public class OrderServiceImpl implements OrderService {
 
             processRecordEntity.setPaymentStartTime(new Date());
             // 判断是微信的支付码还是支付宝的支付码
-//            if (parCode.startsWith("28")) {
-//                // 支付宝支付
-//                try {
-//                    AliPay(user, parCode, order, processRecordEntity, orderWXPayRecordCurrent, store);
-//                } catch (Exception e) {
-//                    LOGGER.error("支付宝支付出现异常!订单号:【{}】", order.getOrder_sn(), e);
-//                    throw e;
-//                }
-//            } else {
-//                // 微信支付
-//                try {
-//                    wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                    throw e;
-//                }
-//            }
+            if (parCode.startsWith("28")) {
+                // 支付宝支付
+                try {
+                    AliPay(user, parCode, order, processRecordEntity, orderWXPayRecordCurrent, store);
+                } catch (Exception e) {
+                    LOGGER.error("支付宝支付出现异常!订单号:【{}】", order.getOrder_sn(), e);
+                    throw e;
+                }
+            } else {
+                // 微信支付
+                try {
+                    wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            }
 
             processRecordEntity.setPaymentStartTime(new Date());
 
@@ -2962,7 +2962,7 @@ public class OrderServiceImpl implements OrderService {
         LOGGER.info("调用阿里支付接口的同步返回结果:" + responseJson);
         order.setResponse(responseJson);
         order.setPayApp("alipay");
-
+        order.setAliTradeNo(aliPayMicropayApiResult.getTradeNo());
         // 修改订单状态
         //当支付成功时,修改订单,并把其他支付记录撤销
         if (AliPayUtil.AliPayTradeState.SUCC.getCode().equals(aliPayMicropayApiResult.getCode())) {
@@ -2974,19 +2974,7 @@ public class OrderServiceImpl implements OrderService {
             processRecordEntity.setPaymentSuccTime(aliPayMicropayApiResult.getGmtPayment());
             processRecordEntity.setPayTransactionId(aliPayMicropayApiResult.getTradeNo());
 
-            // 组装支付单信息
-            Map<String, Object> orderSendCusParams = new HashMap<>();
-            orderSendCusParams.put("merchSn", order.getMerchSn());
-            orderSendCusParams.put("orderSn", order.getOrder_sn());
-            orderSendCusParams.put("merchName", order.getMerchName());
-            orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
-            orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
-            orderSendCusParams.put("tradeNo", order.getAliTradeNo());
-            orderSendCusParams.put("amount", order.getActual_price());
-
-            // 将支付单信息发送到当前项目下的 cuspay
-            aliCusDeclareBiz.biz(orderSendCusParams);
-
+            sendAliPayInfo(order, store);
 
             // 系统繁忙
         } else if (AliPayUtil.AliPayTradeState.SERVER_FAIL.getCode().equals(aliPayMicropayApiResult.getCode())) {
@@ -3060,6 +3048,21 @@ public class OrderServiceImpl implements OrderService {
 
     }
 
+    private void sendAliPayInfo(OrderVo order, StoreEntity store) {
+        // 组装支付单信息
+        Map<String, Object> orderSendCusParams = new HashMap<>();
+        orderSendCusParams.put("merchSn", order.getMerchSn());
+        orderSendCusParams.put("orderSn", order.getOrder_sn());
+        orderSendCusParams.put("merchName", order.getMerchName());
+        orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
+        orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
+        orderSendCusParams.put("tradeNo", order.getAliTradeNo());
+        orderSendCusParams.put("amount", order.getActual_price());
+
+        // 将支付单信息发送到当前项目下的 cuspay
+        aliCusDeclareBiz.biz(orderSendCusParams);
+    }
+
     /**
      * 微信支付
      */
@@ -3084,16 +3087,18 @@ public class OrderServiceImpl implements OrderService {
         order.setRequest(payOriginInfoDTO.getRequest());
         order.setResponse(payOriginInfoDTO.getResponse());
         order.setPayApp("wxpay");
+        order.setFeeType(wechatMicropayApiResult.getFee_type());
         resultObj.put("shopName", store.getStoreName()); // 根据门店编号查询
         resultObj.put("userName", user.getUsername());
         // 修改订单状态
         //当支付成功时,修改订单,并把其他支付记录撤销
+        AtomicBoolean atomicBoolean = new AtomicBoolean(false);
         if (WechatUtil.WXTradeState.SUCCESS.getCode().equals(wechatMicropayApiResult.getTrade_state())) {
             //查询当前订单所有的支付记录
             List<OrderWXPayRecordEntity> orderWXPayRecordEntitys =
                     orderWXPayRecordService.getRecordsByOutTradeNo(order.getOrder_sn());
             LOGGER.info("wechatMicropayApiResult.getTransaction_id()" + wechatMicropayApiResult.getTransaction_id());
-
+            order.setPayTransactionId(wechatMicropayApiResult.getTransaction_id());
             Map orderRaram = Maps.newHashMap();
             orderRaram.put("payTransactionId", wechatMicropayApiResult.getTransaction_id());
             orderRaram.put("orderId", order.getId());
@@ -3106,20 +3111,7 @@ public class OrderServiceImpl implements OrderService {
                     new SimpleDateFormat("yyyyMMddHHmmss").parse(wechatMicropayApiResult.getTime_end()));
             processRecordEntity.setPayTransactionId(wechatMicropayApiResult.getTransaction_id());
 
-            // 组装支付单信息
-            Map<String, Object> orderSendCusParams = new HashMap<>();
-            orderSendCusParams.put("merchSn", order.getMerchSn());
-            orderSendCusParams.put("orderSn", order.getOrder_sn());
-            orderSendCusParams.put("merchName", order.getMerchName());
-            orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
-            orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
-            orderSendCusParams.put("outTradeNo", order.getMerchOrderSn());
-            orderSendCusParams.put("transactionId", order.getPayTransactionId());
-            orderSendCusParams.put("subOrderId", "");   // ccnet原逻辑没有对该字段赋值
-            orderSendCusParams.put("subOrderNo", order.getOrder_sn());
-
-            // 将支付单信息发送到当前项目下的 cuspay
-            wxCusDeclareBiz.biz(orderSendCusParams);
+            atomicBoolean.set(true);
 
             //用户支付中
         } else if (WechatUtil.WXTradeState.USERPAYING.getCode().equals(wechatMicropayApiResult.getTrade_state())) {
@@ -3129,6 +3121,7 @@ public class OrderServiceImpl implements OrderService {
             while (true) {
                 boolean flag = orderQuery(order, processRecordEntity);
                 if (flag) {
+                    atomicBoolean.set(true);
                     break;
                 }
                 try {
@@ -3166,6 +3159,37 @@ public class OrderServiceImpl implements OrderService {
         } else {
             throw new RuntimeException("未支付或支付失败,请联系管理员");
         }
+
+        if (atomicBoolean.get()) {
+            // 推送支付单
+            sendWxPayInfo(order, store);
+        }
+
+    }
+
+    private void sendWxPayInfo(OrderVo order, StoreEntity store) {
+        // 组装支付单信息
+        Map<String, Object> orderSendCusParams = new HashMap<>();
+        orderSendCusParams.put("merchSn", order.getMerchSn());
+        orderSendCusParams.put("orderSn", order.getOrder_sn());
+        orderSendCusParams.put("merchName", order.getMerchName());
+        orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
+        orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
+        orderSendCusParams.put("outTradeNo", order.getMerchOrderSn());
+        orderSendCusParams.put("transactionId", order.getPayTransactionId());
+        orderSendCusParams.put("subOrderId", "");   // ccnet原逻辑没有对该字段赋值
+        orderSendCusParams.put("subOrderNo", order.getOrder_sn());
+        orderSendCusParams.put("feeType", order.getFeeType());
+        int orderFee = order.getActual_price().multiply(new BigDecimal(100)).intValue();
+        orderSendCusParams.put("orderFee", orderFee);
+        orderSendCusParams.put("productFee", orderFee);
+        orderSendCusParams.put("transportFee", 0);
+        UserEntity userEntity = userService.queryByMobile(order.getMobile());
+        orderSendCusParams.put("certId", userEntity.getIdNo());
+        orderSendCusParams.put("name", order.getPay_name());
+
+        // 将支付单信息发送到当前项目下的 cuspay
+        wxCusDeclareBiz.biz(orderSendCusParams);
     }
 
     /**
@@ -5183,6 +5207,14 @@ public class OrderServiceImpl implements OrderService {
             orderSendCusParams.put("transactionId", orderEntity.getPayTransactionId());
             orderSendCusParams.put("subOrderId", "");   // ccnet原逻辑没有对该字段赋值
             orderSendCusParams.put("subOrderNo", orderEntity.getOrderSn());
+            orderSendCusParams.put("feeType", "CNY");
+            int orderFee = orderEntity.getActualPrice().multiply(new BigDecimal(100)).intValue();
+            orderSendCusParams.put("orderFee", orderFee);
+            orderSendCusParams.put("productFee", orderFee);
+            orderSendCusParams.put("transportFee", 0);
+            UserEntity userEntity = userService.queryByMobile(orderEntity.getMobile());
+            orderSendCusParams.put("certId", userEntity.getIdNo());
+            orderSendCusParams.put("name", orderEntity.getPayName());
 
             // 将支付单信息发送到当前项目下的 cuspay
             wxCusDeclareBiz.biz(orderSendCusParams);

+ 96 - 2
kmall-admin/src/main/resources/mybatis/mapper/cuspay/MerchNotiMapper.xml

@@ -50,7 +50,7 @@
     select
     <include refid="Base_Column_List" />
     from merch_noti
-    where code = #{code,jdbcType=VARCHAR} and all_pay_no = #{allPayNo,jdbcType=VARCHAR} and cus_decl_status = #{cusDeclStatus,jdbcType=VARCHAR}
+    where code = #{code,jdbcType=VARCHAR} and all_pay_no = #{allPayNo,jdbcType=VARCHAR}
     <if test="allSubOrderNo != null" >
       and all_sub_order_no = #{allSubOrderNo}
     </if>
@@ -342,6 +342,100 @@
     where noti_sn = #{notiSn,jdbcType=VARCHAR}
   </update>
 
+  <update id="updateByorderSn" parameterType="com.kmall.admin.cuspay.entity.merch.MerchNoti" >
+    update merch_noti
+    <set >
+      <if test="allPaySn != null" >
+        all_pay_sn = #{allPaySn,jdbcType=VARCHAR},
+      </if>
+      <if test="merchSn != null" >
+        merch_sn = #{merchSn,jdbcType=VARCHAR},
+      </if>
+      <if test="merchName != null" >
+        merch_name = #{merchName,jdbcType=VARCHAR},
+      </if>
+      <if test="merchErpOrderSn != null" >
+        merch_erp_order_sn = #{merchErpOrderSn,jdbcType=VARCHAR},
+      </if>
+      <if test="platSn != null" >
+        plat_sn = #{platSn,jdbcType=VARCHAR},
+      </if>
+      <if test="platName != null" >
+        plat_name = #{platName,jdbcType=VARCHAR},
+      </if>
+      <if test="thirdPartyMerchCode != null" >
+        third_party_merch_code = #{thirdPartyMerchCode,jdbcType=VARCHAR},
+      </if>
+      <if test="thirdPartyMerchName != null" >
+        third_party_merch_name = #{thirdPartyMerchName,jdbcType=VARCHAR},
+      </if>
+      <if test="allMerchId != null" >
+        all_merch_id = #{allMerchId,jdbcType=VARCHAR},
+      </if>
+      <if test="allOrderNo != null" >
+        all_order_no = #{allOrderNo,jdbcType=VARCHAR},
+      </if>
+      <if test="allPayNo != null" >
+        all_pay_no = #{allPayNo,jdbcType=VARCHAR},
+      </if>
+      <if test="allSubOrderNo != null" >
+        all_sub_order_no = #{allSubOrderNo,jdbcType=VARCHAR},
+      </if>
+      <if test="allSubOrderId != null" >
+        all_sub_order_id = #{allSubOrderId,jdbcType=VARCHAR},
+      </if>
+      <if test="payChnlFlag != null" >
+        pay_chnl_flag = #{payChnlFlag,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerPayerCheck != null" >
+        buyer_payer_check = #{buyerPayerCheck,jdbcType=CHAR},
+      </if>
+      <if test="notiCount != null" >
+        noti_count = #{notiCount,jdbcType=INTEGER},
+      </if>
+      <if test="isStoped != null" >
+        is_stoped = #{isStoped,jdbcType=CHAR},
+      </if>
+      <if test="cusDeclStatus != null" >
+        cus_decl_status = #{cusDeclStatus,jdbcType=CHAR},
+      </if>
+      <if test="notiStatue != null" >
+        noti_statue = #{notiStatue,jdbcType=CHAR},
+      </if>
+      <if test="code != null" >
+        code = #{code,jdbcType=VARCHAR},
+      </if>
+      <if test="msg != null" >
+        msg = #{msg,jdbcType=VARCHAR},
+      </if>
+      <if test="notifyUrl != null" >
+        notify_url = #{notifyUrl,jdbcType=VARCHAR},
+      </if>
+      <if test="remark != null" >
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+      <if test="createrSn != null" >
+        creater_sn = #{createrSn,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null" >
+        create_time = #{createTime,jdbcType=VARCHAR},
+      </if>
+      <if test="moderSn != null" >
+        moder_sn = #{moderSn,jdbcType=VARCHAR},
+      </if>
+      <if test="modTime != null" >
+        mod_time = #{modTime,jdbcType=VARCHAR},
+      </if>
+      <if test="tstm != null" >
+        tstm = #{tstm,jdbcType=TIMESTAMP},
+      </if>
+      <if test="orderSn != null" >
+        order_sn = #{orderSn,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where order_sn = #{orderSn,jdbcType=VARCHAR}
+  </update>
+
   <select id="selectMerchNotis" resultMap="BaseResultMap" parameterType="java.lang.Integer">
     SELECT
     <include refid="Base_Column_List"/>
@@ -442,7 +536,7 @@
           third_party_merch_code = #{item.thirdPartyMerchCode,jdbcType=VARCHAR},
         </if>
         <if test="item.thirdPartyMerchName != null" >
-          third_party_merch_name = #{thirdPartyMerchName,jdbcType=VARCHAR},
+          third_party_merch_name = #{item.thirdPartyMerchName,jdbcType=VARCHAR},
         </if>
         <if test="item.allMerchId != null" >
           all_merch_id = #{item.allMerchId,jdbcType=VARCHAR},

+ 16 - 16
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -1450,11 +1450,11 @@ function openWebSocket() {
         //无法使用wss,浏览器打开WebSocket时报错
         //ws对应http、wss对应https。
         //kmall测试环境
-        // webSocket = new WebSocket("ws://183.62.225.124:3080/ws/server/"+storeId);
+        webSocket = new WebSocket("ws://183.62.225.124:3080/ws/server/"+storeId);
         //kmall正式环境
-        //webSocket = new WebSocket("ws://8.135.102.238:8080/ws/server/"+storeId);
+        // webSocket = new WebSocket("ws://8.135.102.238:8080/ws/server/"+storeId);
         //kmall本地环境
-        webSocket = new WebSocket("ws://127.0.0.1:8089/ws/server/"+storeId);
+        // webSocket = new WebSocket("ws://127.0.0.1:8089/ws/server/"+storeId);
         // webSocket = new WebSocket("wss://cb.k1net.cn/ws/server/"+storeId);
         if (webSocket.readyState === webSocket.CONNECTING) {
             console.log('1.连接正在打开......');
@@ -1472,19 +1472,19 @@ function openWebSocket() {
         };
         //收到消息事件
         webSocket.onmessage = function (msg) {
-            // var data = Object.assign({}, JSON.parse(msg.data));
-            // console.log('3.接收到服务端信息......data:'+data);
-            // vm.sessionId = data.sessionId;
-            // vm.pickUpCodeList = [];
-            // if(data.pickUpCodeList.length > 0){
-            //     for(var i = 0 ; i < data.pickUpCodeList.length ; i++){
-            //         // console.log(data.pickUpCodeList[i].storeId);
-            //         if(data.pickUpCodeList[i].storeId === storeId){
-            //             vm.pickUpCodeList.push(data.pickUpCodeList[i]);
-            //         }
-            //     }
-            // }
-            // vm.delayResponse = data.delayResponse;
+            var data = Object.assign({}, JSON.parse(msg.data));
+            console.log('3.接收到服务端信息......data:'+data);
+            vm.sessionId = data.sessionId;
+            vm.pickUpCodeList = [];
+            if(data.pickUpCodeList.length > 0){
+                for(var i = 0 ; i < data.pickUpCodeList.length ; i++){
+                    // console.log(data.pickUpCodeList[i].storeId);
+                    if(data.pickUpCodeList[i].storeId === storeId){
+                        vm.pickUpCodeList.push(data.pickUpCodeList[i]);
+                    }
+                }
+            }
+            vm.delayResponse = data.delayResponse;
         };
         //连接关闭事件
         webSocket.onclose = function () {