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 b238e97..33632de 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -48,6 +48,7 @@
     private lateinit var vLinkLogo: ImageView
     private lateinit var vLastResult: TextView
     private lateinit var vLastPayamt: TextView
+    private lateinit var vLastCardno: TextView
     private lateinit var vLastPayway: TextView
     private lateinit var vLastPaytime: TextView
     private lateinit var vLastPayFailreason: TextView
@@ -85,6 +86,7 @@
             override fun callback(isManualCancel: Boolean) {
                 presenter.clickNoPay()
                 amountTxt.text = ""
+                AuxScreenController.getInstance().refreshContent(Arrays.asList(" 欢迎光临!", " 请刷卡..."))
             }
 
             override fun callback(code: String) {
@@ -128,7 +130,8 @@
         vCardstatus = this.findViewById<TextView>(R.id.tv_cardstatus)
         vTime = this.findViewById<TextView>(R.id.tv_nowtime)
         vLastResult = this.findViewById<TextView>(R.id.tv_last_pay_result)
-        vLastPayamt = this.findViewById<TextView>(R.id.consume_last_payamt)
+        vLastCardno = this.findViewById<TextView>(R.id.tv_last_cardno)
+        vLastPayamt = this.findViewById<TextView>(R.id.tv_last_payamt)
         vLastPayway = this.findViewById<TextView>(R.id.tv_last_payway)
         vLastPaytime = this.findViewById<TextView>(R.id.tv_last_paytime)
         vLastPayFailreason = this.findViewById<TextView>(R.id.tv_last_failreason)
@@ -345,6 +348,11 @@
         AuxScreenController.getInstance().refreshContent(Arrays.asList(hint, amountStr))
     }
 
