程而言,物流工具對應(yīng)的代碼是相同的,這部分代碼也實現(xiàn)復(fù)用。
[0028]其中,不同的資金處理工具對應(yīng)著不同的資金處理流程,不同的物流工具也對應(yīng)著不同的發(fā)貨處理流程。例如,對于“支付寶”的擔保交易這一資金處理工具,其資金處理流程一般是:買家付款后,先將資金打到支付寶的擔保賬戶,買家確認收貨后,再將資金從擔保賬戶打到賣家賬戶上。而對于“余額寶”的預(yù)授權(quán)交易這一資金處理工具,其資金處理流程一般是:買家付款后將其資金凍結(jié)在該買家的余額寶賬戶中,買家確認收貨后,再將資金從買家的余額寶賬戶打到賣家賬戶,等等。總之,各種工具對應(yīng)的組件中,就是定義了各種工具中的資金處理流程或者物流處理流程。這樣,在對應(yīng)到具體交易訂單的交易流程中,如果需要使用其中某種資金處理工具,就可以調(diào)用該資金工具對應(yīng)的組件進行處理,如果需要使用其中某種物流工具,也同樣可以通過調(diào)用該物流工具對應(yīng)的組件來處理,不用再在具體的交易流程中編寫代碼來實現(xiàn)具體的資金處理過程或者物流處理流程。
[0029]另外,這種方式還具有便于擴展的特點,對于新增資金處理工具或者物流工具的情況下,只需要為新增的工具創(chuàng)建對應(yīng)的工具,并部署到對應(yīng)的網(wǎng)關(guān)中即可,不需要修改已有的交易流程。比如“預(yù)授權(quán)交易”是一種新增的資金處理工具,需要應(yīng)用到現(xiàn)在的“普通實物交易的擔保交易”、“卡密自動發(fā)貨類商品”、“普通實物類的多次發(fā)貨”這樣幾種交易流程中。那么只需要將資金流的預(yù)授權(quán)處理相關(guān)操作與信息流的實物擔保交易流程、卡密自動發(fā)貨交易流程與多次發(fā)貨的交易流程像搭建積木一樣的組織起來,就可以一次性的實現(xiàn)這三類交易流程的支付工具新增,能夠快速地滿足業(yè)務(wù)需求。下面對具體的實現(xiàn)方式進行詳細地介紹。
[0030]參見圖1,本申請實施例首先提供了一種訂單信息處理方法,該方法在預(yù)先分別為各操作類型下的各種工具創(chuàng)建處理組件,并部署到對應(yīng)操作類型下的網(wǎng)關(guān)中的基礎(chǔ)上,可以包括以下步驟:
[0031]S101:接收對指定交易訂單進行操作的請求,并從所述請求中提取訂單標識以及操作標識;
[0032]具體的,對交易訂單執(zhí)行的操作可能是買家用戶執(zhí)行的操作,也可能是賣家用戶執(zhí)行的操作,無論是何種操作,都可能導(dǎo)致資金、物流或者訂單狀態(tài)的變化。在交易平臺中,每個交易訂單在生成時,都會產(chǎn)生一個唯一的標識,根據(jù)該標識可以唯一定位到一個交易訂單。因此,在用戶對交易訂單進行操作時,會在請求中攜帶上該訂單標識。另外,由于不同的用戶、在不同的階段能夠?qū)灰子唵螆?zhí)行的操作可能會有所不同,并且不同的操作導(dǎo)致的結(jié)果也會不同,因此,在請求中還會攜帶上操作名稱等標識。這樣,在交易平臺收到該請求之后,就可以首先從該請求中提取出訂單標識以及操作標識,用以確定用戶對哪個交易訂單執(zhí)行了何種操作。
[0033]S102:根據(jù)所述操作標識確定該操作所屬的操作類型;
[0034]在提取出訂單標識以及操作標識后,可以首先根據(jù)操作標識確定出該操作所屬的操作類型。具體的,該操作類型可能是資金處理操作,也可能是物流操作。其中,操作標識與操作類型之間的對應(yīng)關(guān)系可以是預(yù)先建立的,這樣,在收到一個請求之后,只要從中提取出操作標識,就可以根據(jù)該對應(yīng)關(guān)系,確定出對應(yīng)的操作類型。
[0035]具體實現(xiàn)時,在交易訂單的不同狀態(tài)下,允許用戶執(zhí)行的操作可能是不同的,因此,為了便于對用戶操作的合法性進行判斷,在本申請實施例中,還可以預(yù)先在配置文件中保存各類業(yè)務(wù)的交易訂單中包括的節(jié)點信息,該節(jié)點信息包括節(jié)點的名稱、節(jié)點的狀態(tài)以及用戶在該節(jié)點可執(zhí)行的操作信息,其中,各個節(jié)點的狀態(tài)與交易訂單所處的各個狀態(tài)相對應(yīng)。具體的,該配置文件可以是XML格式,在該文件中可以定義Node節(jié)點,標示訂單所處的節(jié)點位置,Node節(jié)點可以包含以下三個屬性:
[0036]name:節(jié)點名稱
[0037]transit1n:當前節(jié)點可以執(zhí)行的操作
[0038]status:當前節(jié)點的狀態(tài)
[0039]其中的transit1n對象,標示當前可以執(zhí)行的操作,可以包含以下三個屬性:
[0040]name:執(zhí)行的操作名稱
[0041]to:執(zhí)行這個操作后,訂單記錄將要到達的節(jié)點名稱
[0042]act1nName:為完成這個操作所需執(zhí)行的代碼段的名稱
[0043]對應(yīng)到一個交易訂單中,該訂單可能有多少個狀態(tài),就可以對應(yīng)多少個節(jié)點。例如,某交易訂單有已創(chuàng)建、已付款、已發(fā)貨、已收貨、已關(guān)閉等五個狀態(tài),則該交易訂單就可以對應(yīng)五個節(jié)點,這五個節(jié)點之間具有一定的關(guān)聯(lián)關(guān)系,在其中一個節(jié)點接收到某操作之后,可能會到達另一個節(jié)點。
[0044]在系統(tǒng)啟動時,就可以加載該配置文件,這樣在接收到對指定交易訂單進行操作的請求時,首先可以根據(jù)請求中攜帶的訂單標識查詢到對應(yīng)的目標交易訂單,并根據(jù)該目標交易訂單所處的狀態(tài)確定該目標交易訂單當前所處的節(jié)點,然后再將請求中攜帶的操作名稱與該節(jié)點上可執(zhí)行的操作信息進行比對,如果可執(zhí)行,再根據(jù)操作名稱確定出對應(yīng)的操作類型。
[0045]例如,某交易訂單當前處于已創(chuàng)建狀態(tài),則對應(yīng)的節(jié)點就是已創(chuàng)建節(jié)點,該節(jié)點中可執(zhí)行的操作有付款、取消訂單等;假設(shè)請求中攜帶的操作名稱為“付款”,則經(jīng)比對,屬于該節(jié)點上可執(zhí)行的操作,因此,就可以進一步根據(jù)該操作的名稱確定該操作所屬的類型。其中,付款操作對應(yīng)的操作類型為資金處理操作。如果某交易訂單當前處于已發(fā)貨狀態(tài),則對應(yīng)節(jié)點中可執(zhí)行的操作有確認收貨等,此時,如果接收到的請求中攜帶的操作名稱為“取消訂單”,則可能會被識別為不可執(zhí)行的操作,返回錯誤提示。
[0046]S103:根據(jù)所述訂單標識確定該交易訂單在該操作類型下所使用的目標工具;
[0047]對于交易平臺中的各類業(yè)務(wù)而言,使用的資金處理工具可以是預(yù)先設(shè)定好的,例如,對于一些普通實物的擔保交易,使用的資金處理工具一般會設(shè)定為“支付寶”、“余額寶”等,當然,也可以設(shè)定其他的資金處理工具。在針對買賣用戶雙方之間的具體某項交易生成交易訂單時,前端頁面會傳遞一些參數(shù)到交易平臺服務(wù)端,其中包括具體的商品對象信息等,相應(yīng)的,交易平臺就可以確定出該交易訂單需使用具體何種資金處理工具,并記錄該訂單記錄與該資金處理工具之間的對應(yīng)關(guān)系。當然,在實際應(yīng)用中,也可以允許買家用戶選擇資金處理工具,此時,可以根據(jù)買家用戶的選擇結(jié)果,確定交易訂單使用的資金處理工具,交易平臺據(jù)此進行記錄即可。關(guān)于物流工具,同樣可以是預(yù)先針對商品對象的特點設(shè)定好的,或者也是可以由買家用戶選擇的,但都可以記錄下交易訂單與其使用的物流工具之間的對應(yīng)關(guān)系。
[0048]總之,交易訂單使用的資金處理工具、物流工具都會保存在這筆訂單記錄上,并用特殊字段進行標識。例如,資金處理工具有特殊字段payTool來標示,資金處理工具的子項用 subPayTool 來標示。比如 payTool: alipay, subPayTool: secure,則表示使用了支付寶的普通擔保交易付款。物流工具可以用特殊字段logisticsTool標示。總之,在接收到對交易訂單的操作請求時,直接可以根據(jù)訂單標識查詢到對應(yīng)的訂單,并可以查詢出該訂單使用的何種資金處理工具、何種物流工具。
[0049]S104:將所述請求轉(zhuǎn)發(fā)到該操作類型對應(yīng)的網(wǎng)關(guān),并在所述請求中攜帶所述目標工具的標識,以便該網(wǎng)關(guān)調(diào)用該目標工具對應(yīng)的處理組件,對所述請求進行處理。
[0050]在確定了需要完成的操作類型,以及該操作類型下使用的目標工具之后,就可以將訂單處理請求轉(zhuǎn)發(fā)至相應(yīng)的網(wǎng)關(guān),并在請求中攜帶目標工具的標識,這樣,該網(wǎng)關(guān)就可以調(diào)用該目標工具都應(yīng)的處理組件,來處理該請求。其中,如果是操作類型是資金處理操作,流程引擎就會將請求轉(zhuǎn)發(fā)至資金處理網(wǎng)關(guān),并在請求中攜帶上目標資金處理工具的名稱,例如,預(yù)授權(quán)等,這樣,資金處理網(wǎng)關(guān)就可以調(diào)用預(yù)授權(quán)工具對應(yīng)的處理組件。如果操作類型是物流操作,則流程引擎會將請求轉(zhuǎn)發(fā)至物流網(wǎng)關(guān),并在請求中攜帶上目標物流工具的名稱,這樣,物流網(wǎng)關(guān)可以調(diào)用該物流工具對應(yīng)的處理組件對當前請求進行處理。由于處理組件中已經(jīng)定義了具體的