四. 產品git
(四) 禮券app
1. 概述異步
客戶可能會購買禮券而後在以後的購買中兌換其餘商品。禮券是一種特殊類型的數字產品。他們能夠被設置爲產品而後能夠在商店中購買到。當訂單來了以後,他們會經過建立記算餘額的財務科目來完成。spa
以後,當他們被兌換的時候,客戶只要輸入一個禮券代碼,這個禮券能夠是一個內部禮券也能夠是外部有價值連接的禮券。若是商店被配置爲使用內部禮券,那麼禮券就能夠被用於爲訂單付款,過程就像其餘付款處理同樣,有認證、捕獲、釋放、退款。xml
2. 設置禮券ci
在目錄管理中,設置禮券爲一個類型爲數字商品的產品。而後使用產品的[內容]頁面添加類型爲「外部異步執行」的產品內容,這是一個指向服務名爲ofbGcPurchase的內容。你能夠建立禮券這個虛擬產品的變體,這隻須要將產品內容與虛擬產品的父級項相關聯便可。產品
當前,禮券金額是基於禮券價格的。將來,咱們可能使用」固定金額」字段來將價格與面額區分。it
在採購時收集的信息,好比接收電子郵件或禮券信息,是基於一個」調查」的。調查能夠在目錄管理中設置。調查必須被設置爲容許匿名回饋和屢次回饋,這樣一個新的用戶可以訂購一個禮券,並且同一個用戶也能夠屢次訂購禮券。io
一般,針對禮券定義的參數是被設置在ProductStoreFInActSetting實體中的,這些配置定義了是否須要PIN碼,禮券號以及PIN碼的長度,以及用於採購信息的調查。字段validateGCFinAcct用於告訴付帳流程當用戶付款時是否針對財務科目驗證禮券代碼。(若是保留爲空則不驗證)當前驗證只是在不須要PIN碼的狀況下才會作。注意ProductStoreFinActSetting必須在一個XML文件中建立而後被加載,沒有用戶界面用於維護它。ast
3. 訂購禮券
每一個在系統中運行的訂單都是從一個名叫checkDigitalFulfillment的服務開始的。若是是一個數字產品,那麼執行的服務叫fulfillDigitalItems。在上面提到的禮券例子中,還會調用ofbGcPurchase。這將使得禮券和其餘數字產品被當即執行,不管在同一訂單中的實體產品是否在倉庫中存在。禮券很實體產品將會獨立生成發.票。
OfbGcPurchase會查看商店禮券的設置,而後根據一個唯一的隨機數建立一個新的財務科目。而後添加採購金額做爲一個FinAccountTrans交易。而後利用調查生成一封電子郵件,接着查看在產品商店電子郵件設置中定義的郵件地址發送郵件通知禮券的接收者。
4. 執行禮券
爲追蹤禮券的執行,須要在你商店的電子郵件設置中定義一個BCC(隱藏抄送),這樣就能夠對電子郵件作記錄。一樣,對於接收返回郵件的郵件地址設置發送方郵件地址,這樣就能夠追蹤返回郵件了。
很是重要的事情是確保禮券調查中的描述字段與確認郵件FTL文件(FreeMaker文件)中的字段要嚴格一致,不然郵件就會出錯。好比,若是你的調查中的描述字段是「Message」,你的FTL就必須是${Message}。
5. 查看已執行的禮券
當前在訂單管理模塊的訂單查看頁面上沒有相關頁面可用於查看客戶以及購買的禮券。這個功能在未來會被添加。
6. 使用禮券付款
系統接受禮券來付款,可使用內部禮券或系統外的禮券,這個是基於商店付款的設置的。配置內部禮券,須要設置禮券的認證、捕獲、釋放、再認證、退款等付款處理服務。請參考文件applications/ecommerce/data/DemoProduct.xml中關於信用卡和禮券的ProductStorePaymentSetting實體設置。
在付款時,用戶能夠輸入一個禮券號,根據禮券號,系統會查看禮券的財務科目,而後添加其爲一種付款方式。但用戶付款時,系統將使用禮券付款處理器來處理付款。
若是有多種付款方式(如禮券和信用卡),系統當前捕獲的付款方式是基於他們被加入到購物車的順序的。
7. 訂單取消
付款釋放處理器將使得針對禮券的認證失效。
8. 退貨
退款處理器將致使款項退回給原先的禮券。
9. 有關記錄禮券認證的注意事項
明確記錄認證而不是依賴當前餘額是很重要的,由於訂單一般會爲客戶預留庫存。這樣,當交易實際上不可以繼續的時候,不至於會引發庫存大量的累積。