diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
index 6f501b0..9f700d0 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
@@ -210,7 +210,7 @@
             resp = consumeApi.payConfirm(onlRecord)
             result = parseConfirmResult(resp)
             if (result) {
-                showSucInfo()
+                showOnlSucInfo()
             }
             updateTransdtlOnline(result)
             return result
@@ -246,7 +246,6 @@
             }
             onlRecord.payamt = retBean.amount
             onlRecord.extraamt = retBean.extraamt
-            onlRecord.balance = retBean.balance
             return true
         }
 
@@ -287,6 +286,7 @@
             initTransdtlOffline()
             checkCardValid()
             updateTransdtlOffline(true)
+            showOffSucInfo()
         }
 
         private fun checkCardValid() {
@@ -354,6 +354,18 @@
             asyncUpload(offRecord)
         }
 
+        private fun showOffSucInfo() {
+            val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
+            info.showtime = pos.getSysPara()!!.sucShowtime
+            info.amount = offRecord.payamt
+            info.payamt = offRecord.payamt
+            info.username = offRecord.cardno
+            info.datetime = offRecord.transdate + offRecord.transtime
+            info.payway = "card"
+            info.status = PayStatus.SUC
+            sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
+        }
+
         private fun asyncUpload(dtl: TransdtlOfflineRecord) {
             ThreadPool.getShortPool().execute(Runnable {
                 try {
@@ -404,7 +416,7 @@
             }
         }
 
-        private fun showSucInfo() {
+        private fun showOnlSucInfo() {
             val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
             info.amount = onlRecord.payamt
@@ -413,7 +425,6 @@
             info.datetime = onlRecord.transdate + onlRecord.transtime
             info.payway = onlRecord.transtype
             info.status = PayStatus.SUC
-            info.balance = onlRecord.balance
             sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
         }
 
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
index f69e698..e301655 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
@@ -102,7 +102,6 @@
         }
         codeRecord.payamt = retBean.amount
         codeRecord.extraamt = retBean.extraamt
-        codeRecord.balance = retBean.balance
         return true
     }
 
@@ -175,7 +174,6 @@
         info.datetime = codeRecord.transdate + codeRecord.transtime
         info.payway = codeRecord.transtype
         info.status = PayStatus.SUC
-        info.balance = codeRecord.balance
         sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
     }
 
diff --git a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
index 7f855d2..9dcdb3e 100644
--- a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
+++ b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
@@ -43,6 +43,7 @@
         paragroupid,
         cardverno,
         jwt,
+        jwtexpire,
         token
     }
 
@@ -64,7 +65,6 @@
         extraamt,
         managefeetype,
         username,
-        balance,
         billno,
         reversalflag,
         reversalbillno,
diff --git a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
index e742c04..0ff6802 100644
--- a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
+++ b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
@@ -64,6 +64,7 @@
             + BeanPropEnum.DynamicPara.paragroupid + " integer, "
             + BeanPropEnum.DynamicPara.cardverno + " char(14),"
             + BeanPropEnum.DynamicPara.jwt + " varchar(254),"
+            + BeanPropEnum.DynamicPara.jwtexpire + " varchar(16),"
             + BeanPropEnum.DynamicPara.token + " varchar(32) )")
     private val DROP_TABLE_NAME_DYNAMICPARA = "DROP TABLE IF EXISTS $TABLE_NAME_DYNAMICPARA"
     private val CREATE_TABLE_NAME_SYSPARA = ("create table IF NOT EXISTS "
diff --git a/app/src/main/java/com/supwisdom/db/DBTransdtlHelper.kt b/app/src/main/java/com/supwisdom/db/DBTransdtlHelper.kt
index aadfb8d..328f06d 100644
--- a/app/src/main/java/com/supwisdom/db/DBTransdtlHelper.kt
+++ b/app/src/main/java/com/supwisdom/db/DBTransdtlHelper.kt
@@ -46,7 +46,6 @@
             + BeanPropEnum.TransdtlOnline.transtype + " varchar(8),"
             + BeanPropEnum.TransdtlOnline.payamt + " integer,"
             + BeanPropEnum.TransdtlOnline.extraamt + " integer,"
-            + BeanPropEnum.TransdtlOnline.balance + " integer,"
             + BeanPropEnum.TransdtlOnline.managefeetype + " varchar(10),"
             + BeanPropEnum.TransdtlOnline.username + " varchar(32),"
             + BeanPropEnum.TransdtlOnline.billno + " varchar(32),"
diff --git a/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt b/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt
index 20ab20d..5c6b0fb 100644
--- a/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt
+++ b/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt
@@ -93,6 +93,7 @@
         record.paragroupid = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.DynamicPara.paragroupid.toString()))
         record.cardverno = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.cardverno.toString()))
         record.jwt = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.jwt.toString()))
+        record.jwtExpire = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.jwtexpire.toString()))
         record.token = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.token.toString()))
         return record
     }
@@ -112,6 +113,7 @@
         values.put(BeanPropEnum.DynamicPara.cardverno.toString(), record.cardverno)
         values.put(BeanPropEnum.DynamicPara.jwt.toString(), record.jwt)
         values.put(BeanPropEnum.DynamicPara.token.toString(), record.token)
