WooCommerce 建立訂單時取得金流回傳資料的勾點

這週遇到一個狀況時我需要在訂單成立的時候取得第三方金流回傳的資料,我之前的處理方式是使用 woocommerce_order_status_changed 來做,但如果是剛成立的訂單且訂單狀態還停留在等待付款中時,這個勾點就不會觸發到。

我首先嘗試使用 woocommerce_new_order 這個勾點可以在訂單建立時觸發,但我卡在客戶的網站有使用第三方金流,我需要在訂單建立時就能取得第三方金流所回傳的付款資訊,像是 ATM 虛擬帳號或是付款結果。

爬了 WooCommerce 的程式碼之後發現到類別 WC_Order_Data_Store_CPT 裡面有幾個訂單資料寫入的方法,像是 create()update(),後者裡面有一個 woocommerce_update_order 勾點,看起來是會在訂單寫入相關資料後進行觸發。

因為我需要當金流外掛將回傳資料寫入後進行觸發,因此覺得 woocommerce_update_order 就是我所需要的,嘗試之後果然沒錯,有成功拿到我需要的資料並且是在訂單建立時就會觸發。但,這個勾點會在每更新一次訂單資料的時候觸發,也就是說如果你的訂單有 100 筆資料要更新,那麼勾點就會觸發 100 次,我在測試的時候差點把 API 打到掛掉 > <

於是我繼續搜尋還有沒有跟訂單狀態有關的勾點,也思考著是不是要尋找 PHP 的非同步解決方案,等待金流回傳資料寫入完成後再做事情,但光想就覺得燒腦,後來念頭一轉,要能夠在訂單資料建立且拿到回傳資料,這不就是前台結帳會發生的流程?

想通之後就不再拘泥於訂單的勾點,而是改用 woocommerce_thankyou 勾點來進行觸發,這樣就能實現在訂單狀態不改變的情況下,拿到第三方的回傳資料。

目錄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Picture of 賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2024 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!