wuxw před 2 roky
rodič
revize
0604eff07c

+ 32 - 9
service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgNativeQrcodePaymentFactoryAdapt.java

@@ -13,9 +13,11 @@ import com.java110.dto.app.AppDto;
 import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.dto.payment.NotifyPaymentOrderDto;
 import com.java110.dto.payment.PaymentOrderDto;
+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.ISmallWechatV1InnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.po.wechat.OnlinePayPo;
@@ -86,18 +88,19 @@ public class BbgNativeQrcodePaymentFactoryAdapt implements IPaymentFactoryAdapt
 
     @Autowired
     private RestTemplate outRestTemplate;
-
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
 
     @Override
     public Map java110Payment(PaymentOrderDto paymentOrderDto, JSONObject reqJson, ICmdDataFlowContext context) throws Exception {
 
         SmallWeChatDto smallWeChatDto = getSmallWechat(reqJson);
-
+        String paymentPoolId = reqJson.getString("paymentPoolId");
 
         String appId = context.getReqHeaders().get("app-id");
         String userId = context.getReqHeaders().get("user-id");
         String tradeType = reqJson.getString("tradeType");
-        String notifyUrl = UrlCache.getOwnerUrl() + "/app/payment/notify/nativeWechat/992020011134400001/" + smallWeChatDto.getObjId();
+        String notifyUrl = UrlCache.getOwnerUrl() + "/app/payment/notify/nativeWechat/992020011134400001/" + paymentPoolId;
 
 
         logger.debug("【小程序支付】 统一下单开始, 订单编号=" + paymentOrderDto.getOrderId());
@@ -111,6 +114,7 @@ public class BbgNativeQrcodePaymentFactoryAdapt implements IPaymentFactoryAdapt
                 paymentOrderDto.getOrderId(),
                 payAmount,
                 smallWeChatDto,
+                paymentPoolId,
                 notifyUrl
         );
 
