diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
index 428b3f0..ed46360 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
@@ -23,6 +23,7 @@
   public static final String YNRCC_SIGNKEY = "ynrcc.agent.signkey"; //农商行前置md5key
   public static final String YNRCC_MERCHANT_BANKCARDNO = "merchant.bankcardno";
   public static final String YNRCC_MERCHANT_BANKACCNAME = "merchant.bankaccname";
+  public static final String YNRCC_MERCHANT_BANKCARDNO_SEQNO = "merchant.bankcardno.seqno";
 
   public static final String PARAM_CONFIG_ERROR = "90000"; // 参数未配置
   public static final String PARAM_VALUE_ERROR = "90001"; // 参数值错误
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
index 14631ee..62c471f 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
@@ -148,7 +148,7 @@
     if (!StringUtil.isEmpty(list)) {
       for (TSourceTypeConfig config : list) {
         if (config.getGlobalflag()) {
-          result.put(config.getConfigid(), config.getConfigValue()); //统用参数
+          result.put(config.getConfigid(), config.getConfigValue()); //通用参数
         }
       }
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
index 0d97656..0ced8c7 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
@@ -170,7 +170,8 @@
         }
         val merchantBankcardno = config[YnrccUtil.YNRCC_MERCHANT_BANKCARDNO]
         val merchantBankaccname = config[YnrccUtil.YNRCC_MERCHANT_BANKACCNAME]
-        if (StringUtil.isEmpty(merchantBankcardno) || StringUtil.isEmpty(merchantBankaccname)) {
+        val merchantBankcardnoSeqno = config[YnrccUtil.YNRCC_MERCHANT_BANKCARDNO_SEQNO]
+        if (StringUtil.isEmpty(merchantBankcardno) || StringUtil.isEmpty(merchantBankaccname) || StringUtil.isEmpty(merchantBankcardnoSeqno)) {
             resp.code = YnrccUtil.PARAM_CONFIG_ERROR
             resp.message = "系统参数未配置[商户收款银行账号]"
             logger.error(resp.message)
@@ -216,6 +217,7 @@
         params["idno"] = person.idno
         params["merchant_bankcardno"] = merchantBankcardno!!
         params["merchant_bankaccname"] = merchantBankaccname!!
+        params["merchant_bankcardno_seqno"] = merchantBankcardnoSeqno!!
         params["amount"] = amount.toString()
         params["scenario"] = scenario
         params["description"] = "市民卡代扣消费"
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
index dd5b1fd..272c886 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
@@ -42,6 +42,8 @@
   private Long stlamt; //清算金额
   private Integer jnlcount; //交易流水笔数
 
+  private String merchantBcnoSeqno; //商户银行卡序号
+
   /**
    * 市民卡绑定请求XML
    */
@@ -374,4 +376,12 @@
   public void setJnlcount(Integer jnlcount) {
     this.jnlcount = jnlcount;
   }
+
+  public String getMerchantBcnoSeqno() {
+    return merchantBcnoSeqno;
+  }
+
+  public void setMerchantBcnoSeqno(String merchantBcnoSeqno) {
+    this.merchantBcnoSeqno = merchantBcnoSeqno;
+  }
 }
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
index 5b34717..e3f9ea1 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
@@ -203,13 +203,14 @@
                            @FormParam("idtype") String idtype, @FormParam("idno") String idno,
                            @FormParam("merchant_bankcardno") String merchant_bankcardno,
                            @FormParam("merchant_bankaccname") String merchant_bankaccname,
+                           @FormParam("merchant_bankcardno_seqno") String merchant_bankcardno_seqno,
                            @FormParam("amount") Integer amount,
                            @FormParam("scenario") String scenario,
                            @FormParam("description") String description,
                            @FormParam("sign_type") String sign_type, @FormParam("sign") String sign) {
     DlpayResp resp = new DlpayResp();
     if (!ynrccParamCheckService.checkCardPayParam(transcode, transdate, transtime, refno, categorie, bankcardno,
-        username, idtype, idno, merchant_bankcardno, merchant_bankaccname, amount,scenario, description, sign_type, sign, resp)) {
+        username, idtype, idno, merchant_bankcardno, merchant_bankaccname, merchant_bankcardno_seqno, amount, scenario, description, sign_type, sign, resp)) {
       logger.error(resp.errPrint());
       return resp;
     }
@@ -226,6 +227,7 @@
     params.put("idno", idno);
     params.put("merchant_bankcardno", merchant_bankcardno);
     params.put("merchant_bankaccname", merchant_bankaccname);
+    params.put("merchant_bankcardno_seqno", merchant_bankcardno_seqno);
     params.put("amount", String.valueOf(amount));
     params.put("scenario",scenario);
     params.put("description", description);
@@ -248,6 +250,7 @@
       req.setIdNo(idno);
       req.setMerchantBcno(merchant_bankcardno);
       req.setMerchantName(merchant_bankaccname);
+      req.setMerchantBcnoSeqno(merchant_bankcardno_seqno);
       req.setAmount(amount);
       req.setScenario(scenario);
       req.setDescription(description);
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
index 35b38ed..f68d4aa 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
@@ -15,8 +15,8 @@
                              String idtype, String idno, String phone, String captcha,String transtype, String sign_type, String sign, DlpayResp resp);
 
   boolean checkCardPayParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username,
-                            String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, Integer amount,String scenario, String description,
-                            String sign_type, String sign, DlpayResp resp);
+                            String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, String merchant_bankcardno_seqno,
+                            Integer amount,String scenario, String description, String sign_type, String sign, DlpayResp resp);
 
   boolean checkPayRefundParam(String transcode, String transdate, String transtime, String refno, String refundRefno, Integer amount, String description,
                               String sign_type, String sign, DlpayResp resp);
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java
index 6b925f7..5c6955c 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java
@@ -144,7 +144,7 @@
   }
 
   @Override
-  public boolean checkCardPayParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username, String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, Integer amount, String scenario,String description, String sign_type, String sign, DlpayResp resp) {
+  public boolean checkCardPayParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username, String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, String merchant_bankcardno_seqno, Integer amount, String scenario,String description, String sign_type, String sign, DlpayResp resp) {
     if (!checkYnrccBaseParam(transcode, transdate, transtime, refno, sign_type, sign, resp)) {
       return false;
     }
@@ -184,6 +184,12 @@
       resp.setMessage("请求参数错误[商户银行开户名为空]");
       return false;
     }
+    if (StringUtil.isEmpty(merchant_bankcardno_seqno)){
+      resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+      resp.setMessage("请求参数错误[商户银行卡序号为空]");
+      return false;
+    }
+
     if (null == amount) {
       resp.setCode(ErrorCode.REQ_PARAM_ERROR);
       resp.setMessage("请求参数错误[交易金额为空]");
