如何讓 OpenCart 會員依累計消費自動升級

資深電商工匠
4 min readMay 22, 2020

--

OpenCart 內建的會員群組功能,允許您自訂多個會員群組,並且可以針對不同的會員群組,設定不同的紅利點數、商品特價等等,不過系統並沒有內建自動升級的功能,如果您需要系統能依據會員的累計消費金額,來變動會員等級的話,就必須安裝擴充模組來增加此功能。

在 OpenCart 的 Extension Store 中,有幾套模組能提供會員自動升級的功能,我們選擇了 Customer Group Auto Switcher 模組,接下來,就來分享一下我們的使用經驗。

這一套 Customer Group Auto Switcher 會員自動升級模組,是自從 OpenCart 1.5.x 的年代就開始發展的,所以目前替換代碼的部分,仍是以 vqmod 設計的,不過由於模組沒有完全滿足我們的需求,所以後來我們自行以 OCMOD 改寫過,如果你也不喜歡系統多掛一套 vqmod,那建議考慮其他廠商開發的模組,例如 : https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=25207

這套 Customer Group Auto Switcher 的模組設定介面,是直接改寫了系統的會員群組管理功能,在會員群組管理清單中,會顯示每個會員群組的升級規則說明,很容易了解每一階會員等級的升級規則。

會員群組管理清單

進入到會員群組的編輯畫面,可以看到擴增了一些升(降)級相關的欄位設定,例如升級後的下一個等級、訂單累計金額門檻、訂單累計日數、納入訂單累計的訂單狀態、還有啟用降級功能等等。

會員群組編輯畫面

模組能依照規則運作穩定,畢竟已經維護多年,但在使用上我們遇到了幾個狀況,跟大家分享。

第一點 無法一次跳級升級

在會員結帳、會員登入、會員進到我的帳號時,這套模組都會觸發會員等級變動的檢查,即使現有會員已達升級資格者,也會在模組安裝後,再次登入時觸發升級。

但是我們卻發現,這套模組被設計成每次變動只跳動一級,即使明明會員應該有資格連跳2級,也只會在第一次觸發升級時升等一級,必須再次被觸發,才會升到應有的等級,沒有辦法一次升到位,分析過模組成程式,的確如此設計,應該是沒有考慮到一次跳升2級的需求,如果您不介意,例如您的網站只分2個會員等級,這問題就可以忽略。

第二點 累計消費的日期認定

會員累計消費金額的日期區間,是抓訂單的產生日期計算的,例如設定 365 天的累計區間,就會找訂單產生日期是落在往前 365 天之內的訂單,並篩選指定的訂單狀態。

不過,OpenCart 的訂單產生日期,並不一定就是結帳的時間,例如當您安裝了一頁式結帳,在會員初次進入到結帳畫面時,系統就會建立一筆臨時的訂單紀錄,押上訂單編號及產生日期,並使用會員編號或 Session ID 來關聯,所以當某個會員或訪客,在系統中已經存在臨時訂單的紀錄,則在該會員完成結帳之前,都會使用該筆紀錄作為訂單資料,包含訂單編號及產生日期,即使會員是在建立了臨時訂單後的一個月才真正結帳,該筆訂單仍會是使用一個月前所建立的訂單編號及產生日期。

在上述這種情境之下,以訂單的產生日期來做為消費日期區間的判別欄位,可能會失真,一張在 366 天前建立臨時訂單,並在 3 天之後完成結帳的正式訂單,有可能因此不會被納入累計金額,因為它被視為 366 天前的訂單,雖然它其實是在最近 365 天之內結帳的訂單。

如果您的系統沒有使用一頁式結帳,或您的一頁式結帳模組沒有這種情形,那就可以忽略這個問題。

結論

以上 2 個問題,我們都以自行改寫模組完成修正,不過第一點的問題處理,需要重新改寫整個升降級判斷的程式,工程不小,若您正準備導入依會員累計消費自動升等的功能,請注意我們提到的問題,希望以上的經驗分享,對您有所幫助。

--

--

資深電商工匠
資深電商工匠

Written by 資深電商工匠

開源電商首席工程師,18年購物網站設計、商家輔導上線經驗 ... https://www.osec.tw

No responses yet