@@ -121,11 +125,21 @@ public class BbgNativeQrcodePaymentFactoryAdapt implements IPaymentFactoryAdapt
 
     private Map<String, String> java110UnifieldOrder(String feeName, String orderNum,
                                                      double payAmount,
-                                                     SmallWeChatDto smallWeChatDto, String notifyUrl) throws Exception {
+                                                     SmallWeChatDto smallWeChatDto,
+                                                     String paymentPoolId,
+                                                     String notifyUrl) throws Exception {
 
-        String mchtNo_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "mchtNo_SM4");
-        String productNo_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "productNo_SM4");
-        String publicKey_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "publicKey_SM4");
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(paymentPoolId);
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+
+        String mchtNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "mchtNo_SM4");
+        String productNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "productNo_SM4");
+        String publicKey_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "publicKey_SM4");
 
         if (feeName.length() > 127) {
             feeName = feeName.substring(0, 126);
@@ -145,7 +159,7 @@ public class BbgNativeQrcodePaymentFactoryAdapt implements IPaymentFactoryAdapt
         params.put("trans_source", "09");// 08:商户线下扫码09:商户线上收银10:一案一户缴款11:维修资金缴款12:房屋预售缴款
         params.put("asyn_url", notifyUrl + "?wId=" + WechatFactory.getWId(smallWeChatDto.getAppId()));// 通知地址
 
-        String decryParams = EncryptDecryptFactory.execute(smallWeChatDto.getObjId(), gzhPayUrl, params);
+        String decryParams = EncryptDecryptFactory.execute(paymentPoolValueDtos, gzhPayUrl, params);
         JSONObject paramOut = JSONObject.parseObject(decryParams);
         if (!"SUCCESS".equals(paramOut.getString("status"))
                         || !"SUCCESS".equals(paramOut.getString("deal_status"))) {
@@ -171,7 +185,16 @@ public class BbgNativeQrcodePaymentFactoryAdapt implements IPaymentFactoryAdapt
     @Override
     public PaymentOrderDto java110NotifyPayment(NotifyPaymentOrderDto notifyPaymentOrderDto) {
 
-        String privateKey_SM4 = CommunitySettingFactory.getValue(notifyPaymentOrderDto.getCommunityId(), "privateKey_SM4");
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(notifyPaymentOrderDto.getPaymentPoolId());
+        paymentPoolValueDto.setCommunityId(notifyPaymentOrderDto.getCommunityId());
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+        String privateKey_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "privateKey_SM4");
 
         String resXml = "";
         String param = notifyPaymentOrderDto.getParam();

+ 34 - 9
service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgPaymentFactoryAdapt.java

@@ -9,12 +9,14 @@ import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.WechatFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.app.AppDto;
+import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
 import com.java110.dto.wechat.OnlinePayDto;
 import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.dto.payment.NotifyPaymentOrderDto;
 import com.java110.dto.payment.PaymentOrderDto;
 import com.java110.dto.wechat.SmallWeChatDto;
 import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWechatV1InnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.po.wechat.OnlinePayPo;
@@ -102,17 +104,21 @@ public class BbgPaymentFactoryAdapt implements IPaymentFactoryAdapt {
     @Autowired
     private RestTemplate outRestTemplate;
 
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
+
 
     @Override
     public Map java110Payment(PaymentOrderDto paymentOrderDto, JSONObject reqJson, ICmdDataFlowContext context) throws Exception {
 
         SmallWeChatDto smallWeChatDto = getSmallWechat(reqJson);
+        String paymentPoolId = reqJson.getString("paymentPoolId");
 
 
         String appId = context.getReqHeaders().get("app-id");
         String userId = context.getReqHeaders().get("user-id");
         String tradeType = reqJson.getString("tradeType");
-        String notifyUrl = UrlCache.getOwnerUrl() + "/app/payment/notify/wechat/992020011134400001/" + smallWeChatDto.getObjId();
+        String notifyUrl = UrlCache.getOwnerUrl() + "/app/payment/notify/wechat/992020011134400001/" + paymentPoolId;
 
         String openId = reqJson.getString("openId");
 
@@ -152,6 +158,7 @@ public class BbgPaymentFactoryAdapt implements IPaymentFactoryAdapt {
                 payAmount,
                 openId,
                 smallWeChatDto,
+                paymentPoolId,
                 notifyUrl
         );
 
@@ -162,11 +169,21 @@ public class BbgPaymentFactoryAdapt implements IPaymentFactoryAdapt {
 
     private Map<String, String> java110UnifieldOrder(String feeName, String orderNum,
                                                      String tradeType, double payAmount, String openid,
-                                                     SmallWeChatDto smallWeChatDto, String notifyUrl) throws Exception {
+                                                     SmallWeChatDto smallWeChatDto,
+                                                     String paymentPoolId,
+                                                     String notifyUrl) throws Exception {
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(paymentPoolId);
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+
+        String mchtNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "mchtNo_SM4");
+        String productNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "productNo_SM4");
+        String publicKey_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "publicKey_SM4");
 
-        String mchtNo_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "mchtNo_SM4");
-        String productNo_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "productNo_SM4");
-        String publicKey_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "publicKey_SM4");
 
         if (feeName.length() > 127) {
             feeName = feeName.substring(0, 126);
@@ -185,7 +202,7 @@ public class BbgPaymentFactoryAdapt implements IPaymentFactoryAdapt {
         params.put("ware_name", feeName);// 商品名称
         params.put("ware_describe", "");// 商户数据包
         params.put("asyn_url", notifyUrl + "?wId=" + WechatFactory.getWId(smallWeChatDto.getAppId()));// 通知地址
-        String decryParams = EncryptDecryptFactory.execute(smallWeChatDto.getObjId(), gzhPayUrl, params);
+        String decryParams = EncryptDecryptFactory.execute(paymentPoolValueDtos, gzhPayUrl, params);
         JSONObject paramOut = JSONObject.parseObject(decryParams);
         if (!"SUCCESS".equals(paramOut.getString("status"))
                         || !"SUCCESS".equals(paramOut.getString("deal_status"))) {
@@ -215,7 +232,17 @@ public class BbgPaymentFactoryAdapt implements IPaymentFactoryAdapt {
     @Override
     public PaymentOrderDto java110NotifyPayment(NotifyPaymentOrderDto notifyPaymentOrderDto) {
 
-        String privateKey_SM4 = CommunitySettingFactory.getValue(notifyPaymentOrderDto.getCommunityId(), "privateKey_SM4");
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(notifyPaymentOrderDto.getPaymentPoolId());
+        paymentPoolValueDto.setCommunityId(notifyPaymentOrderDto.getCommunityId());
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+        String privateKey_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "privateKey_SM4");
+
 
         String resXml = "";
         String param = notifyPaymentOrderDto.getParam();
@@ -265,8 +292,6 @@ public class BbgPaymentFactoryAdapt implements IPaymentFactoryAdapt {
             smallWeChatDto = new SmallWeChatDto();
             smallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
             smallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
-            smallWeChatDto.setMchId(MappingCache.getValue(MappingConstant.WECHAT_STORE_DOMAIN, "mchId"));
-            smallWeChatDto.setPayPassword(MappingCache.getValue(MappingConstant.WECHAT_STORE_DOMAIN, "key"));
             smallWeChatDto.setObjId(paramIn.getString("communityId"));
 
             return smallWeChatDto;

+ 5 - 3
service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/EncryptDecryptFactory.java

@@ -4,18 +4,20 @@ import com.java110.acct.payment.adapt.bbgpay.lib.GmUtil;
 import com.java110.acct.payment.adapt.bbgpay.lib.HttpRequestUtil;
 import com.java110.acct.payment.adapt.bbgpay.lib.JsonUtil;
 import com.java110.core.factory.CommunitySettingFactory;
+import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public class EncryptDecryptFactory {
 
 
-    public static String execute(String communityId,String url, Map<String, Object> params){
+    public static String execute(List<PaymentPoolValueDto> paymentPoolValueDtos, String url, Map<String, Object> params){
         String decrypt = "";
         try {
-            String mchtNo_SM4 = CommunitySettingFactory.getValue(communityId, "mchtNo_SM4");
-            String publicKey_SM4 = CommunitySettingFactory.getValue(communityId, "publicKey_SM4");
+            String mchtNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "mchtNo_SM4");
+            String publicKey_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "publicKey_SM4");
             // 格式为json
             String json = JsonUtil.mapToJson(params);
             System.out.println("加密前:" + json);

+ 32 - 11
service-acct/src/main/java/com/java110/acct/smo/impl/QrCodeBbgPaymentAdapt.java

@@ -6,6 +6,8 @@ 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.paymentPoolValue.PaymentPoolValueDto;
+import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
@@ -52,8 +54,11 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
     @Autowired
     private RestTemplate outRestTemplate;
 
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
+
     @Override
-    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName,String paymentPoolId) throws Exception {
+    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName, String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
@@ -64,9 +69,18 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         logger.debug("resMap=" + resMap);
         String systemName = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_GOOD_NAME);
 
-        String mchtNo_SM4 = CommunitySettingFactory.getValue(communityId, "mchtNo_SM4");
-        String productNo_SM4 = CommunitySettingFactory.getValue(communityId, "productNo_SM4");
-        String publicKey_SM4 = CommunitySettingFactory.getValue(communityId, "publicKey_SM4");
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(paymentPoolId);
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+
+        String mchtNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "mchtNo_SM4");
+        String productNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "productNo_SM4");
+        String publicKey_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "publicKey_SM4");
+
 
         Map<String, Object> params = new HashMap<>();
         params.put("version", VERSION);// 版本号 1.0
@@ -79,7 +93,7 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         params.put("device_ip", "172.0.0.1");// 商户数据包
         params.put("recog_no", "123123");// 交易终端编号
 
-        String decryParams = EncryptDecryptFactory.execute(communityId, gzhPayUrl, params);
+        String decryParams = EncryptDecryptFactory.execute(paymentPoolValueDtos, gzhPayUrl, params);
 
         JSONObject paramOut = JSONObject.parseObject(decryParams);
         if (!"0000".equals(paramOut.getString("return_code"))
@@ -100,11 +114,18 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         }
     }
 
-    public ResultVo checkPayFinish(String communityId, String orderNum,String paymentPoolId) {
+    public ResultVo checkPayFinish(String communityId, String orderNum, String paymentPoolId) {
         Map<String, String> result = null;
-        String mchtNo_SM4 = CommunitySettingFactory.getValue(communityId, "mchtNo_SM4");
-        String productNo_SM4 = CommunitySettingFactory.getValue(communityId, "productNo_SM4");
-        String publicKey_SM4 = CommunitySettingFactory.getValue(communityId, "publicKey_SM4");
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(paymentPoolId);
+        paymentPoolValueDto.setCommunityId(communityId);
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+        String mchtNo_SM4 = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "mchtNo_SM4");
         Map<String, Object> params = new HashMap<>();
         params.put("version", VERSION);// 版本号 1.0
         params.put("mcht_no", mchtNo_SM4);// 收款商户编号
@@ -112,7 +133,7 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         params.put("txn_no", "");// 支付流水
 
         // 对准备加签参数排序
-        String decryParams = EncryptDecryptFactory.execute(communityId, queryUrl, params);
+        String decryParams = EncryptDecryptFactory.execute(paymentPoolValueDtos, queryUrl, params);
 
         /**
          * {"amt":"0.01","deal_status":"PROCESSING","jump_url":"","mcht_name":"广西蓉慧科技有限公司","mcht_no":"MCT2023060100029734",
@@ -122,7 +143,7 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
          */
         JSONObject paramOut = JSONObject.parseObject(decryParams);
 
-        if("PROCESSING".equals(paramOut.getString("deal_status")) && "5019".equals(paramOut.getString("return_code"))){
+        if ("PROCESSING".equals(paramOut.getString("deal_status")) && "5019".equals(paramOut.getString("return_code"))) {
             return new ResultVo(ResultVo.CODE_WAIT_PAY, "等待支付完成");
         }