豹發力(PFL)是台灣的包裝禮品供應商,販售封口袋、禮盒、包裝品、裝飾品、節日用品、組合品等多元商品,產品數量高達近兩千筆。
客戶原有的 ERP 系統管理著所有產品與客戶資料,希望建置一個同時支援 B2B(經銷商)與 B2C(一般消費者)的電商平台,並能與 ERP 雙向同步,避免人工重複輸入資料。
整個系統以 Laravel + Filament 為核心,串接 ERP 的產品、庫存、客戶、訂單模組,搭配綠界科技 ECPay 金流處理線上付款,實現從下單到 ERP 入帳的完整自動化流程。
以前是這樣:客人在網站上下單,營運人員把訂單印出來,再打開 ERP 把同一筆資料重打一次。近兩千筆商品、每天數十張單,數量打錯一個就是一次出貨糾紛。現在客人按下結帳的那一刻,同一張訂單已經在 ERP 裡了。
✓ 訂單成立
訂單編號 PFL-24090873
合計NT$ 8,640
信用卡・付款完成
| 單號 | 客戶 | 金額 | 狀態 |
|---|---|---|---|
| 24090871 | 經銷商 A | 12,400 | 已建立 |
| 24090872 | 經銷商 B | 3,280 | 已建立 |
| 24090873 | 網路訂單・B2C | 8,640 | 已建立 |
+00:02 · 由電商自動建立,沒有人動手輸入
※ 上圖為流程示意,非實際畫面截圖
同一張訂單,客人端與營運端各看各的畫面,但資料只輸入一次。營運人員要做的只剩確認出貨,不用再開兩個系統對照著打字。
與 KTNET TMS ERP 系統雙向同步,涵蓋產品資料(價格、庫存、描述)、客戶資料(B2B/B2C)、訂單(建立+狀態回寫),採用 HMAC-SHA512 簽章認證
以 Filament 建構完整的電商後台,管理產品、訂單、客戶、業務員等資源,並提供 ERP 手動同步介面與流程圖視覺化
整合綠界科技金流服務,支援信用卡、ATM 轉帳、超商代碼等多元付款方式,B2B 訂單直接推送 ERP,B2C 付款完成後自動同步
ERP 同步五階售價機制,依客戶等級自動匹配對應價格。庫存數量即時從 ERP 同步更新,確保前台顯示與實際庫存一致
客戶在電商上按下結帳之後,資料要自己走進 ERP——這才是這套系統真正要解決的事。下面這張泳道圖把一張訂單攤開來看:從商品由 ERP 下行上架、客戶選購、ECPay 收款、訂單推送回 ERP,一路到單號與狀態回寫,中間沒有任何一格需要營運人員手動謄寫。
圖上唯一「不自動」的地方,是營運人員在後台勾選哪些商品要同步、以及同步失敗時挑出單筆重送。其餘每一次跨系統的資料交換都由事件觸發,並以 HMAC-SHA512 簽章驗證來源。
產品、庫存、客戶主檔從 ERP 下行到電商;訂單與電商上新增的客戶則反向推回 ERP。如果只做單向匯入,電商端長出來的資料永遠回不到 ERP,人工謄寫並沒有真的消失。
B2B 訂單走帳期,建立當下就推送 ERP;B2C 則要等 ECPay 回傳付款成功才推。同一套訂單模型,用事件決定推送時機,避免未付款的訂單先進 ERP 佔掉庫存。
近兩千筆商品的批次同步透過 Laravel Queue 在背景跑,不阻塞前台。Filament 後台提供即時進度與失敗清單,可針對單筆重送,不必整批重跑。
透過 ERP 廠商 API 的 /product/QueryList 與 /Stock/QueryList 端點,同步產品名稱、多階售價(五階)、EAN 條碼、庫存數量、上架狀態等欄位。支援手動指定商品代碼同步,或一鍵同步所有標記為可同步的產品。
客戶資料支援雙向同步:從 ERP 拉取客戶清單(依代碼首碼自動區分 B2B Client / B2C Customer),也能將本地新增的客戶推送回 ERP。同步內容涵蓋基本資料、公司資訊、發票設定、運費門檻、紅利點數等。
訂單採用事件驅動架構:B2B 訂單建立後立即推送 ERP,B2C 訂單則在 ECPay 付款完成後自動觸發。訂單推送包含主檔(客戶、地址、發票)、明細(商品 SKU、數量、單價)與紅利折抵。ERP 回傳的訂單編號與狀態會即時回寫同步。
大量同步作業透過 Laravel Queue 在背景執行,避免前台操作被阻塞。Filament 後台提供即時進度追蹤,CLI 指令支援排程自動化與手動觸發。
豹發力原本的 ERP 系統已經管理著近兩千筆產品與所有客戶資料,如果只做單向匯入,新增的客戶或訂單就無法回寫到 ERP,營運人員還是得手動謄寫資料。因此我們設計了雙向同步機制:產品/庫存從 ERP 拉到電商平台,訂單建立後又推回 ERP,並以 HMAC-SHA512 簽章確保雙向傳輸的資料安全與驗證來源正確性。
本專案於 2024 年完成,涵蓋產品、客戶、訂單三大同步模組,加上 ECPay 金流與 Filament 管理後台。像這種規模的 ERP 串接電商平台,開發時程通常落在 2–3 個月,實際天數會依 ERP 廠商 API 的完整度與資料欄位的複雜度(例如豹發力的五階售價機制)而有所增減。
不會,我們採用事件驅動架構區分兩種訂單流程:B2B(經銷商)訂單建立後立即推送 ERP,B2C(一般消費者)訂單則是在 ECPay 付款完成後才自動觸發同步,兩條路徑各自獨立觸發,也各自對應五階售價中不同客戶等級的售價機制,不會互相影響。