diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/agent/Constant.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/agent/Constant.java
index 7f572da..39169ac 100644
--- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/agent/Constant.java
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/agent/Constant.java
@@ -20,4 +20,5 @@
   public static final String COL_STATUS = "status";
   public static final String COL_FLAG = "flag";
   public static final String COL_RECORDNO = "recordno"; //记录号
+  public static final String COL_BANKSEQNO = "payeeno"; //商户银行序号
 }
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/CheckFileLine.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/CheckFileLine.java
index e3d9b69..3e6cad5 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/CheckFileLine.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/CheckFileLine.java
@@ -1,10 +1,10 @@
 package com.supwisdom.agent.api.bean;
 
 /**
- * * 第二行及以后：交易日期|交易时间|报文业务类型|业务系统流水号|银行流水号|付款银行卡号|收款商户银行卡号|核心记账日期|交易金额|交易摘要|
+ * * 第二行及以后：交易日期|交易时间|报文业务类型|业务系统流水号|银行流水号|付款银行卡号|收款商户银行卡号|[账号序号]|核心记账日期|交易金额|交易摘要|
  * <p>
  * private static final String[]chkFileColumnList=new String[]{"transdate","transtime","flag","refno","agentrefno",
- * "payerid","payeeid","agentdate","amount","summary"};
+ * "payerid","payeeid",["payeeno"],"agentdate","amount","summary"};
  */
 public class CheckFileLine {
   private String transdate;
@@ -14,6 +14,7 @@
   private String agentrefno;
   private String payerid;
   private String payeeid;
+  private String payeeno; //fixme: 银行测试环境修改对账单新增账号序号 2020.11.27
   private String agentdate;
   private Integer amount;
   private String summary;
@@ -97,4 +98,12 @@
   public void setSummary(String summary) {
     this.summary = summary;
   }
+
+  public String getPayeeno() {
+    return payeeno;
+  }
+
+  public void setPayeeno(String payeeno) {
+    this.payeeno = payeeno;
+  }
 }
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 e1e28e9..eb0f31b 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
@@ -106,12 +106,12 @@
         .append("<ID_NO>").append(idNo).append("</ID_NO>")
         .append("<MERCHANT_BCNO>").append(merchantBcno).append("</MERCHANT_BCNO>")
         .append("<MERCHANT_NAME>").append(merchantName).append("</MERCHANT_NAME>")
-//        .append("<MERCHANT_BCNOSEQ>").append(merchantBcnoSeqno).append("</MERCHANT_BCNOSEQ>")   //fixme: 银行测试环境新加 2020.11.27
+        .append("<MERCHANT_BCNOSEQ>").append(merchantBcnoSeqno).append("</MERCHANT_BCNOSEQ>")   //fixme: 银行测试环境新加 2020.11.27
         .append("<AMOUNT>").append(amount).append("</AMOUNT>")
-//        .append("<SCENARIO>").append(scenario).append("</SCENARIO>")  //fixme: 银行测试环境新加字段 2020.11.27
+        .append("<SCENARIO>").append(scenario).append("</SCENARIO>")  //fixme: 银行测试环境新加字段 2020.11.27
         .append("<DESCRIPTION>").append(description).append("</DESCRIPTION>")
-        .append("<MAC>").append(MD5.encodeByMD5ForYnrcc(merchantBcno + bcNo + amount)).append("</MAC>")
-//        .append("<MAC>").append(MD5.encodeByMD5ForYnrcc(merchantBcno + bcNo + amount + "ynnx@2020|dlsmk" + sn)).append("</MAC>")  //fixme: 银行测试环境修改MAC算法 2020.11.27
+//        .append("<MAC>").append(MD5.encodeByMD5ForYnrcc(merchantBcno + bcNo + amount)).append("</MAC>")
+        .append("<MAC>").append(MD5.encodeByMD5ForYnrcc(merchantBcno + bcNo + amount + "ynnx@2020|dlsmk" + sn)).append("</MAC>")  //fixme: 银行测试环境修改MAC算法 2020.11.27
         .append("</root>");
     return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
   }
@@ -163,7 +163,7 @@
         .append("<SN>").append(sn).append("</SN>")
         .append("<DZDATE>").append(chkdate).append("</DZDATE>")
         .append("<MERCHANT_BCNO>").append("</MERCHANT_BCNO>")