+    override fun showConsumeQuery(hint: String) {
+        dialogPurchase!!.showProcess(hint, "请耐心等待")
+        AuxScreenController.getInstance().refreshContent(Arrays.asList(hint, "请耐心等待"))
+    }
+
     override fun showConsumeFail(info: CardUserInfoBean) {
         dialogPurchase!!.showPayFail(info)
         SoundUtil.playMusic(applicationContext, R.raw.consume_fail)
@@ -370,12 +378,20 @@
     private var lastShowRecentTime: String? = null
     private fun refreshRecentDtl(info: CardUserInfoBean?) {
         if (info != null) {
+            val showtime: Long = 30 * 1000
             lastPayInfo = info
             //已显示过不在显示
             if (lastShowRecentTime == info.transtime) {
                 return
             }
             lastShowRecentTime = info.transtime
+            if (info.transtime != null) {
+                val paytime = DateUtil.timeFormatConvertToLong(info.transtime!!)
+                val nowtime = DateUtil.timeFormatConvertToLong(DateUtil.getNowTimeNoFormat())
+                if (nowtime - paytime > showtime) {
+                    return
+                }
+            }
 
             if (info.status == PayStatus.SUC) {
                 when {
@@ -398,7 +414,7 @@
                 vLastPayamtll.visibility = View.GONE
                 vLastPayFailreason.text = info.retmsg
             }
-
+            vLastCardno.text = info.cardno
             vLastPayway.text = if (info.payway == "code") {
                 "二维码"
             } else {
@@ -409,7 +425,7 @@
                 .append(info.transtime?.substring(2, 4)).append(":")
                 .append(info.transtime?.substring(4))
             vLastPaytime.text = sb.toString()
-            resetPayShowCounter(30 * 1000)
+            resetPayShowCounter(showtime)
         }
     }
 
@@ -480,6 +496,7 @@
 
     private fun clearLastPayResult() {
         vLastResult.text = null
+        vLastCardno.text = null
         vLastPayamt.text = null
         vLastPayway.text = null
         vLastPaytime.text = null
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
index 4d48b61..fd4a90d 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
@@ -42,6 +42,7 @@
                     PublicDef.MSG_CARD_PAY_SUC -> iConsumeView.showConsumeSuc(msg.obj as CardUserInfoBean)
                     PublicDef.MSG_CARD_PAYING,
                     PublicDef.MSG_CARD_READ_AGAIN -> iConsumeView.showConsumeHint(msg.obj as String)
+                    PublicDef.MSG_CARD_PAY_QUERY -> iConsumeView.showConsumeQuery(msg.obj as String)
                     PublicDef.MSG_CARD_PAY_FAIL -> {
                         val ret = msg.obj as CardUserInfoBean
                         LogUtil.d(TAG, "pay fail,reason=${ret.retmsg}")
diff --git a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
index b633d51..64249c9 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
@@ -17,6 +17,8 @@
 
     fun showConsumeHint(hint: String)
 
+    fun showConsumeQuery(hint: String)
+
     fun showConsumeFail(info: CardUserInfoBean)
 
     fun showReverseSuc(info: CardUserInfoBean)
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 2bfb60f..af02d37 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
@@ -328,6 +328,9 @@
             }
             resp = consumeApi.payConfirm(onlRecord)
             result = parseConfirmResult(resp)
+            if (!result) {
+                result = doOnlineConsumeQuery()
+            }
             updateTransdtlOnline(result)
             if (result) {
                 showOnlSucInfo()
@@ -335,6 +338,33 @@
             return result
         }
 
+        private fun doOnlineConsumeQuery(): Boolean {
+            var queryCnt = 1
+            sleepWithCancel(1000)
+            while (clickStat == ClickStat.PAY) {
+                sendMsg(PublicDef.MSG_CARD_PAY_QUERY, "消费确认中[$queryCnt]")
+                val resp = consumeApi.payQuery(onlRecord)
+                val result = parseConfirmResult(resp)
+                if (result) {
+                    return result
+                }
+                queryCnt += 1
+                sleepWithCancel(3000)
+            }
+            return false
+        }
+
+        private fun sleepWithCancel(ms: Long) {
+            var time = 0
+            while (clickStat == ClickStat.PAY) {
+                CommonUtil.doSleep(20)
+                time += 20
+                if (time > ms) {
+                    return
+                }
+            }
+        }
+
         private fun parseInitResult(resp: TransResp?): Boolean {
             if (resp == null || resp.retcode != HttpStatus.SC_OK) {
                 SPApplication.getInstance().setEpayLinking(false)
@@ -349,6 +379,7 @@
                 throw CardPayFailError(retBean.getErrorMsg())
             }
             onlRecord.billno = retBean.billno
+            onlRecord.username = retBean.username
             return true
         }
 
@@ -366,8 +397,7 @@
                 throw CardPayFailError(retBean.getErrorMsg())
             }
             if (retBean.require_query) {
-                //TODO
-                throw CardPayFailError("查询未实现")
+                return false
             }
             onlRecord.payamt = retBean.amount
             onlRecord.extraamt = retBean.extraamt
@@ -509,7 +539,7 @@
         }
 
         private fun showRvsOnlSucInfo() {
-            val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
+            val info = CardUserInfoBean(PublicDef.SUCCESS, "冲正成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
             info.amount = onlRvsRecord.payamt
             info.payamt = onlRvsRecord.payamt
@@ -524,7 +554,7 @@
         }
 
         private fun showRvsOffSucInfo() {
-            val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
+            val info = CardUserInfoBean(PublicDef.SUCCESS, "冲正成功")
             info.showtime = pos.getSysPara()!!.sucShowtime
             info.amount = offRvsRecord.payamt
             info.payamt = offRvsRecord.payamt
diff --git a/app/src/main/java/com/supwisdom/utils/DateUtil.kt b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
index 6ce7a41..a65a9ce 100644
--- a/app/src/main/java/com/supwisdom/utils/DateUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
@@ -218,6 +218,19 @@
     }
 
     /**
+     * @param time HHmmss
+     * @return ms
+     * @desc 将时间格式的字符串转换为长整型
+     */
+    fun timeFormatConvertToLong(time: String): Long {
+        return try {
+            FORMAT_HHmmss.parse(time).time
+        } catch (ex: ParseException) {
+            0L
+        }
+    }
+
+    /**
      * @param time ms
      * @return yyyyMMddHHmmss
      * @desc 将长整型数字转换为日期格式的字符串
diff --git a/app/src/main/res/layout/activity_consume.xml b/app/src/main/res/layout/activity_consume.xml
index d453add..a1bf974 100644
--- a/app/src/main/res/layout/activity_consume.xml
+++ b/app/src/main/res/layout/activity_consume.xml
@@ -320,7 +320,31 @@
                     android:textSize="@dimen/consume_text_size2"
                     android:textStyle="bold"/>
         </LinearLayout>
+        <LinearLayout
+                android:id="@+id/ll_consume_cardno"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:paddingLeft="10dp"
+                android:paddingTop="5dp">
 
+            <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:text="支付卡号:  "
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/consume_text_size2"/>
+
+            <TextView
+                    android:id="@+id/tv_last_cardno"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:maxLines="1"
+                    android:text=""
+                    android:textColor="@color/blue"
+                    android:textSize="@dimen/consume_text_size2"
+                    android:textStyle="bold"/>
+        </LinearLayout>
         <LinearLayout
                 android:id="@+id/ll_consume_last_payamt"
                 android:layout_width="match_parent"
@@ -337,7 +361,7 @@
                     android:textSize="@dimen/consume_text_size2"/>
 
             <TextView
-                    android:id="@+id/consume_last_payamt"
+                    android:id="@+id/tv_last_payamt"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
                     android:maxLines="1"
