外觀
訂單 #285035 超商取貨異常排查報告
日期:2026-04-16 站台:HARU (letsharu.com) 撰寫:Nel Tseng
一、問題描述
訂單 #285035 顧客已完成信用卡付款 ($1,260) ,運送方式為超商取貨,但訂單缺少門市資訊 (門市名稱、地址、取貨人、電話) ,官網訂單列表無法顯示「超取需出貨」,藍新後台亦無對應的超取出貨單。
二、問題訂單事件鏈
顧客:鄭宇峰 / 訪客身份 / iPhone Safari / Google Ads 進站
第一筆訂單 #285034 (正常)
08:06 Google Ads 進站
08:25 瀏覽商品
08:26 進入結帳頁
08:33 送出訂單 #285034 ($1,400)
運送方式:超商取貨
付款方式:信用卡
→ 超取參數正確帶入,跳轉藍新付款頁
08:36 付款完成,訂單成立此筆訂單流程正常,藍新收到超取參數,顧客在付款頁選擇門市,訂單包含完整門市資訊。
購物車未清空 (中間事件)
08:37 顧客從感謝頁回到結帳頁
→ 購物車仍有商品 (付款後未自動清空)
08:38 顧客手動清空購物車,重新瀏覽並加入商品第一筆訂單付款完成後,購物車未被清空。顧客手動移除商品後重新加入,進入第二次結帳。
第二筆訂單 #285035 (異常)
08:40 回到結帳頁,購物車有商品
08:41 更新購物車
08:42 送出訂單 #285035 ($1,260)
運送方式:超商取貨
付款方式:信用卡
→ 超取參數未帶入,藍新僅收到信用卡付款指令
08:44 付款完成
→ 藍新回傳 PaymentType=CREDIT (純信用卡)
→ 無門市選擇流程,無門市資料回傳
→ 訂單狀態為已付款,但無超取出貨資訊同一位顧客、同樣選擇超商取貨與信用卡付款,第二筆訂單的超取參數沒有送出。
三、排查過程
3-1 資料庫比對
比對正常訂單與異常訂單的關鍵欄位:
| 欄位 | #285029 (正常) | #285035 (異常) |
|---|---|---|
| 運送方式 | newebpay_cvscom (超商取貨) | newebpay_cvscom (超商取貨) |
| 超取標記 _CVSCOMNotPayed | 1 | 0 |
| 門市名稱 | 統一園中門市 | 缺 |
| 門市地址 | 高雄市林園區中門里中門路15-1號 | 缺 |
| 取貨人 | 陳柏錩 | 缺 |
兩筆訂單的 WooCommerce 運送方式都正確記錄為超商取貨,但異常訂單的超取標記 (_CVSCOMNotPayed) 為 0,導致送藍新時未帶入 CVSCOM 參數。
3-2 藍新 API 查詢
查詢 #285035 的藍新交易紀錄:
- 交易狀態:成功
- 付款類型:CREDIT (信用卡)
- 金額:1,260
- 授權碼:840248
- 請款狀態:已請款
確認藍新端收到的是純信用卡交易,未收到超商取貨 (CVSCOM) 參數。
3-3 藍新外掛程式碼追蹤
追蹤 newebpay-payment v1.0.10 外掛的超取參數處理流程,發現外掛判斷是否帶入 CVSCOM 參數的方式是讀取結帳表單中一個名為 cvscom_not_payed 的 checkbox 欄位,而非根據 WooCommerce 的運送方式 (shipping method) 判斷。
經完整搜尋外掛程式碼,確認外掛的付款參數組裝流程中,沒有任何位置讀取或參考 WooCommerce 運送方式。
3-4 子主題客製程式碼
站台的子主題 woodmart-child/functions.php 中有一段客製程式碼,內容包含:
- 自建超商取貨運送方式 (因現行版本外掛不含此功能)
- 前端 JavaScript 控制:偵測顧客選擇超商取貨運送方式時,自動設定該 checkbox
- 後端 PHP 過濾:防止非超取訂單誤帶超取參數
這段程式碼的註解標示「配合新版 newebpay-payment 外掛使用」,為既有的整合方案。
3-5 問題場景還原
透過 PHP error log 以及實際下測試單 (#285082) 還原問題:
Error log 顯示:多筆超取訂單建立時,PHP 回報 cvscom_not_payed 欄位不存在於送出的表單資料中。此現象不僅限於 #285035,在其他超取訂單中亦有出現。
測試單 #285082:以相同條件 (超商取貨 + 信用卡) 下單,結果 _CVSCOMNotPayed 同樣為 0,確認問題可重現。
四、判定結果
直接原因
送藍新付款時未帶入 CVSCOM 參數,藍新將交易視為純信用卡付款,不啟動超商取貨流程 (門市選擇、取貨人資訊填寫) ,因此訂單無門市資料。
根本原因
藍新外掛 newebpay-payment v1.0.10 的超取參數判斷機制,依賴結帳表單中的一個 checkbox 欄位值,而非從 WooCommerce 訂單的運送方式推導。子主題中雖有客製程式碼負責在前端自動設定此欄位值,但該機制在特定操作流程下,欄位值未能正確傳遞至後端,導致超取參數遺失。
影響範圍
此問題不限於訂單 #285035 的特定操作流程。PHP error log 顯示其他超取訂單建立時亦存在相同的欄位遺失警告,代表目前的超取參數傳遞機制存在不穩定性。
五、建議處理方向
- 後端補正:在送出藍新付款參數前,以 WooCommerce 訂單的運送方式作為判斷依據,若運送方式為超商取貨則自動帶入 CVSCOM 參數,不依賴前端 checkbox
- 防護閘門:若運送方式為超商取貨但超取參數未設定,阻擋送出並記錄異常
- 歷史訂單排查:查詢既有訂單中運送方式為超商取貨但超取標記為 0 的訂單,確認影響範圍
