wuxw 2 lat temu
rodzic
commit
bade0fc4b8

+ 48 - 0
service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/QrCodeBbgPaymentAdapt.java

@@ -3,10 +3,15 @@ package com.java110.acct.payment.adapt.bbgpay;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.acct.smo.IQrCodePaymentSMO;
 import com.java110.core.client.RestTemplate;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
+import com.java110.dto.wechat.OnlinePayDto;
+import com.java110.dto.wechat.SmallWeChatDto;
+import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
 import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.po.wechat.OnlinePayPo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.WechatConstant;
@@ -55,6 +60,9 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
     @Autowired
     private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
     @Override
     public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName, String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
@@ -66,6 +74,18 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         Map<String, String> resMap = null;
         logger.debug("resMap=" + resMap);
         String systemName = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_GOOD_NAME);
+        SmallWeChatDto shopSmallWeChatDto = null;
+        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
+        smallWeChatDto.setObjId(communityId);
+        List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
+        if (smallWeChatDtos == null && smallWeChatDtos.size() < 1) {
+            shopSmallWeChatDto = new SmallWeChatDto();
+            shopSmallWeChatDto.setObjId(communityId);
+            shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
+            shopSmallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
+        } else {
+            shopSmallWeChatDto = smallWeChatDtos.get(0);
+        }
 
         PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
         paymentPoolValueDto.setPpId(paymentPoolId);
@@ -90,6 +110,7 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         params.put("ware_name", feeName);// 商品名称
         params.put("device_ip", "172.0.0.1");// 商户数据包
         params.put("recog_no", "123123");// 交易终端编号
+        doSaveOnlinePay(shopSmallWeChatDto, "-1", orderNum, feeName, payAmount, OnlinePayDto.STATE_WAIT, "待支付");
 
         String decryParams = EncryptDecryptFactory.execute(paymentPoolValueDtos, gzhPayUrl, params);
 
