init
diff --git a/app/build.gradle b/app/build.gradle
index 7e3ad3d..e9986f9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -57,7 +57,8 @@
     androidTestImplementation 'com.android.support.test:runner:1.0.2'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
 
-    compile 'com.alibaba:fastjson:1.1.70.android'
+//    compile 'com.alibaba:fastjson:1.1.70.android'
+    compile 'com.google.code.gson:gson:2.8.5'
     compile 'com.nineoldandroids:parent:2.4.0'
     compile 'com.squareup.okhttp3:okhttp:3.10.0'
     compile 'net.java.dev.jna:jna:4.5.0@aar'
diff --git a/app/src/main/java/com/supwisdom/activities/YktSession.kt b/app/src/main/java/com/supwisdom/activities/YktSession.kt
index 5119798..0d01687 100644
--- a/app/src/main/java/com/supwisdom/activities/YktSession.kt
+++ b/app/src/main/java/com/supwisdom/activities/YktSession.kt
@@ -58,9 +58,6 @@
         val temp = signdata.replace("null".toRegex(), "")
         val mysign = calcSignForCardPay(temp, timestamp)
         params.setParameter("sign", mysign)
-//            .setParameter("sign_method", PublicDef.signMethod)
-//            .setParameter("term_id", mSession.getTermId())
-//            .setParameter("app_id", mSession.getAppId())
             .setParameter("timestamp", timestamp)
         val url = mSession!!.getEpayurl() + uri
         return NetworkHandler.getInstance().post(url, params)
@@ -71,9 +68,6 @@
         val temp = signdata.replace("null".toRegex(), "")
         val mysign = calcSignForCardPay(temp, timestamp)
         params.setParameter("sign", mysign)
-//            .setParameter("sign_method", PublicDef.signMethod)
-//            .setParameter("term_id", mSession.getTermId())
-//            .setParameter("app_id", mSession.getAppId())
             .setParameter("timestamp", timestamp)
         val url = mSession!!.getEpayurl() + uri
         return NetworkHandler.getInstance().longPost(url, params)
diff --git a/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt b/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt
index fc520a8..f64c8cb 100644
--- a/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt
@@ -79,7 +79,7 @@
 
     private fun refresh() {
         AuxScreenController.getInstance().refreshTitle("卡库初始化")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(listOf("加载硬件驱动", "请稍等..."))
     }
 
@@ -95,7 +95,7 @@
             vResult!!.text = msg
             vResult!!.visibility = View.VISIBLE
             AuxScreenController.getInstance().refreshTitle("卡库初始化")
-            AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+            AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
             AuxScreenController.getInstance().refreshContent(listOf("请联系管理员", "加载驱动失败", "原因:", msg))
         }
         isLoading = false
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
index 59a7439..5bc4f48 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -230,7 +230,7 @@
         vShopname.text = shopname
 
         refreshLinkStatus(SPApplication.getInstance().isOnline())
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate().substring(0, 16))
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime().substring(0, 16))
         AuxScreenController.getInstance().refreshContent(Arrays.asList(" 欢迎光临!", " 请刷卡..."))
 
         val record = SPApplication.getInstance().getPos().getControlPara(PublicDef.CONTROL_FIXAMT)
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 cdef86f..96e3032 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
@@ -19,6 +19,7 @@
 import com.supwisdom.utils.GsonUtil
 import com.supwisdom.utils.PublicDef
 import org.apache.http.HttpStatus