+        values.put(BeanPropEnum.DynamicPara.jwtexpire.toString(), record.jwtExpire)
         return values
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt b/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt
index 063c6e7..9d3d760 100644
--- a/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt
+++ b/app/src/main/java/com/supwisdom/db/TransdtlOnlineDao.kt
@@ -133,7 +133,6 @@
         record.username = cursor.getString(cursor.getColumnIndex(BeanPropEnum.TransdtlOnline.username.toString()))
         record.payamt = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.TransdtlOnline.payamt.toString()))
         record.extraamt = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.TransdtlOnline.extraamt.toString()))
-        record.balance = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.TransdtlOnline.balance.toString()))
         var flag = cursor.getString(cursor.getColumnIndex(BeanPropEnum.TransdtlOnline.reversalflag.toString()))
         when (flag) {
             ReversalFlag.NONE.toString() -> record.reversalflag = ReversalFlag.NONE
@@ -166,7 +165,6 @@
         values.put(BeanPropEnum.TransdtlOnline.transtype.toString(), record.transtype)
         values.put(BeanPropEnum.TransdtlOnline.payamt.toString(), record.payamt)
         values.put(BeanPropEnum.TransdtlOnline.extraamt.toString(), record.extraamt)
-        values.put(BeanPropEnum.TransdtlOnline.balance.toString(), record.balance)
         values.put(BeanPropEnum.TransdtlOnline.billno.toString(), record.billno)
         values.put(BeanPropEnum.TransdtlOnline.managefeetype.toString(), record.managefeetype)
         values.put(BeanPropEnum.TransdtlOnline.username.toString(), record.username)
diff --git a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
index 97cfa84..b2b0d6e 100644
--- a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
@@ -16,7 +16,6 @@
     var payamt: Int = 0
     var extraamt: Int = 0
     var managefeetype: String? = null // none,discount,mealer
-    var balance: Int? = null
     var username: String? = null
     //    var userid: Int = 0
     var billno: String? = null
diff --git a/app/src/main/java/com/supwisdom/service/AuthEpay.kt b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
index fc252ae..9b534e8 100644
--- a/app/src/main/java/com/supwisdom/service/AuthEpay.kt
+++ b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
@@ -72,7 +72,7 @@
             throw AuthEpayError("token json异常:${ex.message}")
         }
         if (retBean.retcode != PublicDef.SUCCESS) {
-            throw AuthEpayError(retBean.retmsg!!)
+            throw AuthEpayError(retBean.retmsg ?: "错误码:${retBean.retcode}")
         }
         if (TextUtils.isEmpty(retBean.token)) {
             throw AuthEpayError("token不能为空")
@@ -126,7 +126,7 @@
             throw AuthEpayError("json异常:${ex.message}")
         }
         if (retBean.retcode != PublicDef.SUCCESS) {
-            throw AuthEpayError(retBean.retmsg!!)
+            throw AuthEpayError(retBean.retmsg ?: "错误码:${retBean.retcode}")
         }
         return retBean
     }
diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index ae6fd09..a7fb734 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -46,7 +46,7 @@
             throw HeartBeatError("json异常:${ex.message}")
         }
         if (retBean.retcode != PublicDef.SUCCESS) {
-            throw HeartBeatError(retBean.retmsg!!)
+            throw HeartBeatError(retBean.retmsg ?: "错误码:${retBean.retcode}")
         }
         if (cardverno < retBean.cardverno!!) {
             try {
@@ -92,7 +92,7 @@
             throw SysParaError("json异常:${ex.message}")
         }
         if (retBean.retcode != PublicDef.SUCCESS) {
-            throw SysParaError(retBean.retmsg!!)
+            throw SysParaError(retBean.retmsg ?: "错误码:${retBean.retcode}")
         }
         val record = pos.getSysPara() ?: SysParaRecord()
         retBean.syspara?.forEach {
@@ -133,7 +133,7 @@
                 throw WhiteListError("json异常:${ex.message}")
             }
             if (retBean.retcode != PublicDef.SUCCESS) {
-                throw WhiteListError(retBean.retmsg!!)
+                throw WhiteListError(retBean.retmsg ?: "错误码:${retBean.retcode}")
             }
             if (retBean.count != retBean.whitelist?.size) {
                 throw WhiteListError("白名单数量不对[${retBean.count},${retBean.whitelist?.size}]")
@@ -193,7 +193,7 @@
             throw TransdtlUploadError("json异常:${ex.message}")
         }
         if (retBean.retcode != PublicDef.SUCCESS) {
-            throw TransdtlUploadError(retBean.retmsg!!)
+            throw TransdtlUploadError(retBean.retmsg ?: "错误码:${retBean.retcode}")
         }
         if (retBean.termseqno != record.devseqno) {
             throw TransdtlUploadError("返回流水号不一致")
@@ -235,7 +235,7 @@
             throw TransdtlUploadError("json异常:${ex.message}")
         }
         if (retBean.retcode != PublicDef.SUCCESS) {
-            throw TransdtlUploadError(retBean.retmsg!!)
+            throw TransdtlUploadError(retBean.retmsg ?: "错误码:${retBean.retcode}")
         }
         if (retBean.termseqno != record.devseqno) {
             throw TransdtlUploadError("返回流水号不一致")
