Skip to content

v3.5.15 修正 PayUni 重試複製訂單搬移品項導致 0 元空單

Choose a tag to compare

@j7-dev j7-dev released this 21 Jul 03:31
· 4 commits to master since this release

修正

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