+import java.lang.Exception
 
 /**
  ** create by zzq on 2019/7/25
@@ -82,6 +83,7 @@
             while (!isExist) {
                 if (iConsumeView.isBackRuning()) {
                     CommonUtil.doSleep(1000)
+                    doClear()
                     continue
                 }
                 CommonUtil.doSleep(100)
@@ -126,6 +128,9 @@
                 } catch (ex: CardNotFoundError) {
                     ex.printStackTrace()
                     doClear()
+                } catch (ex: Exception) {
+                    ex.printStackTrace()
+                    doClear()
                 }
             }
         }
@@ -343,7 +348,7 @@
                 curtime - lastShowTime > 1000
             ) {
                 lastShowTime = curtime
-                sendMsg(PublicDef.MSG_USER_INFO_CLEAR, DateUtil.getNowDate())
+                sendMsg(PublicDef.MSG_USER_INFO_CLEAR, DateUtil.getNowDateTime())
                 showLinkStatus()
             }
         }
diff --git a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
index 2ad9a6f..d7f5e32 100644
--- a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
@@ -140,7 +140,7 @@
 
     private fun refreshToCheckPasswd() {
         AuxScreenController.getInstance().refreshTitle("消费模式设置")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请输入商户密码:", " "))
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt b/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt
index 452db49..1d773f5 100644
--- a/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt
@@ -149,7 +149,7 @@
 
     private fun refresh() {
         AuxScreenController.getInstance().refreshTitle("通讯参数设置")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(Arrays.asList("设备第一次使用", "请联系管理员", "在大屏配置参数"))
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt b/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
index 13d527e..0b46818 100644
--- a/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
@@ -60,8 +60,8 @@
 
         val dyRecord = DynamicParaRecord()
         dyRecord.cardverno = "000000000000"
-//        dyRecord.setAppId(PublicDef.APP_ID)
-//        dyRecord.setAppSecret(PublicDef.APP_SECRET)
+        dyRecord.appid = PublicDef.APP_ID
+        dyRecord.appsecret = PublicDef.APP_SECRET
         pos.replaceDynamicPara(dyRecord)
 
         YktSession.getInstance().setWebAPISession(
diff --git a/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt b/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt
index b05cea5..1e71cf2 100644
--- a/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt
@@ -42,7 +42,7 @@
         procontent.setLength(0)
         auxList.clear()
         AuxScreenController.getInstance().refreshTitle("设备参数加载")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(auxList)
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
index 1bcbc99..f6d0578 100644
--- a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
@@ -81,7 +81,6 @@
             }
 
             // 设置通讯参数
-//            YktSession.getInstance().setSessionKey(pos.getDynamicPara().getSessionKey())
             val apiInterface = EpayApiImpl()
             try {
                 sendMessage(LOAD_PROGRESS, "加载系统参数...")
diff --git a/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt b/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt
index f5749c1..ec4b7be 100644
--- a/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/manage/ManageActivity.kt
@@ -124,7 +124,7 @@
         flag = false
         isRunning = false
         AuxScreenController.getInstance().refreshTitle("设备管理界面")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(
             Arrays.asList(
                 getString(R.string.consume_menu_shop_passwd),
diff --git a/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt b/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt
index 22daf3a..4c92368 100644
--- a/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/menu/MenuActivity.kt
@@ -138,7 +138,7 @@
             vReverse.visibility = View.GONE
         }
         AuxScreenController.getInstance().refreshTitle("设备管理界面")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(secList)
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt b/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt
index f22e796..a288b3f 100644
--- a/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/passwd/PasswdActivity.kt
@@ -138,7 +138,7 @@
         tmpPwd = ""
         passwdHint = "输入原密码"
         AuxScreenController.getInstance().refreshTitle("商户密码修改")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(Arrays.asList<String>(passwdHint, " "))
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/splash/SplashActivity.kt b/app/src/main/java/com/supwisdom/activities/splash/SplashActivity.kt
index 6e53f15..fd80a3a 100644
--- a/app/src/main/java/com/supwisdom/activities/splash/SplashActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/splash/SplashActivity.kt
@@ -39,7 +39,7 @@
 
     private fun refresh() {
         AuxScreenController.getInstance().refreshTitle("新开普智能设备")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(listOf<String>("欢迎使用智能设备"))
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/unregister/UnregisterActivity.kt b/app/src/main/java/com/supwisdom/activities/unregister/UnregisterActivity.kt
index 9ce56b4..14e8c6f 100644
--- a/app/src/main/java/com/supwisdom/activities/unregister/UnregisterActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/unregister/UnregisterActivity.kt
@@ -49,7 +49,7 @@
 
     private fun refresh(errmsg: String) {
         AuxScreenController.getInstance().refreshTitle("设备注册状态")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(listOf("设备未注册", errmsg))
     }
 
diff --git a/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt b/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
index 5e7b4c8..0640dc4 100644
--- a/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/upgrade/UpgradeActivity.kt
@@ -88,7 +88,7 @@
     private fun refresh() {
         isUpgrading = false
         AuxScreenController.getInstance().refreshTitle("应用在线升级")
-        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+        AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(
             Arrays.asList(
                 "当前版本>>", CommonUtil.getVersionName(applicationContext),
diff --git a/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt b/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt
index 3ce0ec9..d0a4d63 100644
--- a/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt
+++ b/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt
@@ -6,6 +6,6 @@
  **/
 class WhiteListRetBean : BaseResp() {
     var cardverno: String? = null
-    var maxcount: Int = 0
+    var count: Int = 0
     var whitelist: List<WhiteListItemBean>? = null
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt b/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt
index 855b57c..c43d6d8 100644
--- a/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt
+++ b/app/src/main/java/com/supwisdom/epaycard/CardBaseInfoBean.kt
@@ -9,7 +9,7 @@
 class CardBaseInfoBean constructor(val data: ByteArray) {
     val cardNo: String
         get() {
-            return data.copyOfRange(31, 42).decodeBCD()
+            return data.copyOfRange(39, 42).decodeBCD()
         }
     val idCard: String
         get() {
diff --git a/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt b/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt
index 65c313d..86f0b47 100644
--- a/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt
+++ b/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt
@@ -40,7 +40,7 @@
     }
 
     private fun readBaseInfo(): CardBaseInfoBean {
-        val res = reader.cpuApdu("00B09500".decodeHex())
+        val res = reader.cpuApdu("00B0950047".decodeHex())
         if (!res.isOK()) {
             throw CardlibValueError("读基本信息错误:${res.swToString()}")
         }
diff --git a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
index 7ce9650..bf93d9b 100644
--- a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
@@ -1,5 +1,6 @@
 package com.supwisdom.okhttp
 
+import android.text.TextUtils
 import okhttp3.*
 import java.io.IOException
 import java.io.UnsupportedEncodingException
@@ -35,8 +36,8 @@
     private val JSON = MediaType.parse("application/json; charset=utf-8")
     private val FORM_ENCODE = MediaType.parse("application/x-www-form-urlencoded;charset=utf-8")
     private var commTime = 2
-    private var clientId = "clientId"
-    private var jwt = "jwt"
+    private var clientId: String? = null
+    private var jwt: String? = null
 
     init {
         client = OkHttpClient()
@@ -75,12 +76,16 @@
         }
     }
 
-    fun setClientId(clientId: String) {
+    fun setClientId(clientId: String?) {
         this.clientId = clientId
     }
 
-    fun setJwt(jwt: String) {
-        this.jwt = jwt
+    fun setJwt(jwt: String?) {
+        if (TextUtils.isEmpty(jwt)) {
+            this.jwt = jwt
+        } else {
+            this.jwt = "Bearer $jwt"
+        }
     }
 
     private class TrustAllCerts : X509TrustManager {
@@ -115,27 +120,30 @@
         return ssfFactory
     }
 
+    private fun addExtentHeader(request: Request.Builder): Request.Builder {
+        if (!TextUtils.isEmpty(clientId)) {
+            request.addHeader("X-TENANT-ID", clientId)
+        }
+        if (!TextUtils.isEmpty(jwt)) {
+            request.addHeader("Authorization", jwt)
+        }
+        return request
+    }
 
     fun get(url: String, params: WebParams?): TransResp? {
         val request = Request.Builder()
             .url(geturl(url, params))
             .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("X-TENANT-ID", clientId)
-            .addHeader("Authorization", "Bearer $jwt")
             .addHeader("Connection", "close")
-            .build()
-        return getTransResp(request)
+        return getTransResp(addExtentHeader(request).build())
     }
 
     fun get(url: String, params: WebParams, callback: com.supwisdom.okhttp.ICallBackok<Any?>) {
         val request = Request.Builder()
             .url(geturl(url, params))
             .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("X-TENANT-ID", clientId)
-            .addHeader("Authorization", "Bearer $jwt")
             .addHeader("Connection", "close")
-            .build()
-        client!!.newCall(request).enqueue(object : Callback {
+        client!!.newCall(addExtentHeader(request).build()).enqueue(object : Callback {
             override fun onFailure(call: Call, e: IOException) {
                 callback.callback(null)
             }
@@ -165,12 +173,9 @@
         val request = Request.Builder()
             .url(url)
             .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("X-TENANT-ID", clientId)
-            .addHeader("Authorization", "Bearer $jwt")
             .addHeader("Connection", "close")
             .post(builder.build())
-            .build()
-        return getTransResp(request)
+        return getTransResp(addExtentHeader(request).build())
     }
 
     fun longPost(url: String, params: WebParams): TransResp? {
@@ -181,12 +186,9 @@
         val request = Request.Builder()
             .url(url)
             .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("X-TENANT-ID", clientId)
-            .addHeader("Authorization", "Bearer $jwt")
             .addHeader("Connection", "close")
             .post(builder.build())
-            .build()
-        return getLongTransResp(request)
+        return getLongTransResp(addExtentHeader(request).build())
     }
 
     fun post(url: String, json: String): TransResp? {
@@ -194,12 +196,9 @@
         val request = Request.Builder()
             .url(url)
             .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("X-TENANT-ID", clientId)
-            .addHeader("Authorization", "Bearer $jwt")
             .addHeader("Connection", "close")
             .post(body)
-            .build()
-        return getTransResp(request)
+        return getTransResp(addExtentHeader(request).build())
     }
 
     fun post(url: String, json: String, callback: com.supwisdom.okhttp.ICallBackok<Any?>) {
@@ -207,12 +206,9 @@
         val request = Request.Builder()
             .url(url)
             .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("X-TENANT-ID", clientId)
-            .addHeader("Authorization", "Bearer $jwt")
             .addHeader("Connection", "close")
             .post(body)
-            .build()
-        client!!.newCall(request).enqueue(object : Callback {
+        client!!.newCall(addExtentHeader(request).build()).enqueue(object : Callback {
             override fun onFailure(call: Call, e: IOException) {
                 callback.callback(null)
             }
diff --git a/app/src/main/java/com/supwisdom/okhttp/WebParams.kt b/app/src/main/java/com/supwisdom/okhttp/WebParams.kt
index 8a6beb7..559123b 100644
--- a/app/src/main/java/com/supwisdom/okhttp/WebParams.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/WebParams.kt
@@ -16,12 +16,12 @@
     }
 
     fun setParameter(name: String, value: Int?): WebParams {
-        mParameters[name] = value
+        mParameters[name] = value?.toString()
         return this
     }
 
     fun setParameter(name: String, value: Float?): WebParams {
-        mParameters[name] = value
+        mParameters[name] = value?.toString()
         return this
     }
 
diff --git a/app/src/main/java/com/supwisdom/service/AuthEpay.kt b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
index 29549fd..fc252ae 100644
--- a/app/src/main/java/com/supwisdom/service/AuthEpay.kt
+++ b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
@@ -35,13 +35,17 @@
         val url = StringBuilder()
         url.append(record!!.epayIP).append(":").append(record.epayPort)
             .append("/").append(record.epayUri)
-            .append("/api/auth/refresh/").append(record.devphyid)
+            .append("/api/auth/refresh/").append(record.devphyid).append("?")
         val resp = NetworkHandler.getInstance().get(url.toString(), null)
             ?: throw AuthEpayError("jwt刷新请求超时")
         if (resp.retcode != HttpStatus.SC_OK) {
             throw AuthEpayError("jwt刷新错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthJwtRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, AuthJwtRetBean::class.java)
+        } catch (ex: Exception) {
+            throw AuthEpayError("jwt json异常:${ex.message}")
+        }
         dealSession(retBean)
     }
 
@@ -50,16 +54,23 @@
         val url = StringBuilder()
         url.append(record!!.epayIP).append(":").append(record.epayPort)
             .append("/").append(record.epayUri)
-            .append("/api/auth/gettoken/").append(record.devphyid)
+            .append("/api/auth/gettoken/").append(record.devphyid).append("?")
+        val params = WebParams()
+        params.setParameter("appid", pos.getDynamicPara()!!.appid)
 
         NetworkHandler.getInstance().setClientId(record.devphyid!!)
+        NetworkHandler.getInstance().setJwt(null)
 
-        val resp = NetworkHandler.getInstance().get(url.toString(), null)
+        val resp = NetworkHandler.getInstance().get(url.toString(), params)
             ?: throw AuthEpayError("token请求超时")
         if (resp.retcode != HttpStatus.SC_OK) {
             throw AuthEpayError("token错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthTokenRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, AuthTokenRetBean::class.java)
+        } catch (ex: Exception) {
+            throw AuthEpayError("token json异常:${ex.message}")
+        }
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw AuthEpayError(retBean.retmsg!!)
         }
@@ -74,19 +85,23 @@
         val url = StringBuilder()
         url.append(record!!.epayIP).append(":").append(record.epayPort)
             .append("/").append(record.epayUri)
-            .append("/api/auth/authentication/").append(record.devphyid)
+            .append("/api/auth/authentication/").append(record.devphyid).append("?")
 
-        val secret = CryptUtil.HMACSHA256(token, pos.getDynamicPara()!!.appsecret!!)
+        val secret = CryptUtil.HMACSHA256(pos.getDynamicPara()!!.appsecret!!, token)
         val params = WebParams()
         params.setParameter("appid", pos.getDynamicPara()!!.appid)
-            .setParameter("app_secret", secret)
+            .setParameter("secret", secret)
 
         val resp = NetworkHandler.getInstance().get(url.toString(), params)
             ?: throw AuthEpayError("jwt请求超时")
         if (resp.retcode != HttpStatus.SC_OK) {
             throw AuthEpayError("jwt错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthJwtRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, AuthJwtRetBean::class.java)
+        } catch (ex: Exception) {
+            throw AuthEpayError("jwt json异常:${ex.message}")
+        }
         dealSession(retBean)
     }
 
@@ -105,7 +120,11 @@
         if (resp.retcode != HttpStatus.SC_OK) {
             throw AuthEpayError("错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, AuthRetBean::class.java)
+        } catch (ex: Exception) {
+            throw AuthEpayError("json异常:${ex.message}")
+        }
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw AuthEpayError(retBean.retmsg!!)
         }
@@ -123,7 +142,6 @@
 
         val dyRecord = pos.getDynamicPara()
         dyRecord!!.jwt = bean.jwt
-        //TODO
         dyRecord.jwtExpire = DateUtil.utcToLocal(bean.expiredAt!!)
         if (!pos.replaceDynamicPara(dyRecord)) {
             throw AuthEpayError("保存参数失败")
diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index 446fab4..517819d 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -40,7 +40,11 @@
         if (resp.retcode != HttpStatus.SC_OK) {
             throw HeartBeatError("错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, HeartBeatRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, HeartBeatRetBean::class.java)
+        } catch (ex: Exception) {
+            throw HeartBeatError("json异常:${ex.message}")
+        }
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw HeartBeatError(retBean.retmsg!!)
         }
@@ -82,21 +86,26 @@
         if (resp.retcode != HttpStatus.SC_OK) {
             throw SysParaError("错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, SystemParaRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, SystemParaRetBean::class.java)
+        } catch (ex: Exception) {
+            throw SysParaError("json异常:${ex.message}")
+        }
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw SysParaError(retBean.retmsg!!)
         }
         val record = pos.getSysPara() ?: SysParaRecord()
         retBean.syspara?.forEach {
             when {
-                it.paraname == "heartbeat" -> record.heatBeat = it.paraval!!.toInt()
-                it.paraname == "returnFlag" -> record.returnFlag = it.paraval!!.toInt()
-                it.paraname == "sucShowtime" -> record.sucShowtime = it.paraval!!.toInt()
-                it.paraname == "failShowtime" -> record.failShowtime = it.paraval!!.toInt()
-                it.paraname == "fixpayGap" -> record.fixpayGap = it.paraval!!.toInt()
-                it.paraname == "mngPasswd" -> record.mngPasswd = it.paraval
-                it.paraname == "offlineEnable" -> record.offlineEnable = it.paraval == "true"
-                it.paraname == "maxOfflineDays" -> record.maxOfflineDays = it.paraval!!.toInt()
+                it.paraname == "heat_beat" -> record.heatBeat = it.paraval!!.toInt()
+                it.paraname == "return_flag" -> record.returnFlag = it.paraval!!.toInt()
+                it.paraname == "consume_show_time" -> record.sucShowtime = it.paraval!!.toInt()
+                it.paraname == "consume_fail_show_time" -> record.failShowtime = it.paraval!!.toInt()
+                it.paraname == "fixpay_consume_gap" -> record.fixpayGap = it.paraval!!.toInt()
+                it.paraname == "manage_passwd" -> record.mngPasswd = it.paraval
+                it.paraname == "offline_flag" -> record.offlineEnable = it.paraval == "1"
+                it.paraname == "max_offline_days" -> record.maxOfflineDays = it.paraval!!.toInt()
+                it.paraname == "communicate_time" -> record.commTime = it.paraval!!.toInt()
             }
         }
         if (!pos.replaceSysPara(record)) {
@@ -106,22 +115,29 @@
 
     @Throws(WhiteListError::class)
     override fun downloadWhitelist(maxCardverno: String) {
-        val count = 20
+        val maxcount = 20
         do {
             val params = WebParams()
             params.setParameter("devphyid", pos.getConfigPara()!!.devphyid)
                 .setParameter("cardverno", pos.getDynamicPara()!!.cardverno)
-                .setParameter("maxcount", count)
+                .setParameter("maxcount", maxcount)
 
             val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/whitelist", "", params)
                 ?: throw WhiteListError("请求超时")
             if (resp.retcode != HttpStatus.SC_OK) {
                 throw WhiteListError("错误码=${resp.retcode}")
             }
-            val retBean = GsonUtil.GsonToBean(resp.retjson!!, WhiteListRetBean::class.java)
+            val retBean = try {
+                GsonUtil.GsonToBean(resp.retjson!!, WhiteListRetBean::class.java)
+            } catch (ex: Exception) {
+                throw WhiteListError("json异常:${ex.message}")
+            }
             if (retBean.retcode != PublicDef.SUCCESS) {
                 throw WhiteListError(retBean.retmsg!!)
             }
+            if (retBean.count != retBean.whitelist?.size) {
+                throw WhiteListError("白名单数量不对[${retBean.count},${retBean.whitelist?.size}]")
+            }
             val list = ArrayList<WhiteListRecord>()
             retBean.whitelist?.forEach {
                 val record = WhiteListRecord()
@@ -139,7 +155,7 @@
             if (!pos.replaceDynamicPara(dyRecord)) {
                 throw WhiteListError("保存参数失败")
             }
-        } while (retBean.maxcount == count)
+        } while (retBean.count == maxcount)
     }
 
     @Throws(TransdtlUploadError::class)
@@ -172,7 +188,11 @@
         if (resp.retcode != HttpStatus.SC_OK) {
             throw TransdtlUploadError("错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
+        } catch (ex: Exception) {
+            throw TransdtlUploadError("json异常:${ex.message}")
+        }
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw TransdtlUploadError(retBean.retmsg!!)
         }
@@ -210,7 +230,11 @@
         if (resp.retcode != HttpStatus.SC_OK) {
             throw TransdtlUploadError("错误码=${resp.retcode}")
         }
-        val retBean = GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
+        val retBean = try {
+            GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
+        } catch (ex: Exception) {
+            throw TransdtlUploadError("json异常:${ex.message}")
+        }
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw TransdtlUploadError(retBean.retmsg!!)
         }
diff --git a/app/src/main/java/com/supwisdom/service/WebsocketProcess.kt b/app/src/main/java/com/supwisdom/service/WebsocketProcess.kt
index 53eafa3..2a8ca33 100644
--- a/app/src/main/java/com/supwisdom/service/WebsocketProcess.kt
+++ b/app/src/main/java/com/supwisdom/service/WebsocketProcess.kt
@@ -2,7 +2,6 @@
 
 import android.os.Handler
 import android.os.Message
-import com.alibaba.fastjson.JSONObject
 import com.koushikdutta.async.callback.CompletedCallback
 import com.koushikdutta.async.future.Future
 import com.koushikdutta.async.http.AsyncHttpClient
@@ -10,10 +9,7 @@
 import com.supwisdom.activities.SPApplication
 import com.supwisdom.db.Pos
 import com.supwisdom.utils.CommonUtil
-import com.supwisdom.utils.DateUtil
 import com.supwisdom.utils.LogUtil
-import com.supwisdom.utils.PublicDef
-import java.util.*
 
 /**
  ** create by zzq on 2019/7/23
diff --git a/app/src/main/java/com/supwisdom/utils/DateUtil.kt b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
index a134bac..c93d962 100644
--- a/app/src/main/java/com/supwisdom/utils/DateUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
@@ -133,17 +133,17 @@
 
     fun utcToLocal(utctime: String): String {
         val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
-        sdf.timeZone = TimeZone.getTimeZone("TUC")
-        try {
+        sdf.timeZone = TimeZone.getTimeZone("UTC")
+        return try {
             val utcDate = sdf.parse(utctime)
             sdf.timeZone = TimeZone.getDefault()
             val localTime = sdf.format(utcDate.time)
             val localDate = sdf.parse(localTime)
-            System.out.println("test")
+            FORMAT_yyyyMMddHHmmss.format(localDate.time)
         } catch (ex: ParseException) {
             ex.printStackTrace()
+            ""
         }
-        return ""
     }
 
 
@@ -240,6 +240,13 @@
     }
 
     /**
+     * @return yyyy-MM-dd HH:mm:ss
+     */
+    fun getNowDateTime(): String {
+        return FORMAT_yyyy_MM_dd_HH_mm_ss.format(Date())
+    }
+
+    /**
      * @return yyyy-MM-dd
      */
     fun getNowDate(): String {
@@ -247,22 +254,10 @@
     }
 
     /**
-     * @return yyyy-MM-dd
-     */
-    fun getNowDate2(date: Date): String? {
-        try {
-            return FORMAT_yyyy_MM_dd.format(date)
-        } catch (e: Exception) {
-            e.printStackTrace()
-        }
-        return null
-    }
-
-    /**
      * @param dateStr yyyy-MM-dd
      * @return
      */
-    fun getNowDate(dateStr: String): Date? {
+    fun getNowDateTime(dateStr: String): Date? {
         try {
             return FORMAT_yyyy_MM_dd.parse(dateStr)
         } catch (e: ParseException) {
diff --git a/app/src/main/java/com/supwisdom/utils/GsonUtil.kt b/app/src/main/java/com/supwisdom/utils/GsonUtil.kt
index 2c6d722..12e9209 100644
--- a/app/src/main/java/com/supwisdom/utils/GsonUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/GsonUtil.kt
@@ -1,12 +1,14 @@
 package com.supwisdom.utils
 
-import com.alibaba.fastjson.JSON
+import com.google.gson.Gson
 
 /**
  ** create by zzq on 2019/7/24
  ** @desc
  **/
 object GsonUtil {
+    private val gson = Gson()
+
     /**
      * 转成json
      *
@@ -14,7 +16,8 @@
      * @return
      */
     fun GsonString(obj: Any): String {
-        return JSON.toJSONString(obj)
+        return gson.toJson(obj)
+//        return JSON.toJSONString(obj)
     }
 
     /**
@@ -25,6 +28,7 @@
      * @return
      */
     fun <T> GsonToBean(gsonString: String, cls: Class<T>): T {
-        return JSON.parseObject(gsonString, cls)
+        return gson.fromJson(gsonString, cls)
+//        return JSON.parseObject(gsonString, cls)
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/utils/LogUtil.kt b/app/src/main/java/com/supwisdom/utils/LogUtil.kt
index 75b8079..210fbd1 100644
--- a/app/src/main/java/com/supwisdom/utils/LogUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/LogUtil.kt
@@ -33,7 +33,7 @@
     }
 
     private fun writeLog(tag: String, msg: String) {
-        val time = DateUtil.getNowDate() + "--"
+        val time = DateUtil.getNowDateTime() + "--"
         FileUtil.writeLogFile("$tag:$time--$msg")
     }
 }
\ 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 0ac5f89..b67e05b 100644
--- a/app/src/main/java/com/supwisdom/utils/PublicDef.kt
+++ b/app/src/main/java/com/supwisdom/utils/PublicDef.kt
@@ -83,4 +83,9 @@
      * 消费冲正时限
      */
     const val REVERSE_MS_GAP = 600000
+    /**
+     *
+     */
+    const val APP_ID = "3000004"
+    const val APP_SECRET = "c9ae5b4fe5014b5b9eb19e1a0797a3a3"
 }
\ No newline at end of file