diff --git a/app/build.gradle b/app/build.gradle
index 0766c08..6737c2d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@
 android {
     compileSdkVersion 28
     defaultConfig {
-        applicationId "com.supwisdom.posa711dali"
+        applicationId "com.supwisdom.posa711"
         minSdkVersion 22
         targetSdkVersion 28
         versionName androidGitVersion.name()
diff --git a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
index 160dfe3..6cf2a8e 100644
--- a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
@@ -46,7 +46,7 @@
         kvMap[index++] = ControlParaRecord("服务器端口>>", "" + cfgRecord.epayPort)
         kvMap[index++] =
             ControlParaRecord("参数版本号>>", "no:${dyRecord!!.paraverno},id:${dyRecord.paragroupid}")
-        kvMap[index++] = ControlParaRecord("白名单版本>>", dyRecord.cardverno!!)
+        kvMap[index++] = ControlParaRecord("白名单版本>>", dyRecord.cardverno ?: "null")
         kvMap[index++] = ControlParaRecord("通讯超时>>", "${CommonUtil.getCommunicateTime()}s")
         if (sysRecord!!.returnFlag and 0x1 == 1) {
             kvMap[index++] = ControlParaRecord("冲正使能>>", "启用")
diff --git a/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt b/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt
index c20049a..2516bf6 100644
--- a/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/transdtl/TransdtlActivity.kt
@@ -152,8 +152,12 @@
                 "市民卡"
             }
             val sb = StringBuilder("查询成功   \n")
-            sb.append("姓名: ").append(record.username).append("\n")
-                .append("支付方式: ").append(payWay).append("\n")
+            if (record.username != null) {
+                sb.append("姓名: ").append(record.username)
+            } else {
+                sb.append("卡号: ").append(record.cardno)
+            }
+            sb.append("\n").append("支付方式: ").append(payWay).append("\n")
                 .append(String.format("支付金额: %.02f元", record.payamt / 100.0f)).append("\n")
                 .append("支付时间: ").append(transdatetime.toString()).append("\n")
                 .append("支付结果: ").append(result)
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
index e764afa..b304c45 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlUnionDao.kt
@@ -52,22 +52,25 @@
         var cursor: Cursor? = null
         var sql = when (flag) {
             0 -> {
-                (tablesql.toString()
-                        + " where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+                ("select * from ("
+                        + tablesql.toString()
+                        + ") where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
                         + "' order by " + BeanPropEnum.TransdtlUnion.transtime
                         + " desc ")
             }
             1 -> {
-                (tablesql.toString()
-                        + " where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+                ("select * from ("
+                        + tablesql.toString()
+                        + ") where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
                         + "' and " + BeanPropEnum.TransdtlUnion.status + "='"
                         + PayStatus.SUC.toString()
                         + "' order by " + BeanPropEnum.TransdtlUnion.transtime
                         + " desc ")
             }
             else -> {
-                (tablesql.toString()
-                        + " where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
+                ("select * from ("
+                        + tablesql.toString()
+                        + ") where " + BeanPropEnum.TransdtlUnion.transdate + "='" + date
                         + "' and " + BeanPropEnum.TransdtlUnion.status + "='"
                         + PayStatus.FAIL.toString()
                         + "' order by " + BeanPropEnum.TransdtlUnion.transtime
diff --git a/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt b/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt
index c43d6d8..7706b11 100644
--- a/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt
+++ b/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt
@@ -9,14 +9,14 @@
 class CardBaseInfoBean constructor(val data: ByteArray) {
     val cardNo: String
         get() {
-            return data.copyOfRange(39, 42).decodeBCD()
+            return data.copyOfRange(39, 43).decodeBCD()
         }
     val idCard: String
         get() {
-            return data.copyOfRange(43, 60).decodeBCD()
+            return data.copyOfRange(43, 61).decodeBCD()
         }
     val expireDate: String
         get() {
-            return data.copyOfRange(61, 64).decodeBCD()
+            return data.copyOfRange(61, 65).decodeBCD()
         }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/utils/PublicDef.kt b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
index 551a3ac..b7c482f 100644
--- a/app/src/main/java/com/supwisdom/utils/PublicDef.kt
+++ b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
@@ -87,6 +87,6 @@
     /**
      *
      */
-    const val APP_ID = "3000004"
-    const val APP_SECRET = "c9ae5b4fe5014b5b9eb19e1a0797a3a3"
+    const val APP_ID = "200001"
+    const val APP_SECRET = "dc1d26c0d43e442588092c8d45c21bce"
 }
\ No newline at end of file
diff --git a/app/src/test/java/com/supwisdom/ExampleUnitTest.kt b/app/src/test/java/com/supwisdom/ExampleUnitTest.kt
index f32e492..208273c 100644
--- a/app/src/test/java/com/supwisdom/ExampleUnitTest.kt
+++ b/app/src/test/java/com/supwisdom/ExampleUnitTest.kt
@@ -1,5 +1,7 @@
 package com.supwisdom
 
+import com.supwisdom.utils.decodeHex
+import com.supwisdom.utils.encodeHex
 import org.junit.Test
 
 import org.junit.Assert.*
@@ -12,6 +14,11 @@
 class ExampleUnitTest {
     @Test
     fun addition_isCorrect() {
+        val data =
+            "055567107590FFFF6710201525002884FFFF2019061300000000000000000167102015250028842500288435333330323431393932303730343232333220991231FFFFFFFFFFFF9000".decodeHex()
+        val cardno = data.copyOfRange(39, 43).encodeHex()
+        val expire = data.copyOfRange(61, 65).encodeHex()
+        val icard = data.copyOfRange(43, 61).encodeHex()
         assertEquals(4, 2 + 2)
     }
 }
