v3.5.15 修正 PayUni 重試複製訂單搬移品項導致 0 元空單
修正
woomp_copy_order() 把品項「搬移」而非複製(#126)
PayUni 回傳「已存在相同商店訂單編號」而重建訂單時,原本會把原訂單的品項搬移到新訂單,導致連續重試後付款成功的訂單變成 0 元空單,並連帶造成:
- 營收報表少計(管理員儲存訂單後總額被重算為 0)
- 綠界/電子發票自動開立失敗(「商品明細資料格式不正確」)
- 依品項觸發的虛擬商品/課程權限發放全部失效
變更內容
- 訂單品項改為
clone+set_id( 0 )後再加入,save()時走 INSERT 真複製,不再搬移原訂單品項 - meta 複製不再強轉字串,修正陣列型 meta(如
_ecpay_invoice_data發票載具)被毀成"Array"的附帶問題 - 複製時剝除
_reduced_stock/_restock_refunded_items,避免真複製後庫存被重複判定為已扣而超賣 - 新增
CopyOrderTest迴歸測試(7 tests / 48 assertions)
⚠️ 本次修正僅防止未來再發生。已受影響的既有訂單需人工修補(補品項/重算總額/補開發票/補發權限)。
Full Changelog: v3.5.14...v3.5.15