本發明實施例涉及支付交易領域,尤其涉及一種防止重復支付的方法和裝置。
背景技術:
隨著科技的進步和發展,用戶通過網絡交易已經成為一種普遍的方式,使用網絡交易時通常是在線支付。由于在線支付是基于網絡及非面對面的特性,因此,在線支付的過程中若系統出現異常可能會造成同一訂單重復支付的問題。
在現有技術中,第三方支付裝置會提供支付和支付狀態查詢兩種功能,圖1示出了現有技術中訂單支付和確定支付狀態流程,如圖1所示,支付和確定支付狀態包括以下步驟:
步驟101,用戶向第三方支付裝置發起訂單支付請求;
步驟102,第三方支付裝置接收用戶發起的訂單支付請求;
步驟103,第三方支付裝置確定是否成功接收到用戶發起的訂單支付請求;若否,則執行步驟104;若是,則執行步驟105;
步驟104,確定支付狀態為該訂單不存在;
步驟105,確定訂單支付狀態為訂單支付成功、訂單支付失敗或訂單支付狀態不明確;
步驟106,第三方支付裝置向支付平臺發送支付請求;
步驟107,支付平臺向第三方支付裝置發送訂單支付響應;
步驟108,第三方支付裝置確定是否接收到支付平臺發送的訂單支付響應;
步驟109,若接收到支付平臺發送的訂單支付響應,則根據支付響應確定支付狀態為支付成功或支付失敗;具體來說,支付響應為支付成功,則支付狀態為支付成功;支付響應為支付失敗,則支付狀態為支付失敗;
步驟120,若未接收到支付平臺發送的訂單支付響應,則確定支付狀態不明確。
當第三方支付裝置在用戶發起支付請求之前,系統出現異常,從而導致第三方支付裝置未成功接收到支付請求,從而也無法向用戶展示支付狀態,由于用戶沒有看到支付狀態,因此用于可能會查詢該訂單的支付狀態。由于第三方支付裝置的異常,可能導致先成功接收到查詢請求,后續再成功接收到支付請求,此時由于第三方支付裝置成功接收到的信令的時序出現顛倒,因此導致第三方支付裝置處理信令的時序顛倒。該情況下,由于第三方支付裝置在處理查詢請求之前,還未處理支付請求,因此可能向用戶發送的支付狀態為:確定該訂單不存在。用戶看到該支付狀態,可能會發起第二次支付,即用戶向第三方支付裝置再次發送支付請求,第三方支付裝置對兩次發送的支付請求均進行處理,導致用戶對一個訂單重復進行支付。
目前,對于出現訂單重復支付的情況通常采取事后處理的方式:當用戶確定同一個訂單已經進行了重復支付,則通過發起退款來解決訂單重復支付的問題,如此,會給用戶造成一定的資金風險。
綜上,亟需一種防止重復支付的方案,用于避免用戶對同一個訂單進行重復支付的問題。
技術實現要素:
本發明實施例提供了一種防止重復支付的方法和裝置,用于防止對重復發送的支付請求進行支付。
本發明實施例提供一種防止重復支付的方法,包括:
第三方支付裝置接收終端發送的支付請求;其中,支付請求包括訂單標識;第三方支付裝置確定接收到支付請求之前未接收到包括訂單標識的訂單請求,確定是首次接收到訂單標識,則根據支付請求對訂單標識對應的訂單進行支付處理;第三方支付裝置確定接收到支付請求之前接收到包括訂單標識的訂單請求,確定不是首次接收到訂單標識,則向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗;其中,訂單請求包括:用于對訂單標識對應的訂單進行支付的支付請求,以及用于查詢訂單標識對應的訂單的支付狀態查詢請求。
可選地,第三方支付裝置確定接收到支付請求之前未接收到包括訂單標識的訂單請求,確定是首次接收到訂單標識,包括:第三方支付裝置將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;第三方支付裝置確定支付請求中的訂單標識保存成功,則確定是首次接收到訂單標識。
可選地,第三方支付裝置根據支付請求對所訂單標識對應的訂單進行支付處理,包括:第三方支付裝置向支付平臺發送支付請求;第三方支付裝置接收支付平臺發送的支付響應。可選地,第三方支付裝置根據支付請求對訂單標識對應的訂單進行支付處理之后,還包括:第三方支付裝置接收終端發送的查詢請求;其中,查詢請求中包括訂單標識;第三方支付裝置將查詢請求中的訂單標識保存至數據庫;其中,查詢請求中的訂單標識為數據庫主鍵;第三方支付裝置確定查詢請求中的訂單標識保存失敗,則根據確定出訂單標識對應的支付響應,向終端發送第二指示信息;其中,支付響應為支付成功,則第二指示信息用于指示支付請求的支付狀態為支付成功;支付響應為支付失敗,則第二指示信息用于指示支付請求的支付狀態為支付失敗。
可選地,第三方支付裝置接收終端發送的支付請求之前,還包括:第三方支付裝置接收包括訂單標識的訂單請求,并將訂單請求中的訂單標識保存至數據庫;其中,訂單請求中的訂單標識為數據庫主鍵。可選地,第三方支付裝置確定接收到支付請求之前接收到包括訂單標識的訂單請求,確定不是首次接收到訂單標識,包括:第三方支付裝置將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;第三方支付裝置確定支付請求中的訂單標識保存失敗,則確定不是首次接收到訂單標識。
可選地,訂單請求為查詢請求。可選地,第三方支付裝置接收包括訂單標識的訂單請求,并將訂單請求中的訂單標識保存至數據庫之后,第三方支付裝置接收終端發送的支付請求之前,還包括:第三方支付裝置確定查詢請求中的訂單標識保存成功,則向終端發送第三指示信息;第三指示信息用于指示終端在發送查詢請求之前發送的訂單標識對應的支付請求的支付狀態為支付失敗。
一種防止重復支付的裝置,包括:
接收單元,用于接收終端發送的支付請求;其中,支付請求包括訂單標識;
處理單元,用于確定接收到支付請求之前未接收到包括訂單標識的訂單請求,確定是首次接收到訂單標識,則根據支付請求對訂單標識對應的訂單進行支付處理;確定接收到支付請求之前接收到包括訂單標識的訂單請求,確定不是首次接收到訂單標識,則向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗;其中,訂單請求包括:用于對訂單標識對應的訂單進行支付的支付請求,以及用于查詢訂單標識對應的訂單的支付狀態查詢請求。
可選地,處理單元,具體用于:將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;確定支付請求中的訂單標識保存成功,則確定是首次接收到訂單標識。
可選地,還包括發送單元,用于:向支付平臺發送支付請求;接收單元,還用于:接收支付平臺發送的支付響應;接收終端發送的查詢請求;其中,查詢請求中包括訂單標識;處理單元,還用于:將查詢請求中的訂單標識保存至數據庫;其中,查詢請求中的訂單標識為數據庫主鍵;確定查詢請求中的訂單標識保存失敗,則根據確定出訂單標識對應的支付響應,向終端發送第二指示信息;其中,支付響應為支付成功,則第二指示信息用于指示支付請求的支付狀態為支付成功;支付響應為支付失敗,則第二指示信息用于指示支付請求的支付狀態為支付失敗。
可選地,接收單元,還用于:接收包括訂單標識的訂單請求;處理單元,還用于:將訂單請求中的訂單標識保存至數據庫;其中,訂單請求中的訂單標識為數據庫主鍵;將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;確定支付請求中的訂單標識保存失敗,則確定不是首次接收到訂單標識。
可選地,訂單請求為查詢請求;
可選地,處理單元,具體用于:確定查詢請求中的訂單標識保存成功,則向終端發送第三指示信息;第三指示信息用于指示終端在發送查詢請求之前發送的訂單標識對應的支付請求的支付狀態為支付失敗。
本發明實施例中第三方支付裝置在接收到支付請求之后,首先確定在接收到該支付請求之前是否接收到包括訂單標識的訂單請求,根據該訂單請求來確定接收到的支付請求中的訂單標識是否為首次接收:若是首次接收,則說明在接收到該支付請求之前沒有接收到該訂單請求,所以根據該支付請求對訂單標識對應的訂單進行支付處理;若不是首次接收,則說明在接收到該支付請求之前接收到了除該支付請求之外的其它訂單請求,比如其它支付請求或查詢請求,因此不對此次接收到的支付請求進行支付處理,向終端發送指示該支付失敗的第一指示信息。可見,若終端進行了重復支付,即第二次發送支付請求,則本發明實施例所提供的方案可有效防止對重復發送的支付請求進行支付。
附圖說明
圖1為現有技術中支付和確定支付狀態流程示意圖;
圖1a為本發明實施例提供的一種系統架構示意圖;
圖2為本發明實施例提供的一種防止重復支付的方法流程示意圖;
圖3為本發明實施例提供的另一種防止重復支付的方法流程示意圖;
圖4為本發明實施例提供的另一種防止重復支付的方法流程示意圖;
圖5為本發明實施例提供的可選地一種防止重復支付的具體方法流程示意圖;
圖6為本發明實施例提供的可選地另一種防止重復支付的具體方法流程示意圖;
圖7為本發明實施例提供的一種第三方支付裝置的結構示意圖。
具體實施方式
為了使本發明的目的、技術方案及有益效果更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
圖1a示出了應用本發明實施例的一種系統的架構示意圖。如圖1a所示,該系統架構可以包括終端101a、第三方支付裝置102a、支付平臺103a。終端與第三方支付裝置之間,或者第三方支付裝置與支付平臺之間可通過無線或有線的方式進行連接。
終端用于向第三方支付裝置發送訂單請求。終端可以經無線接入網(Radio Access Network,簡稱RAN)與一個或多個核心網進行通信,終端設備可以指用戶設備(User Equipment,簡稱UE)、接入終端、用戶單元、用戶站、移動站、移動臺、遠方站、遠程終端、移動設備、用戶終端、終端、無線通信設備、用戶代理或用戶裝置。終端可以是蜂窩電話、無繩電話、會話啟動協議(Session Initiation Protocol,簡稱SIP)電話、無線本地環路(Wireless Local Loop,簡稱WLL)站、個人數字處理(Personal Digital Assistant,簡稱PDA)、具有無線通信功能的手持設備、計算設備或連接到無線調制解調器的其它處理設備、車載設備、可穿戴設備,未來5G網絡中的終端設備等。
第三方支付裝置用于接收并處理終端發送的訂單請求,可以是支付寶、微信等。
支付平臺用來接收第三方支付裝置發送的支付請求并向第三方支付裝置反饋支付響應,可以是銀行等。
基于圖1a所示的系統架構,圖2示例性示出了本發明實施例提供的一種防止重復支付的方法流程示意圖,如圖2所示,防止重復支付方法包括以下步驟:
步驟201,第三方支付裝置接收終端發送的支付請求;其中,支付請求包括訂單標識;
步驟202,第三方支付裝置確定接收到支付請求之前是否接收到包括訂單標識的訂單請求,即確定是否是首次接收到訂單標識;若第三方支付裝置確定接收到支付請求之前未接收到包括訂單標識的訂單請求,確定是首次接收到訂單標識,則執行步驟203;若第三方支付裝置確定接收到支付請求之前接收到包括訂單標識的訂單請求,確定是不首次接收到訂單標識,則執行步驟204;
步驟203,則根據支付請求對訂單標識對應的訂單進行支付處理;
步驟204,向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗;其中,訂單請求包括:用于對訂單標識對應的訂單進行支付的支付請求,以及用于查詢訂單標識對應的訂單的支付狀態查詢請求。
上述步驟202中,第三方支付裝置確定接收到支付請求之前未接收到包括訂單標識的訂單請求,即確定是首次接收到訂單標識;第三方支付裝置確定接收到支付請求之前接收到包括訂單標識的訂單請求,則確定不是首次接收到訂單標識。訂單請求可能為包括上述訂單標識的另一個支付請求,也可能是包括上述訂單標識的一個查詢請求。
由于本發明實施例中本發明實施例中第三方支付裝置在接收到支付請求之后,首先確定在接收到該支付請求之前是否接收到包括訂單標識的訂單請求,根據該訂單請求來確定接收到的支付請求中的訂單標識是否為首次接收:若是首次接收,則說明在接收到該支付請求之前沒有接收到該訂單請求,所以根據該支付請求對訂單標識對應的訂單進行支付處理;若不是首次接收,則說明在接收到該支付請求之前接收到了除該支付請求之外的其它訂單請求,比如其它支付請求或查詢請求,因此不對此次接收到的支付請求進行支付處理,向終端發送指示該支付失敗的第一指示信息。可見,若終端進行了重復支付,即第二次發送支付請求,則本發明實施例所提供的方案可有效防止對重復發送的支付請求進行支付。
為了確定出接受到的支付請求中的訂單標識是不是首次接收到的訂單標識,有多種實施方式,比如對每一次的支付請求中的訂單標識用不同的序號標注或第三方支付裝置對每一次接收到的訂單支付請求中的訂單標識用接收到訂單標識的時間確定。本發明實施例提供一種可選地方案,用于使第三方支付裝置確定出是否是接收到支付請求之前未接收到包括訂單標識的訂單請求,即確定是否是首次接收到訂單標識。
圖3示例性示出了本發明提供的另一種防止重復支付的方法流程示意圖。如圖3所示,該方法包括以下步驟:
步驟301,終端向第三方支付裝置發送支付請求;其中,支付請求中包括訂單標識。
步驟302,第三方支付裝置接收終端發送的支付請求。
步驟303,第三方支付裝置將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵。
可選地,訂單標識通過訂單三要素(商戶號、訂單號、訂單時間)來唯一的確定。第三方支付裝置將支付請求對應的訂單標識保存至數據庫;可選地,根據訂單標識作為數據庫主鍵保存到數據庫中,比如DB2數據庫。
本發明實施例中數據庫主鍵是表中的一列或多列的組合,其值能唯一地標識表中的每一列。這樣的一列或多列為表的主鍵,通過主鍵可強制表的實體完整性,利用數據庫主鍵可解決因報文處理時序顛倒產生的重復支付。
該示例中將支付請求中的訂單標識保存至數據庫時,可能保存成功,也可能保存不成功。具體來說,若數據庫中沒有保存過該訂單標識,即該次將支付請求中的訂單標識保存至數據庫是首次將該訂單標識以數據庫主鍵的形式保存至數據庫,則可以保存成功;若數據庫中以訂單標識為數據庫主鍵的形式曾經保存過該訂單標識,即該次將支付請求中的訂單標識保存至數據庫不是首次將該訂單標識以數據庫主鍵的形式保存至數據庫,則會保存失敗。
該示例中以該次將支付請求中的訂單標識保存至數據庫是首次將該訂單標識以數據庫主鍵的形式保存至數據庫為例進行說明,此時一定能保存成功。
步驟304,第三方支付裝置確定支付請求對應的訂單標識保存成功;確定是首次接收到訂單標識。
步驟305,第三方支付裝置向支付平臺發送支付請求。可選地,該支付請求中包括:訂單標識、收款方信息、交易金額等信息。
步驟306,第三方支付裝置接收支付平臺發送的支付響應。可選地,第三方支付裝置向終端發送接收到的支付響應。
具體來說,支付響應是支付平臺接收到第三方支付裝置發送的支付請求之后,對接收到的支付請求處理之后的結果,支付響應可以為支付成功或支付失敗。若支付響應為支付成功,則第三方支付裝置確定出的支付請求的支付狀態為支付成功;若支付響應為支付失敗,則第三方支付裝置確定出的支付請求的支付狀態為支付失敗。
可選地,另一種實施方式中,若支付平臺發送了支付響應,但是支付平臺沒有收到該支付響應,則第三方支付裝置確定出的支付請求的支付狀態為支付狀態不明。
可選地,第三方支付裝置中可儲存支付狀態表,該支付狀態表中包括支付請求,以及該支付請求的支付狀態。
該示例中,若第三方支付裝置未將支付響應及時的發送給終端,則終端的用戶可能會向第三方支付裝置發送查詢請求,以便確定支付請求的支付狀態。該示例中以用戶未接收到支付響應并向第三方支付裝置發送查詢請求為例進行說明。
步驟307,第三方支付裝置接收終端發送的查詢請求;其中,查詢請求中包括訂單標識。
步驟308,第三方支付裝置將查詢請求中的訂單標識保存至數據庫;其中,查詢請求中的訂單標識為數據庫主鍵。
步驟309,第三方支付裝置確定查詢請求對應的訂單標識保存失敗。
由于第三方支付裝置在接收到查詢請求之前,已經接收了包括訂單標識的支付請求,而且將該支付請求中的訂單標識為數據庫主鍵保存到數據庫中,因此,當第三方支付裝置接收到查詢請求中的訂單標識時,由于數據庫中已經存在了該訂單標識的數據庫主鍵,所以查詢請求對應的訂單標識保存失敗,即該訂單標識不能再保存到數據庫了。
步驟310,根據確定出訂單標識對應的支付響應,向終端發送第二指示信息。其中,支付響應為支付成功,則第二指示信息用于指示支付請求的支付狀態為支付成功;支付響應為支付失敗,則第二指示信息用于指示支付請求的支付狀態為支付失敗。可選地,若第三方支付裝置未接收到該支付響應,則第二指示信息用于指示支付請求的支付狀態為支付不明。
圖4示例性示出了本發明提供的另一種防止重復支付的方法流程示意圖。如圖4所示,該方法包括以下步驟:
步驟401,終端向第三方支付裝置發送包括訂單標識的訂單請求。可選地,訂單請求可為用于對訂單標識對應的訂單進行支付的支付請求,或者為用于查詢訂單標識對應的訂單的支付狀態查詢請求。
步驟402,第三方支付裝置接收包括訂單標識的訂單請求。
可選地,訂單標識通過訂單三要素(商戶號、訂單號、訂單時間)來唯一的確定;訂單請求可以為支付請求或查詢請求中的任一一個。
步驟403,第三方支付裝置將訂單請求中的訂單標識保存至數據庫;其中,訂單請求中的訂單標識為數據庫主鍵。
可選地,將訂單請求中的訂單標識保存為數據庫主鍵,能唯一的標識該訂單。具體來說,在第三方支付裝置數據庫中以數據庫主鍵的的方式保存了該訂單請求中包括的訂單標識,由于該訂單請求中的訂單標識是首次以數據庫主鍵的方式保存到數據庫中,所以該訂單請求中所包括的訂單標識保存成功。若第三方數據庫再次接收到該訂單標識時,由于數據庫主鍵是該訂單的唯一標識,因此,第三方支付裝置再次接收到該訂單標識時不能被再次成功保存。
可選地,訂單請求可為用于對訂單標識對應的訂單進行支付的支付請求,或者為用于查詢訂單標識對應的訂單的支付狀態查詢請求;當訂單請求為用于查詢訂單標識對應的訂單的支付狀態查詢請求時,該查詢請求對應的訂單標識以數據庫主鍵的方式成功保存到第三方支付裝置的數據庫中,第三方支付裝置確定該查詢請求中包括的訂單標識為首次接收到的訂單標識;之后向終端發送該訂單標識所對應的支付請求的支付狀態為支付失敗;當訂單請求為用于對訂單標識對應的訂單進行支付的支付請求,該支付請求對應的訂單標識以數據庫主鍵的方式成功保存到第三方支付裝置的數據庫中,第三方支付裝置確定該支付請求中包括的訂單標識為首次接收到的訂單標識;之后向支付平臺發送該訂單標識所對應的支付請求,并對該支付請求進行處理。該示例中以第三方支付裝置在接收到上述訂單請求之后,再次接收到支付請求為例進行說明,由于訂單請求中包括的訂單標識以數據庫主鍵的方式成功保存到了第三方支付裝置的數據庫中,所以,當第三方支付裝置再次接收到包含該訂單請求的支付請求時,支付請求中的訂單標識一定會保存失敗。
步驟404,終端向第三方支付裝置發送包括訂單標識的支付請求。
步驟405,第三方支付裝置接收終端發送的包括訂單標識的支付請求。
步驟406,第三方支付裝置將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵。
步驟407,第三方支付裝置確定支付請求對應的訂單保存失敗;
則確定不是首次接收到訂單標識。
由于,第三方支付裝置將支付請求中的訂單標識以數據庫主鍵的方式保存失敗,所以確定接收到支付請求之前接收到包括訂單標識的訂單請求,所以,因此,確定支付請求對應的訂單標識不是首次接收到訂單標識。
步驟408,第三方支付裝置向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗。
在確定不是首次接收到訂單標識之后,不對此次接收到的支付請求進行支付處理,向終端發送指示該支付失敗的第一指示信息。因此,若終端進行了重復支付,即第二次發送支付請求,則可有效防止對重復發送的支付請求進行支付。
圖5示例性示出了本發明提供的可選地一種防止重復支付的具體方法流程示意圖。如圖5所示,該方法實例中以圖4所示的方法示例中訂單請求為查詢請求為例進行更詳細的描述,該方法示例包括以下步驟:
步驟501,終端向第三方支付裝置發送包括訂單標識的查詢請求。
可選地,查詢請求為訂單請求的一種,查詢請求用于查詢訂單的支付狀態,在查詢請求中包括訂單標識、收款方信息、交易金額等信息。
步驟502,第三方支付裝置接收包括訂單標識的查詢請求。
步驟503,將查詢請求中的訂單標識保存至數據庫;其中,查詢請求中的訂單標識為數據庫主鍵。
步驟504,第三方支付裝置確定查詢請求中的訂單標識保存成功。
第三方支付裝置首次接收到查詢請求中包括的訂單標識,所以該訂單標識為數據庫主鍵的方式可以成功保存到數據庫中。這說明第三方支付裝置并沒有接收到終端發送的該查詢請求之前所發送的訂單標識對應的支付請求。可選地,終端先向第三方支付裝置發送首次支付請求,當終端未收到支付響應時,又向第三方支付裝置發送查詢請求,但是第三方支付裝置首先接收都了查詢請求,后接收首次支付請求,則第三方支付裝置在接收到查詢請求中,首先將查詢請求中包含的訂單標識以數據庫主鍵的方式保存到數據庫中,當后接收到包括訂單標識的支付請求時,該支付請求中的訂單標識以數據庫主鍵的方式保存失敗,同時第三方支付裝置將首次支付請求攔截,不再進行處理。如此,可避免系統出現故障時,對支付請求進行處理錯亂從而造成重復支付。
可選地,用戶不可對該訂單標識對應的訂單再進行支付,若用戶需要繼續完成支付,則需另外再下單。
步驟505,第三方支付裝置向終端發送第三指示信息;第三指示信息用于指示終端在發送查詢請求之前發送的訂單標識對應的支付請求的支付狀態為支付失敗。
由于第三方支付裝置對查詢請求中的訂單標識保存成功,可選地,該查詢請求對應的訂單保存成功說明終端沒有接收到查詢請求中的訂單標識對應的支付響應,也無法查詢到結果。可選地,第三方支付裝置并沒有接收到終端發送的該查詢請求之前所發送的訂單標識對應的支付請求,也不再對查詢請求中的訂單標識對應的支付請求進行支付處理。所以向終端發送支付請求的支付狀態為支付失敗。
步驟506,終端向第三方支付裝置發送包括訂單標識的支付請求。
步驟507,第三方支付裝置接收終端發送的支付請求。
步驟508,第三方支付裝置將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵。
步驟509,第三方支付裝置確定支付請求對應的訂單保存失敗;
則確定不是首次接收到訂單標識。
由于第三方支付裝置確定接收到支付請求之前接收到包括訂單標識的查詢請求,所以確定該支付請求中的訂單標識不是首次接收到訂單標識。
步驟510,第三方支付裝置向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗。
由于該支付請求的訂單標識保存失敗,所以第三方支付裝置將該支付請求進行攔截,不再對該支付請求進行處理,直接返回支付請求的支付狀態為支付失敗,如此,可有效防止對重復發送的支付請求進行支付。
圖6示例性示出了本發明提供的可選地另一種防止重復支付的具體方法流程示意圖。如圖6所示,該方法實例中以圖4所示的方法示例中訂單請求為支付請求為例進行更詳細的描述,該方法示例包括以下步驟:
步驟601,終端向第三方支付裝置發送包括訂單標識的首次支付請求。
可選地,支付請求為訂單請求的一種,在支付請求中包括訂單標識、收款方信息、交易金額等信息。
步驟602,第三方支付裝置接收包括訂單標識的首次支付請求。
步驟603,將首次支付請求對應的訂單標識保存至數據庫;其中,訂單標識為首次支付請求的數據庫主鍵。
步驟604,第三方支付裝置確定首次支付請求對應的訂單標識保存成功。
第三方支付裝置接收到首次支付請求中包括的訂單標識,所以該訂單標識為數據庫主鍵的方式可以成功保存到數據庫中。
步驟605,向支付平臺發送首次支付請求。
第三方支付裝置接收到包括訂單標識的首次支付請求,且該首次支付請求對應的訂單標識以數據庫主鍵的方式成功保存到數據庫中,所以該首次支付請求不會造成重復支付,需要支付平臺對該支付請求進行支付處理。
可選地,支付平臺接收到首次支付請求之后,對首次支付請求進行支付處理,并向第三方支付裝置發送支付響應,第三方支付裝置根據支付響應更新首次支付請求對應的支付狀態,若支付響應為支付成功,則將首次支付請求的支付狀態為更新為支付成功;若支付響應為支付失敗,則將首次支付請求的支付狀態為更新為支付失敗。可選地,若第三方支付裝置未接收到該支付響應,則將首次支付請求的支付狀態為更新為支付不明。
步驟606,終端向第三方支付裝置發送包括訂單標識的支付請求。
該支付請求與首次支付請求不同,該支付請求為用戶重復進行支付的一次支付請求。終端向第三方支付裝置發送首次支付請求之后,由于沒有收到第三方支付裝置發送的支付狀態或收到支付狀態支付失敗;終端向第三方支付裝置發送該包括訂單標識的支付請求。
步驟607,第三方支付裝置接收終端發送的送包括訂單標識支付請求。
步驟608,第三方支付裝置將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;
步驟609,第三方支付裝置確定支付請求對應的訂單保存失敗;
則確定不是首次接收到訂單標識。
具體來說,同一訂單標識以數據庫主鍵形式只能保存一次,由于第三方支付裝置在保存支付請求對應的訂單標識之前,已經成功保存了首次支付請求對應的訂單標識,所以后保存同一訂單標識的一定會保存失敗。.
本發明實施例中通過數據庫主鍵的形式確定接收到的訂單標識是不是首次接收到的訂單標識。
步驟610,第三方支付裝置向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗。
由于當第三方支付裝置以數據庫主鍵的方式保存支付請求中對應的訂單標識保存失敗,所以確定接收到支付請求之前接收到包括訂單標識的首次支付請求請求,確定該支付請求中包括的訂單標識不是首次接收到訂單標識,,所以第三方支付裝置將該支付請求進行攔截,不再對該支付請求進行處理,直接返回支付請求的支付狀態為支付失敗,如此,可有效防止對重復發送的支付請求進行支付。
圖7示例性示出了本發明實施例提供的一種第三方支付裝置的結構示意圖。
基于相同構思,本發明實施例提供一種第三方支付裝置,如圖7所示,第三方支付裝置700包括接收單元701和處理單元702,可選地,還包括發送單元703。其中:
接收單元,用于接收終端發送的支付請求;其中,支付請求包括訂單標識;
處理單元,用于確定接收到支付請求之前未接收到包括訂單標識的訂單請求,確定是首次接收到訂單標識,則根據支付請求對訂單標識對應的訂單進行支付處理;確定接收到支付請求之前接收到包括訂單標識的訂單請求,確定不是首次接收到訂單標識,則向終端發送第一指示信息;第一指示信息用于指示支付請求的支付狀態為支付失敗;其中,訂單請求包括:用于對訂單標識對應的訂單進行支付的支付請求,以及用于查詢訂單標識對應的訂單的支付狀態查詢請求。
可選地,處理單元,具體用于:將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;確定支付請求中的訂單標識保存成功,則確定是首次接收到訂單標識。
可選地,還包括發送單元,用于:向支付平臺發送支付請求;
接收單元,還用于:接收支付平臺發送的支付響應;接收終端發送的查詢請求;其中,查詢請求中包括訂單標識;
處理單元,還用于:將查詢請求中的訂單標識保存至數據庫;其中,查詢請求中的訂單標識為數據庫主鍵;確定查詢請求中的訂單標識保存失敗,則根據確定出訂單標識對應的支付響應,向終端發送第二指示信息;其中,支付響應為支付成功,則第二指示信息用于指示支付請求的支付狀態為支付成功;支付響應為支付失敗,則第二指示信息用于指示支付請求的支付狀態為支付失敗。
可選地,接收單元,還用于:接收包括訂單標識的訂單請求;
處理單元,還用于:將訂單請求中的訂單標識保存至數據庫;其中,訂單請求中的訂單標識為數據庫主鍵;將支付請求中的訂單標識保存至數據庫;其中,支付請求中的訂單標識為數據庫主鍵;確定支付請求中的訂單標識保存失敗,則確定不是首次接收到訂單標識。
可選地,訂單請求為查詢請求;
可選地,處理單元,具體用于:確定查詢請求中的訂單標識保存成功,則向終端發送第三指示信息;第三指示信息用于指示終端在發送查詢請求之前發送的訂單標識對應的支付請求的支付狀態為支付失敗。
從上述內容可以看出:本發明實施例中,由于本發明實施例中第三方支付裝置在接收到支付請求之后,首先確定在接收到該支付請求之前是否接收到包括訂單標識的訂單請求,根據該訂單請求來確定接收到的支付請求中的訂單標識是否為首次接收:若是首次接收,則說明在接收到該支付請求之前沒有接收到該訂單請求,所以根據該支付請求對訂單標識對應的訂單進行支付處理;若不是首次接收,則說明在接收到該支付請求之前接收到了除該支付請求之外的其它訂單請求,比如其它支付請求或查詢請求,因此不對此次接收到的支付請求進行支付處理,向終端發送指示該支付失敗的第一指示信息。可見,若終端進行了重復支付,即第二次發送支付請求,則本發明實施例所提供的方案可有效防止對重復發送的支付請求進行支付。
本領域內的技術人員應明白,本發明的實施例可提供為方法、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明范圍的所有變更和修改。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。