1
0
Bläddra i källkod

Merge branch 'master' of zx/cuspay into master

project 7 år sedan
förälder
incheckning
c4872219fd

+ 1 - 1
src/main/java/com/emato/cuspay/common/contant/Dict.java → src/main/java/com/emato/cuspay/common/contant/MerchNoticeDict.java

@@ -5,7 +5,7 @@ package com.emato.cuspay.common.contant;
  * @version 1.0
  * 2018-05-15 13:56
  */
-public abstract class Dict {
+public abstract class MerchNoticeDict {
 
 
 

+ 11 - 11
src/main/java/com/emato/cuspay/notify/CusMerchantNotice.java

@@ -1,6 +1,6 @@
 package com.emato.cuspay.notify;
 
-import com.emato.cuspay.common.contant.Dict;
+import com.emato.cuspay.common.contant.MerchNoticeDict;
 import com.emato.cuspay.dao.mapper.merch.MerchNotiMapper;
 import com.emato.cuspay.dto.merch.MerchNoti;
 import com.emato.cuspay.support.msg.resp.ResponseMessage;
@@ -31,7 +31,7 @@ public class CusMerchantNotice implements MerchantNotice{
 
     private static final Logger logger = LoggerFactory.getLogger(CusMerchantNotice.class);
 
-    @Value("${db.wx.notify.limit}")
+    @Value("${db.merch.notice.limit}")
     private Integer limit;
 
     @Autowired
@@ -53,16 +53,16 @@ public class CusMerchantNotice implements MerchantNotice{
 
             if (noti.getNotifyUrl() == null) {
                 logger.error("商户通知回调接口为空");
-                noti.setNotiStatue(Dict.NoticeStatus.i_3.getItem()); //发送失败
-                noti.setIsStoped(Dict.IsStopStatus.i_1.getItem());
+                noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
+                noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
                 noticeList.add(noti);
                 return;
             }
 
             if (noti.getNotiCount() == null || noti.getNotiCount() <= 0) {
                 logger.error("通知商户次数为空");
-                noti.setNotiStatue(Dict.NoticeStatus.i_3.getItem()); //发送失败
-                noti.setIsStoped(Dict.IsStopStatus.i_1.getItem());
+                noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
+                noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
                 noticeList.add(noti);
                 return;
             }
@@ -81,8 +81,8 @@ public class CusMerchantNotice implements MerchantNotice{
                 String result = null;
                 try{
                     result = OkHttpUtils.post(request);
-                    noti.setNotiStatue(Dict.NoticeStatus.i_2.getItem()); //通知发送成功
-                    noti.setIsStoped(Dict.IsStopStatus.i_1.getItem());//停止通知
+                    noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_2.getItem()); //通知发送成功
+                    noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());//停止通知
                     noticeList.add(noti);
                     return;
                 }catch (IOException e) {
@@ -90,12 +90,12 @@ public class CusMerchantNotice implements MerchantNotice{
                 }
 
             }
-            noti.setNotiStatue(Dict.NoticeStatus.i_3.getItem()); //发送失败
-            noti.setIsStoped(Dict.IsStopStatus.i_1.getItem());
+            noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
+            noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
             noticeList.add(noti);
         });
 
-
+        //TODO try catch
         int result = merchNotiMapper.updateBatch(noticeList);
         if (result < 0) {
             logger.error("更新商户通知数据失败"+noticeList);

+ 1 - 1
src/main/java/com/emato/cuspay/wx/common/MerchNotiBuilder.java

@@ -30,7 +30,7 @@ public class MerchNotiBuilder {
     public MerchNotiBuilder wxCbPay(WxCbPayDoc wxCbPay) {
         this.merchNoti.setAllPaySn(wxCbPay.getPlatNo());
         this.merchNoti.setMerchSn(wxCbPay.getMerchSn());
-        this.merchNoti.setMerchSn(wxCbPay.getMerchName());
+        this.merchNoti.setMerchName(wxCbPay.getMerchName());
         this.merchNoti.setPlatSn(wxCbPay.getPlatSn());
         this.merchNoti.setPlatName(wxCbPay.getPlatName());
         this.merchNoti.setThirdPartyMerchCode(wxCbPay.getThirdPartyMerchCode());

+ 57 - 23
src/main/java/com/emato/cuspay/wx/declare/WxCusDeclare.java

@@ -2,6 +2,7 @@ package com.emato.cuspay.wx.declare;
 
 import com.emato.cuspay.base.merch.MerchCusService;
 import com.emato.cuspay.base.merch.MerchNotiService;
+import com.emato.cuspay.common.contant.MerchNoticeDict;
 import com.emato.cuspay.dto.merch.MerchCusCfg;
 import com.emato.cuspay.wx.common.MerchNotiBuilder;
 import com.emato.cuspay.wx.common.WxContants;
@@ -50,10 +51,10 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
     private static final Logger logger = LoggerFactory.getLogger(WxCusDeclare.class);
 
 
-    @Value("${db.wx.notify.limit}")
+    @Value("${db.wx.declare.limit}")
     private Integer limit;
 
-    @Value("${wx.notice.count}")
+    @Value("${db.merch.notice.count}")
     private Integer count;
 
     @Value("${wx.payment.declare.url}")
@@ -90,9 +91,15 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
         wxCbPayDocs.forEach(wxCbPayDoc -> {
            wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_01.getItem());
         });
-        int wxResult = wxCbPayDocService.updateBatch(wxCbPayDocs);
-        if (wxResult < 0) {
-            logger.error("批量更新待申报的微信推海关支付数据失败size:"+wxCbPayDocs.size()+" data:"+wxCbPayDocs);
+
+        try {
+            int reslut = wxCbPayDocService.updateBatch(wxCbPayDocs);
+            if (reslut < 0) {
+                throw new Exception("批量更新失败影响行数为0");
+            }
+        } catch(Exception e)  {
+            logger.error("微信报关数据批量更失败data:"+wxCbPayDocs, e);
+            return;
         }
 
 
@@ -188,7 +195,18 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
                     wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
 
                     //订购人与支付人校验结果
-                    builder.certCheckResult(wxResponseMsgDto.getCertCheckResult());
+                    if (wxResponseMsgDto.getCertCheckResult() != null) {
+                        if ("UNCHECKED".equals(wxResponseMsgDto.getCertCheckResult())) { //未知
+                            builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_0.getItem());
+                        }
+                        if ("SAME".equals(wxResponseMsgDto.getCertCheckResult())) {//一致
+                            builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_1.getItem());
+                        }
+                        if ("DIFFERENT".equals(wxResponseMsgDto.getCertCheckResult())) {//不一致
+                            builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_2.getItem());
+                        }
+                    }
+
 
                     //返回状态未申报
                     if (WxDict.ResponseMsgState.UNDECLARED.getItem().equals(wxResponseMsgDto.getState())) {
@@ -281,23 +299,35 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
                 }
 
             } catch (IOException e) {
+                logger.error("数据请求异常的支付单请求数据为xml:"+xml, e);
                 WxPayError wxPayError = createWxPayError(wxCbPayDoc);
                 errors.add(wxPayError);
             }
         });
 
         //持久化商户通知数据
