Selaa lähdekoodia

优化navtive

wuxw 2 vuotta sitten
vanhempi
commit
5a0c3fb8f3

+ 4 - 1
service-acct/src/main/java/com/java110/acct/cmd/payment/CheckPayFinishCmd.java

@@ -29,6 +29,9 @@ public class CheckPayFinishCmd extends Cmd {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "authCode", "未包含授权码");
         Assert.hasKeyAndValue(reqJson, "authCode", "未包含授权码");
         Assert.hasKeyAndValue(reqJson, "subServiceCode", "未包含支付接口");
         Assert.hasKeyAndValue(reqJson, "subServiceCode", "未包含支付接口");
+        Assert.hasKeyAndValue(reqJson, "paymentPoolId", "未包含支付参数");
+
+
     }
     }
 
 
     @Override
     @Override
@@ -53,7 +56,7 @@ public class CheckPayFinishCmd extends Cmd {
         }
         }
         ResultVo resultVo = null;
         ResultVo resultVo = null;
         try {
         try {
-            resultVo = qrCodePaymentSMOImpl.checkPayFinish(reqJson.getString("communityId"), orderId);
+            resultVo = qrCodePaymentSMOImpl.checkPayFinish(reqJson.getString("communityId"), orderId,reqJson.getString("paymentPoolId"));
         } catch (Exception e) {
         } catch (Exception e) {
             cmdDataFlowContext.setResponseEntity(ResultVo.error(e.getLocalizedMessage()));
             cmdDataFlowContext.setResponseEntity(ResultVo.error(e.getLocalizedMessage()));
             return;
             return;

+ 90 - 2
service-acct/src/main/java/com/java110/acct/cmd/payment/QrCodePaymentCmd.java

@@ -11,7 +11,13 @@ import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDetailDto;
+import com.java110.dto.fee.PayFeeDto;
+import com.java110.dto.paymentPool.PaymentPoolDto;
+import com.java110.dto.paymentPoolConfig.PaymentPoolConfigDto;
+import com.java110.intf.acct.IPaymentPoolConfigV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolV1InnerServiceSMO;
 import com.java110.intf.community.ICommunityV1InnerServiceSMO;
 import com.java110.intf.community.ICommunityV1InnerServiceSMO;
+import com.java110.intf.fee.IPayFeeV1InnerServiceSMO;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.constant.WechatConstant;
@@ -36,6 +42,16 @@ public class QrCodePaymentCmd extends Cmd {
     private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl;
     private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl;
 
 
 
 
+    @Autowired
+    private IPaymentPoolConfigV1InnerServiceSMO paymentPoolConfigV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolV1InnerServiceSMO paymentPoolV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl;
+
+
     private IQrCodePaymentSMO qrCodePaymentSMOImpl;
     private IQrCodePaymentSMO qrCodePaymentSMOImpl;
 
 
     @Override
     @Override
@@ -43,6 +59,8 @@ public class QrCodePaymentCmd extends Cmd {
         Assert.hasKeyAndValue(reqJson, "authCode", "未包含授权码");
         Assert.hasKeyAndValue(reqJson, "authCode", "未包含授权码");
         Assert.hasKeyAndValue(reqJson, "receivedAmount", "未包含支付金额");
         Assert.hasKeyAndValue(reqJson, "receivedAmount", "未包含支付金额");
         Assert.hasKeyAndValue(reqJson, "subServiceCode", "未包含支付接口");
         Assert.hasKeyAndValue(reqJson, "subServiceCode", "未包含支付接口");
+        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区");
+
     }
     }
 
 
     @Override
     @Override
@@ -54,7 +72,7 @@ public class QrCodePaymentCmd extends Cmd {
             throw new IllegalArgumentException("授权码错误");
             throw new IllegalArgumentException("授权码错误");
         }
         }
 
 
-        String payQrAdapt = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_QR_ADAPT);
+        String payQrAdapt = computeAdapt(reqJson.getString("subServiceCode"),reqJson);//MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_QR_ADAPT);
 
 
         if (StringUtil.isEmpty(payQrAdapt)) {
         if (StringUtil.isEmpty(payQrAdapt)) {
             int pre = Integer.parseInt(authCode.substring(0, 2));
             int pre = Integer.parseInt(authCode.substring(0, 2));
@@ -90,7 +108,8 @@ public class QrCodePaymentCmd extends Cmd {
 
 
         ResultVo resultVo = null;
         ResultVo resultVo = null;
         try {
         try {
-            resultVo = qrCodePaymentSMOImpl.pay(reqJson.getString("communityId"), orderId, receivedAmount, authCode, feeName);
+            resultVo = qrCodePaymentSMOImpl.pay(reqJson.getString("communityId"), orderId,
+                    receivedAmount, authCode, feeName,reqJson.getString("paymentPoolId"));
         } catch (Exception e) {
         } catch (Exception e) {
             logger.error("异常了", e);
             logger.error("异常了", e);
             cmdDataFlowContext.setResponseEntity(ResultVo.error(e.getLocalizedMessage()));
             cmdDataFlowContext.setResponseEntity(ResultVo.error(e.getLocalizedMessage()));
@@ -109,4 +128,73 @@ public class QrCodePaymentCmd extends Cmd {
         cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(paramOut));
         cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(paramOut));
     }
     }
 
 
+
+    /**
+     * 计算适配器
+     *
+     * @param reqJson
+     * @return
+     */
+    private String computeAdapt(String business, JSONObject reqJson) {
+
+        String communityId = reqJson.getString("communityId");
+        //todo 如果是单个费用缴费
+        PaymentPoolDto paymentPoolDto = ifPayFeeBusiness(business, reqJson);
+        if (paymentPoolDto != null) {
+            reqJson.put("paymentPoolId", paymentPoolDto.getPpId());
+            return paymentPoolDto.getBeanQrcode();
+        }
+
+        //todo 按小区查询 支付信息
+        paymentPoolDto = new PaymentPoolDto();
+        paymentPoolDto.setCommunityId(communityId);
+        paymentPoolDto.setPayType(PaymentPoolDto.PAY_TYPE_COMMUNITY);
+        List<PaymentPoolDto> paymentPoolDtos = paymentPoolV1InnerServiceSMOImpl.queryPaymentPools(paymentPoolDto);
+        if (paymentPoolDtos == null || paymentPoolDtos.isEmpty()) {
+            throw new IllegalArgumentException("小区未配置支付信息");
+        }
+
+        reqJson.put("paymentPoolId", paymentPoolDtos.get(0).getPpId());
+        return paymentPoolDtos.get(0).getBeanQrcode();
+    }
+
+    private PaymentPoolDto ifPayFeeBusiness(String business, JSONObject reqJson) {
+        String feeId = "";
+        if (!"fee.payFee".equals(business) || !reqJson.containsKey("feeId")) {
+            return null;
+        }
+
+        feeId = reqJson.getString("feeId");
+        if (StringUtil.isNumber(feeId)) {
+            return null;
+        }
+
+        PayFeeDto feeDto = new PayFeeDto();
+        feeDto.setFeeId(feeId);
+        feeDto.setCommunityId(reqJson.getString("communityId"));
+        List<PayFeeDto> feeDtos = payFeeV1InnerServiceSMOImpl.queryPayFees(feeDto);
+
+        if (feeDtos == null || feeDtos.isEmpty()) {
+            return null;
+        }
+
+        PaymentPoolConfigDto paymentPoolConfigDto = new PaymentPoolConfigDto();
+        paymentPoolConfigDto.setConfigId(feeDtos.get(0).getConfigId());
+        paymentPoolConfigDto.setCommunityId(feeDtos.get(0).getCommunityId());
+        List<PaymentPoolConfigDto> paymentPoolConfigDtos = paymentPoolConfigV1InnerServiceSMOImpl.queryPaymentPoolConfigs(paymentPoolConfigDto);
+        if (paymentPoolConfigDtos == null || paymentPoolConfigDtos.isEmpty()) {
+            return null;
+        }
+
+        PaymentPoolDto paymentPoolDto = new PaymentPoolDto();
+        paymentPoolDto.setPpId(paymentPoolConfigDtos.get(0).getPpId());
+        paymentPoolDto.setCommunityId(paymentPoolConfigDtos.get(0).getCommunityId());
+        paymentPoolDto.setPayType(PaymentPoolDto.PAY_TYPE_FEE_CONFIG);
+        List<PaymentPoolDto> paymentPoolDtos = paymentPoolV1InnerServiceSMOImpl.queryPaymentPools(paymentPoolDto);
+        if (paymentPoolDtos == null || paymentPoolDtos.isEmpty()) {
+            return null;
+        }
+
+        return paymentPoolDtos.get(0);
+    }
 }
 }

