冲正
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 ceb15e8..01245b0 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -256,13 +256,20 @@
     private fun dealIntent() {
         amount = this.intent.getIntExtra("amount", 0)
         payWay = this.intent.getStringExtra("payway")
+        val operation = this.intent.getStringExtra("operation")
+        if (operation == "reverse") {
+            presenter.clickToReverse(amount)
+            dialogPurchase!!.show("等待冲正", CommonUtil.showFormatAmount("金额:", amount))
+        }
         this.intent.putExtra("amount", "0")
         this.intent.putExtra("payway", "")
+        this.intent.putExtra("operation", "")
     }
 
     override fun onNewIntent(intent: Intent) {
         this.intent.putExtra("amount", intent.getStringExtra("amount"))
         this.intent.putExtra("payway", intent.getStringExtra("payway"))
+        this.intent.putExtra("operation", intent.getStringExtra("operation"))
     }
 
     private fun refresh() {
@@ -289,6 +296,7 @@
             try {
                 amount = Integer.parseInt(record.paraval)
                 amountTxt.text = String.format("%.02f", amount / 100.0f)
+                payStatusEnable = true
                 presenter.clickToPay(amount)
                 showDialogPay()
             } catch (ex: Exception) {
@@ -428,6 +436,7 @@
             AuxScreenController.getInstance()
                 .refreshContent(Arrays.asList("等待付款", CommonUtil.showFormatAmount("金额", amount)))
             amountTxt.text = String.format("%.02f", amount / 100.0f)
+            payStatusEnable = true
             presenter.clickToPay(amount)
             showDialogPay()
         } else {
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 64f34f5..ffa329b 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
@@ -98,6 +98,13 @@
                                 doConsume()
                             } catch (ex: CardPayFailError) {
                                 sendMsg(PublicDef.MSG_CARD_PAY_FAIL, getErrorInfo(ex.message))
+                            } catch (ex: Exception) {
+                                ex.printStackTrace()
+                                LogUtil.d(
+                                    TAG, "card pay exception: cardphyid=$cardphyid"
+                                            + "exception=${CommonUtil.getExceptionStack(ex)}"
+                                )
+                                sendMsg(PublicDef.MSG_CARD_PAY_FAIL, getErrorInfo("程序异常"))
                             }
                             clickStat = ClickStat.INIT
                         }
@@ -106,6 +113,13 @@
                                 doReverse()
                             } catch (ex: CardPayCancelFailError) {
                                 sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getErrorInfo(ex.message))
+                            } catch (ex: Exception) {
+                                ex.printStackTrace()
+                                LogUtil.d(
+                                    TAG, "card pay cancel exception: cardphyid=$cardphyid"
+                                            + "exception=${CommonUtil.getExceptionStack(ex)}"
+                                )
+                                sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getErrorInfo("程序异常"))
                             }
                             clickStat = ClickStat.INIT
                         }
@@ -213,7 +227,8 @@
             saveTransdtlOnlineReverse(record)
             showRvsSucInfo(
                 onlRvsRecord.payamt,
-                onlRvsRecord.username!!,
+                onlRvsRecord.username,
+                onlRvsRecord.cardno,
                 onlRvsRecord.transdate + onlRvsRecord.transtime
             )
             asyncUpload(onlRvsRecord)
@@ -223,7 +238,12 @@
             val record = pos.getTransdtlOfflineLast() ?: throw CardPayCancelFailError("未找到离线记录")
             checkOfflineReverseVaild(unionRecord, record)
             saveTransdtlOfflineReverse(record)
-            showRvsSucInfo(offRvsRecord.payamt, offRvsRecord.cardno!!, offRvsRecord.transdate + onlRvsRecord.transtime)
+            showRvsSucInfo(
+                offRvsRecord.payamt,
+                null,
+                offRvsRecord.cardno,
+                offRvsRecord.transdate + onlRvsRecord.transtime
+            )
             asyncUpload(offRvsRecord)
         }
 
