diff --git a/bus-qrcode/build.gradle b/bus-qrcode/build.gradle
index 55a94ee..0817cb6 100644
--- a/bus-qrcode/build.gradle
+++ b/bus-qrcode/build.gradle
@@ -7,7 +7,7 @@
 
 group = rootProject.group
 
-def sdkVersion = '1.3.0'
+def sdkVersion = '1.3.5'
 sourceCompatibility = 1.8
 targetCompatibility = 1.8
 
diff --git a/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java b/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java
index 6e5fd89..93070d0 100644
--- a/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java
+++ b/bus-qrcode/src/main/java/com/supwisdom/dlpay/busqrcode/QrCode.java
@@ -37,7 +37,7 @@
     qrDataKeys.add(FIELD_CARDTYPE);
     qrDataKeys.add(FIELD_TOTP);
     qrDataKeys.add(FIELD_RANDOM);
-    qrDataKeys.add(FIELD_SIGN);
+//    qrDataKeys.add(FIELD_SIGN);
   }
 
   private Builder qrBuilder;
@@ -271,8 +271,11 @@
     }
 
     final byte[] sign = sha256(byteConcat(qrData.getBytes(), factor));
+//    final byte[] signT = new byte[20];
+//    System.arraycopy(sign, 0, signT, 0, 20); //取前20位
     final byte[] encDataPlain = byteConcat(qrData.getBytes(), DELIMITER.getBytes(), sign);
-    final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, encDataPlain, qrBuilder.iv);
+//    final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, encDataPlain, qrBuilder.iv);
+    final byte[] encData = aesEncryptCFB(qrBuilder.rootKey, qrData.getBytes(), qrBuilder.iv);
     final String code = encodeBase64(encData);
     String result = code;
     if (qrBuilder.prefix != null) {
@@ -318,8 +321,8 @@
     if (qrBuilder.debug) {
       System.out.println("encDataPlain=[" + encData + "]");
     }
-    final String[] fields = encData.split(DELIMITER, 6);
-    if (fields.length < 6) {
+    final String[] fields = encData.split(DELIMITER, 5);
+    if (fields.length < 5) {
       throw new RuntimeException("二维码数据异常！");
     }
     Map<String, String> result = new HashMap<>();
@@ -337,14 +340,16 @@
     final String uid = result.get(FIELD_UID);
     final byte[] factor = getSignFactor(uid);
     final byte[] calcSign = sha256(byteConcat(qrData.getBytes(), factor));
+//    final byte[] signT = new byte[20];
+//    System.arraycopy(calcSign, 0, signT, 0, 20); //取前20位
     if (qrBuilder.debug) {
-      System.out.println("calcSign=[" + new String(calcSign) + "]");
+//      System.out.println("calcSign=[" + new String(calcSign) + "]");
       System.out.println("    sign=[" + result.get(FIELD_SIGN) + "]");
       System.out.println("======================  Decode QR Code End  =================================");
     }
-    if (!new String(calcSign).equalsIgnoreCase(result.get(FIELD_SIGN))) {
-      throw new RuntimeException("二维码验证错误！");
-    }
+//    if (!new String(signT).equalsIgnoreCase(result.get(FIELD_SIGN))) {
+//      throw new RuntimeException("二维码验证错误！");
+//    }
 
     return result;
   }
diff --git a/payapi/build.gradle b/payapi/build.gradle
index 1462f81..e029765 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -125,7 +125,7 @@
     implementation group: 'com.alipay.sdk', name: 'alipay-sdk-java', version: '3.7.110.ALL'
 
     /*大理二维码jar*/
-    implementation 'com.supwisdom:dlsmk-qrcode:1.3.0'
+    implementation 'com.supwisdom:dlsmk-qrcode:1.3.5'
 
     annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
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 0ced8c7..7756d8c 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
@@ -191,7 +191,7 @@
             resp.message = "用户[${person.userid}]未绑定银行卡"
             logger.error(resp.message)
             return resp
-        } else if (TradeDict.STATUS_NORMAL != userBankcard.status) {
+        } else if (TradeDict.STATUS_NORMAL != userBankcard.transStatus) {
             resp.code = "99"
             resp.message = "用户[${person.userid}]绑定银行卡状态异常"
             logger.error(resp.message)