+ 9 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/SavePaymentPoolCmd.java

@@ -77,6 +77,7 @@ public class SavePaymentPoolCmd extends Cmd {
         Assert.hasKeyAndValue(reqJson, "paymentType", "请求报文中未包含paymentType");
         Assert.hasKeyAndValue(reqJson, "paymentType", "请求报文中未包含paymentType");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
         Assert.hasKeyAndValue(reqJson, "state", "请求报文中未包含state");
         Assert.hasKeyAndValue(reqJson, "state", "请求报文中未包含state");
+        Assert.hasKeyAndValue(reqJson, "payType", "请求报文中未包含payType");
 
 
         Assert.hasKey(reqJson, "paymentKeys", "未包含动态字段");
         Assert.hasKey(reqJson, "paymentKeys", "未包含动态字段");
 
 
@@ -95,6 +96,14 @@ public class SavePaymentPoolCmd extends Cmd {
         }
         }
 
 
         if (!PaymentPoolDto.PAY_TYPE_FEE_CONFIG.equals(reqJson.getString("payType"))) {
         if (!PaymentPoolDto.PAY_TYPE_FEE_CONFIG.equals(reqJson.getString("payType"))) {
+
+            PaymentPoolDto paymentPoolDto = new PaymentPoolDto();
+            paymentPoolDto.setCommunityId(reqJson.getString("communityId"));
+            paymentPoolDto.setPayType(reqJson.getString("payType"));
+            int count = paymentPoolV1InnerServiceSMOImpl.queryPaymentPoolsCount(paymentPoolDto);
+            if (count > 0) {
+                throw new CmdException("已经存在,请勿重复添加,只有支付范围为费用项的可以添加多个支付");
+            }
             return;
             return;
         }
         }
 
 

