發佈日期:

訂單正在 “等待付款”,WooCommerce不會發送電子郵件的問題

訂單狀態顯示「待付款」(On-Hold),WooCommerce不會發送電子郵件,導致少上線的店長會驚訝地看到上個月有個訂單正在 “等待付款”,其實是信用卡或 Paypal 付款頁沒完成就離開了!

這不只是嚇到店長而已,商品庫存也會扣著,可能導致庫存量過低的假象。

WooCommerce 的等待付款其實沒意義,因為付款出問題,購物車也無法回復,客戶只能重新買一次…這應該在新版有改進,或者有外掛可用?

總之,目前最快的解決辦法是用”保留庫存” (在 Woocommerce 的設定>商品>庫存),設定幾分鐘後,”等待付款”會自動變成”取消”,取消的訂單有通知信。

WP Crontrol 外掛可以看到這樣的排程,方便除錯:

WP Crontrol

可惜的是,這樣自動取消的訂單,還是沒有通知信…XD

只好自己加程式,可參考官方的樣板,得知在哪邊加比較方便:

https://woocommerce.github.io/code-reference/hooks/hooks.html

找 unpaid 這個字,找到: woocommerce_cancel_unpaid_orders()

[code]add_filter('woocommerce_cancel_unpaid_order','woocommerce_cancel_unpaid_order_WCC',20,2);
function woocommerce_cancel_unpaid_order_WCC( $ret, $order ){
    WC()->mailer()->get_emails()['WC_Email_Cancelled_Order']->trigger( $order->get_id() );
    
    return $ret;
}[/code]
如果 $ret 是 False ,那就不會取消,可以用來重複測試寄信程式,只是,需要去設定幾分鐘那邊重刷網頁,以便設定新的排程。