聚合支付系統(tǒng):關(guān)于手機(jī)APP后臺監(jiān)控回調(diào)的討論
當(dāng)玩家每付款一筆資金,成功或是失敗,都可以在手機(jī)app上監(jiān)控,再將監(jiān)控的信息回調(diào)到聚合支付系統(tǒng)內(nèi)部,收款對賬便是這么一個過程了。說起來很簡單,但是在這個流程中可能出現(xiàn)一些問題,卻是人為無法干涉的。
使用場景:
1、IM模塊,收到消息時,需要判斷當(dāng)前App是否在前臺,如果在前臺則震動一下提醒用戶,如果在后臺則發(fā)送一條通知提醒用戶。
2、收到Push推送,需要判斷App是否存活,如果存活則直接跳轉(zhuǎn)到目標(biāo)界面,如果不存活則先啟動App,再跳轉(zhuǎn)到目標(biāo)頁面。
比如當(dāng)PC端集成支付寶即時到賬的時候,會出現(xiàn)一個問題,當(dāng)支付寶支付成功后,系統(tǒng)的支付寶流水會重復(fù)添加好幾條。
解決方案:
1、保證執(zhí)行回調(diào)接口的結(jié)果為“success”,但是有時即使返回“success”,支付寶還是繼續(xù)回發(fā)異步通知,這是采用本地支付狀態(tài)驗證。
2、訂單號唯一,根據(jù)訂單號查詢訂單的數(shù)據(jù)庫的支付狀態(tài),如果數(shù)據(jù)庫支付狀態(tài)為false,則繼續(xù)執(zhí)行下面的程序;反之則返回“success”,相當(dāng)于在數(shù)據(jù)庫訂單支付狀態(tài)的層面上,又進(jìn)行了一次攔截驗證。
一般第三方支付會通過兩個方向通知商戶用戶在他們系統(tǒng)的支付情況,一個是及時的前端回調(diào),還有一個異步的后臺回調(diào)。
前端回調(diào)是用于告知和處理前端的業(yè)務(wù)跳轉(zhuǎn)/前端用戶交互方面的體驗。
后臺的異步回調(diào)是更加安全的可靠的接收第三方支付結(jié)構(gòu)的方式,基于安全的原因,商戶需要在后臺回調(diào)處理邏輯里面對第三方支付的灰度進(jìn)行簽名驗證;在驗證完成后,還需要調(diào)用第三方支付的查單接口進(jìn)行反查驗證。
在聚合系統(tǒng)平臺之上,商戶進(jìn)件后,通過云端監(jiān)控和手機(jī)APP監(jiān)控完成回調(diào)工作,手機(jī)在安裝監(jiān)控回調(diào)APP的時候要注意以下幾點,手機(jī)不能熄屏斷網(wǎng)死機(jī),如果中途出現(xiàn)這3種情況,則需要重新安裝。