+ 2 - 2
service-acct/src/main/java/com/java110/acct/smo/IQrCodePaymentSMO.java

@@ -12,7 +12,7 @@ public interface IQrCodePaymentSMO {
      *
      *
      * @return
      * @return
      */
      */
-    ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName) throws Exception;
+    ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName,String paymentPoolId) throws Exception;
 
 
     /**
     /**
      * 检查是否支付完成
      * 检查是否支付完成
@@ -21,6 +21,6 @@ public interface IQrCodePaymentSMO {
      * @param orderNum
      * @param orderNum
      * @return
      * @return
      */
      */
-    ResultVo checkPayFinish(String communityId, String orderNum);
+    ResultVo checkPayFinish(String communityId, String orderNum,String paymentPoolId);
 
 
 }
 }

+ 2 - 2
service-acct/src/main/java/com/java110/acct/smo/impl/QrCodeAliPaymentAdapt.java

@@ -64,7 +64,7 @@ public class QrCodeAliPaymentAdapt implements IQrCodePaymentSMO {
     public final static String SIGN_TYPE = "RSA2";
     public final static String SIGN_TYPE = "RSA2";
 
 
     @Override
     @Override
-    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName) throws Exception {
+    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName,String paymentPoolId) throws Exception {
         String systemName = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_GOOD_NAME);
         String systemName = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAY_GOOD_NAME);
 
 
         AlipayClient alipayClient = new DefaultAlipayClient(GETEWAY_URL,
         AlipayClient alipayClient = new DefaultAlipayClient(GETEWAY_URL,
@@ -98,7 +98,7 @@ public class QrCodeAliPaymentAdapt implements IQrCodePaymentSMO {
     }
     }
 
 
     @Override
     @Override
-    public ResultVo checkPayFinish(String communityId, String orderNum) {
+    public ResultVo checkPayFinish(String communityId, String orderNum,String paymentPoolId) {
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
                 CommunitySettingFactory.getValue(communityId, "APP_ID"),
                 CommunitySettingFactory.getValue(communityId, "APP_ID"),
                 CommunitySettingFactory.getRemark(communityId, "APP_PRIVATE_KEY"),
                 CommunitySettingFactory.getRemark(communityId, "APP_PRIVATE_KEY"),

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

@@ -53,7 +53,7 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
     private RestTemplate outRestTemplate;
     private RestTemplate outRestTemplate;
 
 
     @Override
     @Override
-    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName) throws Exception {
+    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName,String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
@@ -100,7 +100,7 @@ public class QrCodeBbgPaymentAdapt implements IQrCodePaymentSMO {
         }
         }
     }
     }
 
 