@@ -106,6 +127,8 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         }
 
         if ("SUCCESS".equals(paramOut.getString("deal_status"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
+
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else {
             return new ResultVo(ResultVo.CODE_ERROR, "等待用户支付中");
@@ -158,9 +181,34 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         }
 
         if ("0000".equals(paramOut.getString("return_code"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else {
             return new ResultVo(ResultVo.CODE_WAIT_PAY, "等待支付完成");
         }
     }
+
+    private void doSaveOnlinePay(SmallWeChatDto smallWeChatDto, String openId, String orderId, String feeName, double money, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setAppId(smallWeChatDto.getAppId());
+        onlinePayPo.setMchId(smallWeChatDto.getMchId());
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOpenId(openId);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setPayId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+        onlinePayPo.setPayName(feeName);
+        onlinePayPo.setRefundFee("0");
+        onlinePayPo.setState(state);
+        onlinePayPo.setTotalFee(money + "");
+        onlinePayPo.setTransactionId(orderId);
+        onlinePayV1InnerServiceSMOImpl.saveOnlinePay(onlinePayPo);
+    }
+
+    private void doUpdateOnlinePay(String orderId, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setState(state);
+        onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
+    }
 }

+ 48 - 0
service-acct/src/main/java/com/java110/acct/payment/adapt/easypay/QrCodeEasyPaymentAdapt.java

@@ -7,8 +7,12 @@ import com.java110.core.client.RestTemplate;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
+import com.java110.dto.wechat.OnlinePayDto;
+import com.java110.dto.wechat.SmallWeChatDto;
+import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
 import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.po.wechat.OnlinePayPo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.WechatConstant;
@@ -58,6 +62,9 @@ public class QrCodeEasyPaymentAdapt implements IQrCodePaymentSMO {
     @Autowired
     private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
     @Override
     public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName, String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
@@ -69,6 +76,18 @@ public class QrCodeEasyPaymentAdapt implements IQrCodePaymentSMO {
         Map<String, String> resMap = null;
         logger.debug("resMap=" + resMap);
         String systemName = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_GOOD_NAME);
+        SmallWeChatDto shopSmallWeChatDto = null;
+        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
+        smallWeChatDto.setObjId(communityId);
+        List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
+        if (smallWeChatDtos == null && smallWeChatDtos.size() < 1) {
+            shopSmallWeChatDto = new SmallWeChatDto();
+            shopSmallWeChatDto.setObjId(communityId);
+            shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
+            shopSmallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
+        } else {
+            shopSmallWeChatDto = smallWeChatDtos.get(0);
+        }
 
         PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
         paymentPoolValueDto.setPpId(paymentPoolId);
@@ -103,6 +122,7 @@ public class QrCodeEasyPaymentAdapt implements IQrCodePaymentSMO {
         paramIn.put("sign", sign);
 
         String requestStr = paramIn.toJSONString();
+        doSaveOnlinePay(shopSmallWeChatDto, "-1", orderNum, feeName, payAmount, OnlinePayDto.STATE_WAIT, "待支付");
 
         String response = HttpConnectUtils.sendHttpSRequest(BasePay.BASE_URL + "/standard/scanPay", requestStr, "JSON", null);
         System.out.println("\n响应报文:" + response);
@@ -116,6 +136,8 @@ public class QrCodeEasyPaymentAdapt implements IQrCodePaymentSMO {
         JSONObject resData = paramOut.getJSONObject("data");
 
         if ("00".equals(resData.getString("finRetcode"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
+
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else {
             return new ResultVo(ResultVo.CODE_ERROR, "等待用户支付中");
@@ -170,10 +192,36 @@ public class QrCodeEasyPaymentAdapt implements IQrCodePaymentSMO {
         JSONObject resData = paramOut.getJSONObject("data");
 
         if ("00".equals(resData.getString("finRetcode"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
+
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else {
             return new ResultVo(ResultVo.CODE_ERROR, "等待用户支付中");
         }
 
     }
+
+    private void doSaveOnlinePay(SmallWeChatDto smallWeChatDto, String openId, String orderId, String feeName, double money, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setAppId(smallWeChatDto.getAppId());
+        onlinePayPo.setMchId(smallWeChatDto.getMchId());
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOpenId(openId);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setPayId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+        onlinePayPo.setPayName(feeName);
+        onlinePayPo.setRefundFee("0");
+        onlinePayPo.setState(state);
+        onlinePayPo.setTotalFee(money + "");
+        onlinePayPo.setTransactionId(orderId);
+        onlinePayV1InnerServiceSMOImpl.saveOnlinePay(onlinePayPo);
+    }
+
+    private void doUpdateOnlinePay(String orderId, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setState(state);
+        onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
+    }
 }

+ 35 - 0
service-acct/src/main/java/com/java110/acct/payment/adapt/plutus/QrCodePlutusPaymentAdapt.java

@@ -4,11 +4,15 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.acct.smo.IQrCodePaymentSMO;
 import com.java110.core.client.RestTemplate;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.PlutusFactory;
 import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
+import com.java110.dto.wechat.OnlinePayDto;
 import com.java110.dto.wechat.SmallWeChatDto;
+import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
 import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.po.wechat.OnlinePayPo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.WechatConstant;
@@ -59,6 +63,9 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
     @Autowired
     private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
     @Override
     public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName,String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
@@ -106,6 +113,7 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
 
         String param = PlutusFactory.Encryption(paramMap.toJSONString(), privateKey,key,devId);
         System.out.println(param);
+        doSaveOnlinePay(shopSmallWeChatDto, "-1", orderNum, feeName, payAmount, OnlinePayDto.STATE_WAIT, "待支付");
 
         String str = PlutusFactory.post(PAY_UNIFIED_ORDER_URL, param);
         System.out.println(str);
@@ -128,6 +136,8 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
 
         JSONObject paramObj = JSONObject.parseObject(paramOut);
         if ("1".equals(paramObj.getString("status"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
+
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else {
             return new ResultVo(ResultVo.CODE_ERROR, paramObj.getString("remark"));
@@ -196,6 +206,7 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
         JSONObject paramObj = JSONObject.parseObject(paramOut);
 
         if ("1".equals(paramObj.getString("status"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else if ("0".equals(paramObj.getString("status"))) {
             return new ResultVo(ResultVo.CODE_WAIT_PAY, "等待支付完成");
@@ -203,4 +214,28 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
             return new ResultVo(ResultVo.CODE_ERROR, paramObj.getString("remark"));
         }
     }
+
+    private void doSaveOnlinePay(SmallWeChatDto smallWeChatDto, String openId, String orderId, String feeName, double money, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setAppId(smallWeChatDto.getAppId());
+        onlinePayPo.setMchId(smallWeChatDto.getMchId());
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOpenId(openId);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setPayId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+        onlinePayPo.setPayName(feeName);
+        onlinePayPo.setRefundFee("0");
+        onlinePayPo.setState(state);
+        onlinePayPo.setTotalFee(money + "");
+        onlinePayPo.setTransactionId(orderId);
+        onlinePayV1InnerServiceSMOImpl.saveOnlinePay(onlinePayPo);
+    }
+
+    private void doUpdateOnlinePay(String orderId, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setState(state);
+        onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
+    }
 }

+ 43 - 1
service-acct/src/main/java/com/java110/acct/payment/adapt/wechat/QrCodeWechatPaymentAdapt.java

@@ -1,11 +1,17 @@
 package com.java110.acct.payment.adapt.wechat;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.acct.smo.IQrCodePaymentSMO;
 import com.java110.core.client.RestTemplate;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
+import com.java110.dto.wechat.OnlinePayDto;
 import com.java110.dto.wechat.SmallWeChatDto;
+import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
 import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.po.wechat.OnlinePayPo;
+import com.java110.utils.cache.CommonCache;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.WechatConstant;
@@ -50,6 +56,9 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
     @Autowired
     private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
     @Autowired
     private RestTemplate outRestTemplate;
 
@@ -70,7 +79,7 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
         SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
         smallWeChatDto.setObjId(communityId);
         List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
-        if (smallWeChatDtos == null && smallWeChatDtos.size() < 1) {
+        if (smallWeChatDtos == null || smallWeChatDtos.size() < 1) {
             shopSmallWeChatDto = new SmallWeChatDto();
             shopSmallWeChatDto.setObjId(communityId);
             shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
@@ -114,6 +123,9 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
 
         logger.debug("调用支付统一下单接口" + xmlData);
 
+        doSaveOnlinePay(smallWeChatDto, "-1", orderNum, feeName, payAmount, OnlinePayDto.STATE_WAIT, "待支付");
+
+
         ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(
                 WechatConstant.wxMicropayUnifiedOrder, xmlData, String.class);
 
@@ -125,6 +137,8 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
         resMap = PayUtil.xmlStrToMap(responseEntity.getBody());
 
         if ("SUCCESS".equals(resMap.get("return_code")) && "SUCCESS".equals(resMap.get("result_code"))) {
+            doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
+
             return new ResultVo(ResultVo.CODE_OK, "成功");
         } else {
             String msg = resMap.get("return_msg");
@@ -196,6 +210,34 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
         if (!"SUCCESS".equals(result.get("trade_state"))) {
             return new ResultVo(ResultVo.CODE_WAIT_PAY, "等待支付完成");
         }
+
+        doUpdateOnlinePay(orderNum, OnlinePayDto.STATE_COMPILE, "支付成功");
+
         return new ResultVo(ResultVo.CODE_OK, "支付成功");
     }
+
+
+    private void doSaveOnlinePay(SmallWeChatDto smallWeChatDto, String openId, String orderId, String feeName, double money, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setAppId(smallWeChatDto.getAppId());
+        onlinePayPo.setMchId(smallWeChatDto.getMchId());
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOpenId(openId);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setPayId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+        onlinePayPo.setPayName(feeName);
+        onlinePayPo.setRefundFee("0");
+        onlinePayPo.setState(state);
+        onlinePayPo.setTotalFee(money + "");
+        onlinePayPo.setTransactionId(orderId);
+        onlinePayV1InnerServiceSMOImpl.saveOnlinePay(onlinePayPo);
+    }
+
+    private void doUpdateOnlinePay(String orderId, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setState(state);
+        onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
+    }
 }