Przeglądaj źródła

优化 巡检 清空统计页面

wuxw 3 lat temu
rodzic
commit
39e3cd4fb4

+ 2 - 0
java110-utils/src/main/java/com/java110/utils/util/DateUtil.java

@@ -33,6 +33,7 @@ public class DateUtil {
     public static final String DATE_FORMATE_STRING_K = "yyyyMMddHHmmssSSS";
     public static final String DATE_FORMATE_STRING_L = "MMdd";
     public static final String DATE_FORMATE_STRING_M = "yyyyMM";
+    public static final String DATE_FORMATE_STRING_N = "HHmmss";
 
     static {
         formats.put("yyyyMMddHHmmss", new SimpleDateFormat("yyyyMMddHHmmss"));
@@ -49,6 +50,7 @@ public class DateUtil {
         formats.put("yyyyMMddHHmmssSSS", new SimpleDateFormat("yyyyMMddHHmmssSSS"));
         formats.put("MMdd", new SimpleDateFormat("MMdd"));
         formats.put("yyyyMM", new SimpleDateFormat("yyyyMM"));
+        formats.put("HHmmss", new SimpleDateFormat("HHmmss"));
     }
 
 

+ 15 - 15
service-acct/pom-cloud.xml

@@ -29,21 +29,21 @@
       <groupId>com.alipay.sdk</groupId>
       <artifactId>alipay-sdk-java</artifactId>
     </dependency>
-    <!--<dependency>-->
-      <!--<groupId>com.icbc</groupId>-->
-      <!--<artifactId>icbc-api-sdk-cop</artifactId>-->
-      <!--<version>v1.0</version>-->
-    <!--</dependency>-->
-    <!--<dependency>-->
-      <!--<groupId>com.icbc</groupId>-->
-      <!--<artifactId>icbc-api-sdk-cop-io</artifactId>-->
-      <!--<version>v1.0</version>-->
-    <!--</dependency>-->
-    <!--<dependency>-->
-      <!--<groupId>com.icbc</groupId>-->
-      <!--<artifactId>icbc-ca</artifactId>-->
-      <!--<version>v1.0</version>-->
-    <!--</dependency>-->
+    <dependency>
+      <groupId>com.icbc</groupId>
+      <artifactId>icbc-api-sdk-cop</artifactId>
+      <version>v1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>com.icbc</groupId>
+      <artifactId>icbc-api-sdk-cop-io</artifactId>
+      <version>v1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>com.icbc</groupId>
+      <artifactId>icbc-ca</artifactId>
+      <version>v1.0</version>
+    </dependency>
 
   </dependencies>
 

+ 15 - 15
service-acct/pom.xml

@@ -24,21 +24,21 @@
       <groupId>com.alipay.sdk</groupId>
       <artifactId>alipay-sdk-java</artifactId>
     </dependency>
-      <!--<dependency>-->
-          <!--<groupId>com.icbc</groupId>-->
-          <!--<artifactId>icbc-api-sdk-cop</artifactId>-->
-          <!--<version>v1.0</version>-->
-      <!--</dependency>-->
-      <!--<dependency>-->
-          <!--<groupId>com.icbc</groupId>-->
-          <!--<artifactId>icbc-api-sdk-cop-io</artifactId>-->
-          <!--<version>v1.0</version>-->
-      <!--</dependency>-->
-      <!--<dependency>-->
-          <!--<groupId>com.icbc</groupId>-->
-          <!--<artifactId>icbc-ca</artifactId>-->
-          <!--<version>v1.0</version>-->
-      <!--</dependency>-->
+      <dependency>
+          <groupId>com.icbc</groupId>
+          <artifactId>icbc-api-sdk-cop</artifactId>
+          <version>v1.0</version>
+      </dependency>
+      <dependency>
+          <groupId>com.icbc</groupId>
+          <artifactId>icbc-api-sdk-cop-io</artifactId>
+          <version>v1.0</version>
+      </dependency>
+      <dependency>
+          <groupId>com.icbc</groupId>
+          <artifactId>icbc-ca</artifactId>
+          <version>v1.0</version>
+      </dependency>
 
   </dependencies>
   <build>

+ 182 - 0
service-acct/src/main/java/com/java110/acct/smo/impl/QrCodeIcbcPaymentAdapt.java

@@ -0,0 +1,182 @@
+package com.java110.acct.smo.impl;
+
+import com.icbc.api.IcbcApiException;
+import com.icbc.api.DefaultIcbcClient;
+import com.icbc.api.IcbcConstants;
+import com.icbc.api.request.MybankPayQrcodeScannedPayRequestV5;
+import com.icbc.api.request.MybankPayQrcodeScannedPayRequestV5.MybankPayQrcodeScannedPayRequestV5Biz;
+
+import com.icbc.api.request.MybankPayQrcodeScannedPaystatusRequestV4;
+import com.icbc.api.response.MybankPayQrcodeScannedPaystatusResponseV4;
+import com.icbc.api.response.MybankQrcodeScannedPayResponseV5;
+import com.java110.acct.smo.IQrCodePaymentSMO;
+import com.java110.core.client.RestTemplate;
+import com.java110.core.factory.CommunitySettingFactory;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.smallWeChat.SmallWeChatDto;
+import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.WechatConstant;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.PayUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * 工商银行支付
+ */
+@Service
+public class QrCodeIcbcPaymentAdapt implements IQrCodePaymentSMO {
+    private static Logger logger = LoggerFactory.getLogger(QrCodeIcbcPaymentAdapt.class);
+
+    //微信支付
+    public static final String DOMAIN_WECHAT_PAY = "WECHAT_PAY";
+    // 微信服务商支付开关
+    public static final String WECHAT_SERVICE_PAY_SWITCH = "WECHAT_SERVICE_PAY_SWITCH";
+
+    //开关ON打开
+    public static final String WECHAT_SERVICE_PAY_SWITCH_ON = "ON";
+
+
+    private static final String WECHAT_SERVICE_APP_ID = "SERVICE_APP_ID";
+
+    private static final String WECHAT_SERVICE_MCH_ID = "SERVICE_MCH_ID";
+
+    public static final String PAY_UNIFIED_ORDER_URL = "https://api.plutuspay.com/open/v2/pay";
+
+
+    @Autowired
+    private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl;
+
+    @Autowired
+    private RestTemplate outRestTemplate;
+
+    @Override
+    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName) throws Exception {
+        logger.info("【工商银行支付】 统一下单开始, 订单编号=" + orderNum);
+        SortedMap<String, String> resultMap = new TreeMap<String, String>();
+        //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
+        double payAmount = PayUtil.getPayAmountByEnv(MappingCache.getValue("HC_ENV"), money);
+        //添加或更新支付记录(参数跟进自己业务需求添加)
+
+        String systemName = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_GOOD_NAME);
+
+        String privateKey = CommunitySettingFactory.getRemark(communityId, "ICBC_PRIVATE_KEY");
+        String apiPublicKey = CommunitySettingFactory.getRemark(communityId, "ICBC_PUBLIC_KEY");
+        String merId = CommunitySettingFactory.getValue(communityId, "ICBC_MER_ID");
+        String merPrtclNo = CommunitySettingFactory.getValue(communityId, "ICBC_MER_PRTCL_NO");
+        String deciveInfo = CommunitySettingFactory.getValue(communityId, "ICBC_DECIVE_INFO");
+        String appName = CommunitySettingFactory.getValue(communityId, "ICBC_APP_NAME");
+        String icbcAppId = CommunitySettingFactory.getValue(communityId, "ICBC_APP_ID");
+
+
+        //签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值IcbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
+        DefaultIcbcClient client = new DefaultIcbcClient(icbcAppId, IcbcConstants.SIGN_TYPE_RSA, privateKey, apiPublicKey);
+        MybankPayQrcodeScannedPayRequestV5 request = new MybankPayQrcodeScannedPayRequestV5();
+        //4、根据测试环境和生产环境替换相应ip和端口
+        request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/pay/qrcode/scanned/pay/V5");
+        //5、请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
+        MybankPayQrcodeScannedPayRequestV5Biz bizContent = new MybankPayQrcodeScannedPayRequestV5Biz();
+        bizContent.setMerId(merId); //商户编号
+        bizContent.setQrCode(authCode); //付款码
+        bizContent.setOutTradeNo(orderNum); //外部订单号
+        bizContent.setTradeDate(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H)); //交易日期  格式:YYYYMMDD
+        bizContent.setTradeTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_N)); //交易时间hhmmss
+        //bizContent.setAttach("1231"); //商户附加信息
+        bizContent.setOrderAmt(payAmount + ""); //交易金额
+        //bizContent.setSubAppId("wxfb72f1a7d061d631"); //子商户应用号
+        //bizContent.setGoodsTag("DP");  //优惠标志
+//        JSONArray goodsDetailArray = new JSONArray();
+//        JSONObject gd1 = new JSONObject();
+//        gd1.put("goods_id", "123456");
+//        gd1.put("goods_name", "FOOD");
+//        gd1.put("quantity", 1);
+//        gd1.put("price", 100);
+//        goodsDetailArray.add(gd1);
+        //  bizContent.setGoodsDetail(goodsDetailArray);
+        // bizContent.setSubject("订单标题,128字节长度");  //订单标题,128字节长度
+        HashMap<String, Object> terminalInfo = new HashMap<>();
+        terminalInfo.put("device_type", "10");
+        terminalInfo.put("device_id", deciveInfo);//| device_id | str | true | 15 | 终端设备号: 收单机构为商户终端分配的唯一编号。 | Sxxxxxx |
+        bizContent.setTerminalInfo(terminalInfo);
+        request.setBizContent(bizContent);
+        MybankQrcodeScannedPayResponseV5 response;
+        try {
+            response = client.execute(request, System.currentTimeMillis() + "");//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            if (response.getReturnCode() == 0) {
+                // 6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
+                return new ResultVo(ResultVo.CODE_OK, "成功");
+            } else {
+                // 失败
+                //System.out.println("ReturnCode:"+response.getReturnCode());
+                //System.out.println("ReturnMsg:"+response.getReturnMsg());
+                return new ResultVo(ResultVo.CODE_ERROR, response.getReturnMsg());
+            }
+        } catch (IcbcApiException e) {
+            e.printStackTrace();
+        }
+
+        return new ResultVo(ResultVo.CODE_ERROR, "未知异常");
+    }
+
+    public ResultVo checkPayFinish(String communityId, String orderNum) {
+        SmallWeChatDto shopSmallWeChatDto = null;
+        Map<String, String> result = null;
+
+        String privateKey = CommunitySettingFactory.getRemark(communityId, "ICBC_PRIVATE_KEY");
+        String apiPublicKey = CommunitySettingFactory.getRemark(communityId, "ICBC_PUBLIC_KEY");
+        String merId = CommunitySettingFactory.getValue(communityId, "ICBC_MER_ID");
+        String merPrtclNo = CommunitySettingFactory.getValue(communityId, "ICBC_MER_PRTCL_NO");
+        String deciveInfo = CommunitySettingFactory.getValue(communityId, "ICBC_DECIVE_INFO");
+        String appName = CommunitySettingFactory.getValue(communityId, "ICBC_APP_NAME");
+        String icbcAppId = CommunitySettingFactory.getValue(communityId, "ICBC_APP_ID");
+
+
+        //签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值IcbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
+        DefaultIcbcClient client = new DefaultIcbcClient(icbcAppId, IcbcConstants.SIGN_TYPE_RSA, privateKey, apiPublicKey);
+        MybankPayQrcodeScannedPaystatusRequestV4 request = new MybankPayQrcodeScannedPaystatusRequestV4();
+        //4、根据测试环境和生产环境替换相应ip和端口
+        request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/pay/qrcode/scanned/paystatus/V4");
+        //5、请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
+        MybankPayQrcodeScannedPaystatusRequestV4.MybankPayQrcodeScannedPaystatusRequestV4Biz
+                bizContent = new MybankPayQrcodeScannedPaystatusRequestV4.MybankPayQrcodeScannedPaystatusRequestV4Biz();
+        bizContent.setMerId(merId); //商户编号
+        bizContent.setOutTradeNo(orderNum); //外部订单号
+        bizContent.setTradeDate(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_H)); //交易日期  格式:YYYYMMDD
+        //bizContent.setOrderId("");
+        bizContent.setDealFlag("0");
+        request.setBizContent(bizContent);
+        MybankPayQrcodeScannedPaystatusResponseV4 response;
+        try {
+            response = client.execute(request, System.currentTimeMillis() + "");//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            if (response.getReturnCode() == 0) {
+                // 6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
+                //System.out.println("response:" + JSON.toJSONString(response));
+                //System.out.println("ReturnCode:"+response.getReturnCode());
+                if ("1".equals(response.getPayStatus())) {
+                    return new ResultVo(ResultVo.CODE_OK, "成功");
+                } else if ("0".equals(response.getPayStatus())) {
+                    return new ResultVo(ResultVo.CODE_WAIT_PAY, "等待支付完成");
+                } else {
+                    return new ResultVo(ResultVo.CODE_ERROR, "支付已经被取消,银行 状态码:" + response.getPayStatus());
+                }
+
+            } else {
+                // 失败
+                //System.out.println("response:" + JSON.toJSONString(response));
+                //System.out.println("ReturnCode:"+response.getReturnCode());
+                //System.out.println("ReturnMsg:"+response.getReturnMsg());
+                return new ResultVo(ResultVo.CODE_ERROR, response.getReturnMsg());
+
+            }
+        } catch (IcbcApiException e) {
+            e.printStackTrace();
+        }
+        return new ResultVo(ResultVo.CODE_ERROR, "未知异常");
+
+    }
+}