-    public ResultVo checkPayFinish(String communityId, String orderNum) {
+    public ResultVo checkPayFinish(String communityId, String orderNum,String paymentPoolId) {
         Map<String, String> result = null;
         Map<String, String> result = null;
         String mchtNo_SM4 = CommunitySettingFactory.getValue(communityId, "mchtNo_SM4");
         String mchtNo_SM4 = CommunitySettingFactory.getValue(communityId, "mchtNo_SM4");
         String productNo_SM4 = CommunitySettingFactory.getValue(communityId, "productNo_SM4");
         String productNo_SM4 = CommunitySettingFactory.getValue(communityId, "productNo_SM4");

+ 2 - 2
service-acct/src/main/java/com/java110/acct/smo/impl/QrCodePlutusPaymentAdapt.java

@@ -56,7 +56,7 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
     private RestTemplate outRestTemplate;
     private RestTemplate outRestTemplate;
 
 
     @Override
     @Override
-    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName) throws Exception {
+    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName,String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
@@ -122,7 +122,7 @@ public class QrCodePlutusPaymentAdapt implements IQrCodePaymentSMO {
 
 
     }
     }
 
 
-    public ResultVo checkPayFinish(String communityId, String orderNum) {
+    public ResultVo checkPayFinish(String communityId, String orderNum,String paymentPoolId) {
         SmallWeChatDto shopSmallWeChatDto = null;
         SmallWeChatDto shopSmallWeChatDto = null;
         Map<String, String> result = null;
         Map<String, String> result = null;
 
 

+ 33 - 10
service-acct/src/main/java/com/java110/acct/smo/impl/QrCodeWechatPaymentAdapt.java

@@ -2,7 +2,9 @@ package com.java110.acct.smo.impl;
 
 
 import com.java110.acct.smo.IQrCodePaymentSMO;
 import com.java110.acct.smo.IQrCodePaymentSMO;
 import com.java110.core.client.RestTemplate;
 import com.java110.core.client.RestTemplate;
+import com.java110.dto.paymentPoolValue.PaymentPoolValueDto;
 import com.java110.dto.wechat.SmallWeChatDto;
 import com.java110.dto.wechat.SmallWeChatDto;
+import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.MappingConstant;
@@ -45,11 +47,14 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
     @Autowired
     @Autowired
     private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl;
     private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl;
 
 
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
+
     @Autowired
     @Autowired
     private RestTemplate outRestTemplate;
     private RestTemplate outRestTemplate;
 
 
     @Override
     @Override
-    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName) throws Exception {
+    public ResultVo pay(String communityId, String orderNum, double money, String authCode, String feeName, String paymentPoolId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
         //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
@@ -70,15 +75,24 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
             shopSmallWeChatDto.setObjId(communityId);
             shopSmallWeChatDto.setObjId(communityId);
             shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
             shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
             shopSmallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
             shopSmallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
-            shopSmallWeChatDto.setMchId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "mchId"));
-            shopSmallWeChatDto.setPayPassword(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "payPassword"));
         } else {
         } else {
             shopSmallWeChatDto = smallWeChatDtos.get(0);
             shopSmallWeChatDto = smallWeChatDtos.get(0);
         }
         }
 
 
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(paymentPoolId);
+        List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+        if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+            throw new IllegalArgumentException("配置错误,未配置参数");
+        }
+
+        String mchId = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "WECHAT_MCHID");
+        String key = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "WECHAT_KEY");
+
         SortedMap<String, String> paramMap = new TreeMap<String, String>();
         SortedMap<String, String> paramMap = new TreeMap<String, String>();
         paramMap.put("appid", shopSmallWeChatDto.getAppId());
         paramMap.put("appid", shopSmallWeChatDto.getAppId());