-        int result = merchNotiService.insertBatch(merchNotis);
-        if (result < 0) {
-            logger.error("持久化"+result+"条商户通知数据失败data:"+merchNotis);
+        try {
+            int result = merchNotiService.insertBatch(merchNotis);
+            if (result < 0) {
+                logger.error("持久化" + result + "条商户通知数据失败data:" + merchNotis);
+                throw new Exception("持久化" + result + "条商户通知数据失败data:" + merchNotis);
+            }
+        } catch (Exception e) {
+            logger.error("持久化商户通知数据异常", e);
+            return;
         }
-
         //存储异常记录
-        if (errors != null && !errors.isEmpty()) {
-            int errResult = wxPayErrorService.insertWxPayErrorBatch(errors);
-            if (errResult < 0) {
-                logger.error("持久化支付申报异常信息数据失败data:"+errors);
+        try {
+            if (errors != null && !errors.isEmpty()) {
+                int errResult = wxPayErrorService.insertWxPayErrorBatch(errors);
+                if (errResult < 0) {
+                    logger.error("持久化支付申报异常信息数据失败data:" + errors);
+                    throw new Exception("持久化支付申报异常信息数据失败data:" + errors);
+                }
             }
+        } catch (Exception e) {
+            logger.error("持久化支付申报异常信息数据失败data:" + errors, e);
+            return;
         }
     }
 
@@ -320,6 +350,8 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
         wxPayError.setCustoms(wxCbPayDoc.getCustoms());
         wxPayError.setErrCode(wxCbPayDoc.getErrCode());
         wxPayError.setErrMsg(wxCbPayDoc.getReturnMsg());
+        //TODO:
+        wxPayError.getCreateTime();
         return  wxPayError;
     }
 
@@ -345,13 +377,13 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
         if (wxCbPayDoc.getDuty() != null) {
             sorted.put("duty", String.valueOf(wxCbPayDoc.getDuty()));
         }
-        if (wxCbPayDoc.getActionType() != null) {
+        if (wxCbPayDoc.getActionType() != null && !wxCbPayDoc.getActionType().isEmpty()) {
             sorted.put("action_type", wxCbPayDoc.getActionType());
         }
-        if (wxCbPayDoc.getSubOrderNo() != null) {
+        if (wxCbPayDoc.getSubOrderNo() != null && !wxCbPayDoc.getSubOrderNo().isEmpty()) {
             sorted.put("sub_order_no", wxCbPayDoc.getActionType());
         }
-        if (wxCbPayDoc.getFeeType() != null) {
+        if (wxCbPayDoc.getFeeType() != null && !wxCbPayDoc.getFeeType().isEmpty()) {
             sorted.put("fee_type", wxCbPayDoc.getFeeType());
         }
         if (wxCbPayDoc.getOrderFee() != null) {
@@ -363,13 +395,13 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
         if (wxCbPayDoc.getProductFee() != null) {
             sorted.put("product_fee", String.valueOf(wxCbPayDoc.getProductFee()));
         }
-        if (wxCbPayDoc.getCertType() != null ) {
+        if (wxCbPayDoc.getCertType() != null && !wxCbPayDoc.getCertType().isEmpty()) {
             sorted.put("cert_type", wxCbPayDoc.getCertType());
         }
-        if (wxCbPayDoc.getCertId() != null) {
+        if (wxCbPayDoc.getCertId() != null && !wxCbPayDoc.getCertId().isEmpty()) {
             sorted.put("cert_id", wxCbPayDoc.getCertId());
         }
-        if (wxCbPayDoc.getName() != null) {
+        if (wxCbPayDoc.getName() != null && !wxCbPayDoc.getName().isEmpty()) {
             sorted.put("name", wxCbPayDoc.getName());
         }
 
@@ -388,10 +420,10 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
 
     public static void main(String[] args) {
         WxCbPayDoc wxCbPayDoc = new WxCbPayDoc();
-        wxCbPayDoc.setAppid("wxd678efh567hg6787");
+        wxCbPayDoc.setAppid("wx24013b34e349db3c");
         wxCbPayDoc.setMchId("1501125641");
-        wxCbPayDoc.setOutTradeNo("205598019850");
-        wxCbPayDoc.setTransactionId("401020180502000000011943");
+        wxCbPayDoc.setOutTradeNo("669918012250");
+        wxCbPayDoc.setTransactionId("4200000120201805021020091366");
         wxCbPayDoc.setCustoms("SHENZHEN");
         wxCbPayDoc.setMchCustomsNo("4403160Z3Y");//中网科技(深圳)有限公司
 
@@ -417,6 +449,8 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
 
         String xml = XmlUtils.map2Xml(sorted);
 
+        System.out.println("xml:"+xml);
+
         //通过http post请求 发送xml数据
         Request request = OkHttpUtils.buildRequest("https://api.mch.weixin.qq.com/cgi-bin/mch/customs/customdeclareorder",
                 RequestBody.create(MediaType.parse("application/xml; charset=utf-8"), xml));

+ 1 - 1
src/main/java/com/emato/cuspay/wx/task/WxCusTimer.java

@@ -20,7 +20,7 @@ public class WxCusTimer {
     /**
      * 支付申报定时任务
      */
-    @Scheduled(fixedRate = 10000)
+    @Scheduled(fixedRate = 5000)
     public void declareTask() {
         wxCusDeclare.declare();
     }