-//        .append("<MERCHANT_BCNOSEQ>").append("</MERCHANT_BCNOSEQ>")   //fixme: 银行测试环境新加商户银行卡序号字段 2020.11.27
+        .append("<MERCHANT_BCNOSEQ>").append("</MERCHANT_BCNOSEQ>")   //fixme: 银行测试环境新加商户银行卡序号字段 2020.11.27
         .append("</root>");
     return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
   }
@@ -179,8 +179,8 @@
         .append("<TRANSDATE>").append(transdate).append("</TRANSDATE>")
         .append("<TRANSTIME>").append(transtime).append("</TRANSTIME>")
         .append("<SN>").append(sn).append("</SN>")
-        .append("<STLTRXDATE>").append(stltrxdate).append("</STLTRXDATE>")
-//        .append("<STLSNDATE>").append(stltrxdate).append("</STLSNDATE>")  //fixme: 银行测试环境改了字段名(STLTRXDATE 改为 STLSNDATE) 2020.11.27
+//        .append("<STLTRXDATE>").append(stltrxdate).append("</STLTRXDATE>")
+        .append("<STLSNDATE>").append(stltrxdate).append("</STLSNDATE>")  //fixme: 银行测试环境改了字段名(STLTRXDATE 改为 STLSNDATE) 2020.11.27
         .append("<STLAMT>").append(stlamt).append("</STLAMT>")
         .append("<JNLCOUNT>").append(jnlcount).append("</JNLCOUNT>")
         .append("</root>");
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 e3f9ea1..f445df7 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
@@ -40,10 +40,10 @@
 
   /**
    * 第一行：总笔数|总金额|代扣总笔数|代扣总金额|退款总笔数|退款总金额|
-   * 第二行及以后：交易日期|交易时间|报文业务类型|业务系统流水号|银行流水号|付款银行卡号|收款商户银行卡号|核心记账日期|交易金额|交易摘要|
+   * 第二行及以后：交易日期|交易时间|报文业务类型|业务系统流水号|银行流水号|付款银行卡号|收款商户银行卡号|[账号序号]|核心记账日期|交易金额|交易摘要|
    */
   private static final String[] chkFileColumnList = new String[]{"transdate", "transtime", Constant.COL_FLAG,
-      Constant.COL_REFNO, Constant.COL_AGENT_REFNO, Constant.COL_PAYERID, Constant.COL_PAYEEID,
+      Constant.COL_REFNO, Constant.COL_AGENT_REFNO, Constant.COL_PAYERID, Constant.COL_PAYEEID, Constant.COL_BANKSEQNO,
       Constant.COL_AGENT_DATE, Constant.COL_AMOUNT, Constant.COL_SUMMARY};
 
   private static final String chkFileDelimiter = "\\|";
@@ -483,16 +483,18 @@
           flag = Constant.FLAG_PAY;
           fileHeader.setPayCount(fileHeader.getPayCount() - 1);
           fileHeader.setPayAmount(fileHeader.getPayAmount() - record.getAmount());
+          fileHeader.setTotalAmount(fileHeader.getTotalAmount() - record.getAmount());
         } else if (FLAG_REFUND.equals(record.getFlag())) {
           amount = record.getAmount();
           flag = Constant.FLAG_REFUND;
           fileHeader.setRefundCount(fileHeader.getRefundCount() - 1);
           fileHeader.setRefundAmount(fileHeader.getRefundAmount() - record.getAmount());
+          fileHeader.setTotalAmount(fileHeader.getTotalAmount() + record.getAmount());
         } else {
           throw new IllegalArgumentException("对账文件【报文业务类型】错误，行数 " + lineno + " 。");
         }
         fileHeader.setTotalCount(fileHeader.getTotalCount() - 1);
-        fileHeader.setTotalAmount(fileHeader.getTotalAmount() - record.getAmount());
+//        fileHeader.setTotalAmount(fileHeader.getTotalAmount() - record.getAmount());
         writeLine(output, record.getRefno(), record.getAgentrefno(), record.getAgentdate(),
             flag, record.getPayerid(), record.getPayeeid(), Constant.STATUS_SUCCESS,
             amount, record.getSummary(), lineno - 1);