@@ -315,7 +335,12 @@
             resp = consumeApi.payConfirm(onlRecord)
             result = parseConfirmResult(resp)
             if (result) {
-                showRvsSucInfo(onlRecord.payamt, onlRecord.username!!, onlRecord.transdate + onlRecord.transtime)
+                showRvsSucInfo(
+                    onlRecord.payamt,
+                    onlRecord.username,
+                    onlRecord.cardno,
+                    onlRecord.transdate + onlRecord.transtime
+                )
             }
             updateTransdtlOnline(result)
             return result
@@ -331,8 +356,6 @@
                 throw CardPayFailError(retBean.retmsg!!)
             }
             onlRecord.billno = retBean.billno
-            onlRecord.username = retBean.username
-//            onlRecord.userid = retBean.userid
             return true
         }
 
@@ -391,7 +414,7 @@
             initTransdtlOffline()
             checkCardValid()
             updateTransdtlOffline(true)
-            showSucInfo(offRecord.payamt, offRecord.cardno!!, offRecord.transdate + offRecord.transtime)
+            showSucInfo(offRecord.payamt, null, offRecord.cardno, offRecord.transdate + offRecord.transtime)
         }
 
         private fun checkCardValid() {
@@ -459,24 +482,26 @@
             asyncUpload(offRecord)
         }
 