-        paramMap.put("mch_id", shopSmallWeChatDto.getMchId());
+        paramMap.put("mch_id", mchId);
         paramMap.put("nonce_str", PayUtil.makeUUID(32));
         paramMap.put("nonce_str", PayUtil.makeUUID(32));
         paramMap.put("body", feeName);
         paramMap.put("body", feeName);
         paramMap.put("out_trade_no", orderNum);
         paramMap.put("out_trade_no", orderNum);
@@ -94,7 +108,7 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
             paramMap.put("sub_mch_id", shopSmallWeChatDto.getMchId());//起调小程序的商户号
             paramMap.put("sub_mch_id", shopSmallWeChatDto.getMchId());//起调小程序的商户号
             paramMap.remove("openid");
             paramMap.remove("openid");
         }
         }
-        paramMap.put("sign", PayUtil.createSign(paramMap, shopSmallWeChatDto.getPayPassword()));
+        paramMap.put("sign", PayUtil.createSign(paramMap, key));
 //转换为xml
 //转换为xml
         String xmlData = PayUtil.mapToXml(paramMap);
         String xmlData = PayUtil.mapToXml(paramMap);
 
 
@@ -121,7 +135,7 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
         }
         }
     }
     }
 
 
-    public ResultVo checkPayFinish(String communityId, String orderNum) {
+    public ResultVo checkPayFinish(String communityId, String orderNum,String paymentPoolId) {
         SmallWeChatDto shopSmallWeChatDto = null;
         SmallWeChatDto shopSmallWeChatDto = null;
         Map<String, String> result = null;
         Map<String, String> result = null;
         try {
         try {
@@ -133,15 +147,24 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
                 shopSmallWeChatDto.setObjId(communityId);
                 shopSmallWeChatDto.setObjId(communityId);
                 shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
                 shopSmallWeChatDto.setAppId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appId"));
                 shopSmallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
                 shopSmallWeChatDto.setAppSecret(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "appSecret"));
-                shopSmallWeChatDto.setMchId(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "mchId"));
-                shopSmallWeChatDto.setPayPassword(MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "payPassword"));
             } else {
             } else {
                 shopSmallWeChatDto = smallWeChatDtos.get(0);
                 shopSmallWeChatDto = smallWeChatDtos.get(0);
             }
             }
 
 
+            PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+            paymentPoolValueDto.setPpId(paymentPoolId);
+            List<PaymentPoolValueDto> paymentPoolValueDtos = paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+
+            if (paymentPoolValueDtos == null || paymentPoolValueDtos.isEmpty()) {
+                throw new IllegalArgumentException("配置错误,未配置参数");
+            }
+
+            String mchId = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "WECHAT_MCHID");
+            String key = PaymentPoolValueDto.getValue(paymentPoolValueDtos, "WECHAT_KEY");
+
             SortedMap<String, String> paramMap = new TreeMap<String, String>();
             SortedMap<String, String> paramMap = new TreeMap<String, String>();
             paramMap.put("appid", shopSmallWeChatDto.getAppId());
             paramMap.put("appid", shopSmallWeChatDto.getAppId());
-            paramMap.put("mch_id", shopSmallWeChatDto.getMchId());
+            paramMap.put("mch_id", mchId);
             paramMap.put("nonce_str", PayUtil.makeUUID(32));
             paramMap.put("nonce_str", PayUtil.makeUUID(32));
             paramMap.put("out_trade_no", orderNum);
             paramMap.put("out_trade_no", orderNum);
             String paySwitch = MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_PAY_SWITCH);
             String paySwitch = MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_PAY_SWITCH);
@@ -150,7 +173,7 @@ public class QrCodeWechatPaymentAdapt implements IQrCodePaymentSMO {
                 paramMap.put("mch_id", MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_MCH_ID));  //服务商商户
                 paramMap.put("mch_id", MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_MCH_ID));  //服务商商户
                 paramMap.put("sub_mch_id", shopSmallWeChatDto.getMchId());
                 paramMap.put("sub_mch_id", shopSmallWeChatDto.getMchId());
             }
             }
-            paramMap.put("sign", PayUtil.createSign(paramMap, shopSmallWeChatDto.getPayPassword()));
+            paramMap.put("sign", PayUtil.createSign(paramMap, key));
 //转换为xml
 //转换为xml
             String xmlData = PayUtil.mapToXml(paramMap);
             String xmlData = PayUtil.mapToXml(paramMap);