Skip to content

訂單 #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 (超商取貨)
超取標記 _CVSCOMNotPayed10
門市名稱統一園中門市
門市地址高雄市林園區中門里中門路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 中有一段客製程式碼,內容包含:

  1. 自建超商取貨運送方式 (因現行版本外掛不含此功能)
  2. 前端 JavaScript 控制:偵測顧客選擇超商取貨運送方式時,自動設定該 checkbox
  3. 後端 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 顯示其他超取訂單建立時亦存在相同的欄位遺失警告,代表目前的超取參數傳遞機制存在不穩定性。

五、建議處理方向

  1. 後端補正:在送出藍新付款參數前,以 WooCommerce 訂單的運送方式作為判斷依據,若運送方式為超商取貨則自動帶入 CVSCOM 參數,不依賴前端 checkbox
  2. 防護閘門:若運送方式為超商取貨但超取參數未設定,阻擋送出並記錄異常
  3. 歷史訂單排查:查詢既有訂單中運送方式為超商取貨但超取標記為 0 的訂單,確認影響範圍