-        private fun showSucInfo(amount: Int, username: String, datetime: String) {
+        private fun showSucInfo(amount: Int, username: String?, cardno: String?, datetime: String) {
             val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
             info.amount = amount
             info.payamt = amount
             info.username = username
+            info.cardno = cardno
             info.datetime = datetime
             info.payway = "card"
             info.status = PayStatus.SUC
             sendMsg(PublicDef.MSG_CARD_PAY_SUC, info)
         }
 
-        private fun showRvsSucInfo(amount: Int, username: String, datetime: String) {
+        private fun showRvsSucInfo(amount: Int, username: String?, cardno: String?, datetime: String) {
             val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
             info.amount = amount
             info.payamt = amount
             info.username = username
+            info.cardno = cardno
             info.datetime = datetime
             info.payway = "card"
             info.status = PayStatus.SUC
diff --git a/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt b/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
index cbfac25..68b8dd6 100644
--- a/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/menu/MenuPresenter.kt
@@ -108,6 +108,7 @@
         intent.putExtra("datetime", DateUtil.getNowDateNoFormat())
         intent.putExtra("amount", record.payamt.toString())
         intent.putExtra("payway", record.payway)
+        intent.putExtra("operation", "reverse")
         intent.setClass(iMenuView.getActivity(), ConsumeActivity::class.java)
         iMenuView.getActivity().startActivity(intent)
     }
diff --git a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
index 5eb7e1a..584e629 100644
--- a/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/TransdtlOnlineRecord.kt
@@ -19,7 +19,6 @@
     var extraamt: Int = 0
     var managefeetype: String? = null // none,discount,mealer
     var username: String? = null
-    //    var userid: Int = 0
     var billno: String? = null
     var reversalflag: ReversalFlag? = null //消费none 自动冲正auto 手动撤销 manual
     var reversalbillno: String? = null //被冲正交易参考号
diff --git a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
index bf93d9b..5e3f70c 100644
--- a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
@@ -121,6 +121,8 @@
     }
 
     private fun addExtentHeader(request: Request.Builder): Request.Builder {
+        request.addHeader("Accept", "application/json; q=0.5")
+            .addHeader("Connection", "close")
         if (!TextUtils.isEmpty(clientId)) {
             request.addHeader("X-TENANT-ID", clientId)
         }
@@ -133,16 +135,12 @@
     fun get(url: String, params: WebParams?): TransResp? {
         val request = Request.Builder()
             .url(geturl(url, params))
-            .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("Connection", "close")
         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("Connection", "close")
         client!!.newCall(addExtentHeader(request).build()).enqueue(object : Callback {
             override fun onFailure(call: Call, e: IOException) {
                 callback.callback(null)
@@ -172,8 +170,6 @@
         }
         val request = Request.Builder()
             .url(url)
-            .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("Connection", "close")
             .post(builder.build())
         return getTransResp(addExtentHeader(request).build())
     }
@@ -185,8 +181,6 @@
         }
         val request = Request.Builder()
             .url(url)
-            .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("Connection", "close")
             .post(builder.build())
         return getLongTransResp(addExtentHeader(request).build())
     }
@@ -195,8 +189,6 @@
         val body = RequestBody.create(JSON, json)
         val request = Request.Builder()
             .url(url)
-            .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("Connection", "close")
             .post(body)
         return getTransResp(addExtentHeader(request).build())
     }
@@ -205,8 +197,6 @@
         val body = RequestBody.create(JSON, json)
         val request = Request.Builder()
             .url(url)
-            .addHeader("Accept", "application/json; q=0.5")
-            .addHeader("Connection", "close")
             .post(body)
         client!!.newCall(addExtentHeader(request).build()).enqueue(object : Callback {
             override fun onFailure(call: Call, e: IOException) {
diff --git a/app/src/main/java/com/supwisdom/service/AuthEpay.kt b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
index 9b534e8..1e4ef62 100644
--- a/app/src/main/java/com/supwisdom/service/AuthEpay.kt
+++ b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
@@ -35,7 +35,7 @@
         val url = StringBuilder()
         url.append(record!!.epayIP).append(":").append(record.epayPort)
             .append("/").append(record.epayUri)
-            .append("/api/auth/refresh/").append(record.devphyid).append("?")
+            .append("/api/auth/refresh")
         val resp = NetworkHandler.getInstance().get(url.toString(), null)
             ?: throw AuthEpayError("jwt刷新请求超时")
         if (resp.retcode != HttpStatus.SC_OK) {
diff --git a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
index 8c8d0c5..287293c 100644
--- a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
+++ b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
@@ -8,12 +8,15 @@
 import com.supwisdom.utils.CommonUtil
 import com.supwisdom.utils.DateUtil
 import com.supwisdom.utils.FileUtil
+import com.supwisdom.utils.LogUtil
+import java.lang.Exception
 
 /**
  ** create by zzq on 2019/7/23
  ** @desc
  **/
 class BackgroundTaskService : Thread() {
+    private val TAG = "BackgroundTaskService"
     private val pos = SPApplication.getInstance().getPos()
     private var apiInterface: APIInterface = EpayApiImpl()
     private var sysRecord: SysParaRecord? = null
@@ -34,10 +37,13 @@
     override fun run() {
         var heartgap: Int
         while (!isExist) {
-            //做一卡通心跳和流水上传
-            heartAndTransdtl()
-            //清除流水
-            clearTransdtl()
+            try {
+                heartAndTransdtl()
+                clearTransdtl()
+            } catch (ex: Exception) {
+                ex.printStackTrace()
+                LogUtil.d(TAG, CommonUtil.getExceptionStack(ex))
+            }
             sysRecord = pos.getSysPara()
             heartgap = if (sysRecord == null || sysRecord!!.heatBeat < 10 || sysRecord!!.heatBeat > 600) {
                 60
diff --git a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
index 39b5806..f0611f4 100644
--- a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
+++ b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
@@ -18,13 +18,14 @@
  ** create by zzq on 2019/7/26
  ** @desc 消费弹窗
  **/
+@Suppress("DEPRECATION")
 class DialogPurchase constructor(context: Context, callBack: ICallBack) : DialogBase(context), IDecoderAcquirer {
     private val TAG = "DialogPurchase"
     private val callBack = callBack
     private var vCount: TextView
     private var vPayhint: TextView
     private var vPayamt: TextView
-    private var vBalance: TextView
+    private var vUsername: TextView
     private var posDec: PosDecoder? = null
     private var lastFixpayDecoderOpenTime: Long = 0
     private val waitTime = 60
@@ -38,7 +39,7 @@
         vCount = this.findViewById(R.id.tv_close_count) as TextView
         vPayhint = this.findViewById(R.id.tv_pay_hint) as TextView
         vPayamt = this.findViewById(R.id.tv_pay_amount) as TextView
-        vBalance = this.findViewById(R.id.tv_pay_balance) as TextView
+        vUsername = this.findViewById(R.id.tv_pay_username) as TextView
 
         posDec = PosDecoder(this)
     }
@@ -74,11 +75,11 @@
 
     fun show(hint: String, amount: String) {
         vPayhint.text = hint
-        vPayhint.setTextColor(Color.BLACK)
+        vPayhint.setTextColor(context.resources.getColor(R.color.blue))
         vPayamt.text = amount
         vPayamt.visibility = View.VISIBLE
 
-        vBalance.visibility = View.GONE
+        vUsername.visibility = View.GONE
         show()
         asyncOpenDecoder()
         resetCounter(waitTime)
@@ -90,7 +91,7 @@
         vPayamt.text = amount
         vPayamt.visibility = View.VISIBLE
 
-        vBalance.visibility = View.GONE
+        vUsername.visibility = View.GONE
         resetCounter(waitTime)
     }
 
@@ -99,12 +100,8 @@
         vPayhint.setTextColor(Color.GREEN)
         vPayamt.text = CommonUtil.showFormatAmount("金额", info.payamt)
         vPayamt.visibility = View.VISIBLE
-        if (info.balance == null) {
-            vBalance.visibility = View.GONE
-        } else {
-            vBalance.text = CommonUtil.showFormatAmount("余额", info.balance!!)
-            vBalance.visibility = View.VISIBLE
-        }
+        vUsername.text = "姓名: ${info.username ?: info.cardno}"
+        vUsername.visibility = View.VISIBLE
         show()
         resetCounter(info.showtime)
     }
@@ -114,7 +111,7 @@
         vPayhint.setTextColor(Color.RED)
         vPayamt.text = info.retmsg
         vPayamt.visibility = View.VISIBLE
-        vBalance.visibility = View.GONE
+        vUsername.visibility = View.GONE
         show()
         resetCounter(info.showtime)
     }
@@ -124,7 +121,7 @@
         vPayhint.setTextColor(Color.GREEN)
         vPayamt.text = CommonUtil.showFormatAmount("金额", info.amount)
         vPayamt.visibility = View.VISIBLE
-        vBalance.visibility = View.GONE
+        vUsername.visibility = View.GONE
         show()
         resetCounter(info.showtime)
     }
@@ -134,7 +131,7 @@
         vPayhint.setTextColor(Color.RED)
         vPayamt.text = info.retmsg
         vPayamt.visibility = View.VISIBLE
-        vBalance.visibility = View.GONE
+        vUsername.visibility = View.GONE
         show()
         resetCounter(info.showtime)
     }
diff --git a/app/src/main/res/layout/activity_consume.xml b/app/src/main/res/layout/activity_consume.xml
index 44ed9bd..08a845f 100644
--- a/app/src/main/res/layout/activity_consume.xml
+++ b/app/src/main/res/layout/activity_consume.xml
@@ -110,7 +110,6 @@
                     android:padding="@dimen/consume_text_pad_size">
 
                 <TextView
-                        android:id="@+id/tv_consume_hint"
                         android:layout_width="260dp"
                         android:layout_height="match_parent"
                         android:gravity="start|center"
diff --git a/app/src/main/res/layout/dialog_purchase.xml b/app/src/main/res/layout/dialog_purchase.xml
index e43ef15..bb9a98a 100644
--- a/app/src/main/res/layout/dialog_purchase.xml
+++ b/app/src/main/res/layout/dialog_purchase.xml
@@ -32,22 +32,20 @@
                     style="@style/purchase_tv_text_hint_style"
                     android:text="消费成功"
                     android:textColor="@color/light_green"/>
-
+            <TextView
+                    android:id="@+id/tv_pay_username"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="姓名:  张三"
+                    android:textColor="@color/blue"
+                    android:textSize="@dimen/ordinary_consume_text_size"/>
             <TextView
                     android:id="@+id/tv_pay_amount"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:text="金额:  10.00元"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/ordinary_consume_text_size"/>
-
-            <TextView
-                    android:id="@+id/tv_pay_balance"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="余额:  123.00元"
-                    android:textColor="@color/black"
+                    android:textColor="@color/blue"
                     android:textSize="@dimen/ordinary_consume_text_size"/>
 
         </LinearLayout>