終端關於」閃卡」問題的處理

2021-08-16 08:21:32 字數 933 閱讀 4171



設想這麼一種情況, qpboc卡消費, 在讀應用資料階段, 終端一條條發讀記錄命令,卡片一條條回, 當卡片返回了最後一條記錄時,卡片在這個瞬間遠離了終端. 終端」讀最後一條記錄失敗」.這種情況下,卡片認為互動已經結束了,並且成功了,它會把錢扣掉,但是終端會報錯,這筆消費對於終端是失敗的,商戶當然不會把商品給到持卡人,持卡人是吃虧的.

不用」這種情況很少發生」這樣的藉口,肯定是有可能發生的.這裡要討論的是,遇到這種情況,該如何處理呢?

先說一種,銀聯很早就採用的方法. 當終端判斷是讀最後一條記錄失敗時,會把這筆交易存下來,在批結算階段會把這筆交易上送到後台系統,這樣後台系統就相當於知道」這件事」, 持卡人如果有投訴,可以把錢退還給持卡人.  這個方法其實終端只是做了乙個」記錄-上送」而已,具體的處理由後台系統完成. 如果要求終端」自己解決」, 該如何處理呢?

原理大體上講就是, 終端把出現」閃卡」這次的資料儲存起來,再處理一次同一張卡,但是只執行應用選擇和讀應用資料,不發gpo指令,這樣就不會重複扣費.

詳細的過程如下:

正常情況下,終端每做完一筆交易,在開始下一筆之前,終端裡還儲存著上一筆的資料,比如afl,atc, 主賬號,餘額等等, 當終端發現「閃卡」情況,終端提示交易失敗,然後讓再次放卡, 當再次檢到卡之後, 終端能過一系列的條件判斷,該張卡是否是剛才出現」閃卡」這一張,如果是,終端只發應用選擇,然後根據上一筆的afl, 執行讀應用資料,後面的流程就跟正常交易一樣的了.

上面所說的判斷同一張卡的條件,一般需要下面幾個:

1 卡序號是否相同,這個在檢到非接卡的時候就可以獲取到了.

2 atc是否相同,做完應用選擇之後,可以用get data取出

3 餘額,獲取的當前餘額,上一筆儲存的餘額減去上一筆的交易金額是否一致

如果判斷到重放上來的不是同一張卡,那麼處理起來就比較令靈活了,不同的應用場景可以不同處理,另外處理方式還會因終端可以儲存多少筆」閃卡」記錄有關.

關於 inline bolck間距問題的處理方法

有關於使用inline block來代替float的討論也蠻多的,最常說的就是使用inline block來代替float進行布局,或者使用inline block來實現元素的居中效果。前面 css3製作的分頁導航 一文中就是使用的inline block製作的居中效果,不過留下了一上問題,就是使用...

關於表鎖定問題的處理

專案組在使用sotower平台,利用grid刪除過程中出現ie死掉現象,經測試發現是資料庫中表鎖定,在資料庫中刪除記錄也是沒反應,類似宕機。而pl sql又沒提供相應工具來處理,此時只有借助sql語句來處理了。我們在運算元據庫的時候,有時候會由於操作不當引起資料庫表被鎖定,這麼我們經常不知所措,不知...

關於vue時間處理的問題

引入自己的處理時間文件 來解決main中寫大量處理時間的問題 export default function dateformat date,format date new date date if date date.toutcstring invalid date var map format ...