客戶使用綠界官方的金流外掛,一直無法在完成付款後重新導向回感謝頁,查了文件確認是用 OrderResultUrl
這個參數來設定沒錯,所以就在 class-wc-gateway-ecpay.php
裡面加入處理結帳完成後的重新導向參數:
但奇怪的是還是沒有重新導向,我也有在 log 中確認這個參數帶入的值是感謝頁無誤,但金流文件裡面就是這個參數沒錯,也試過不是大小寫的問題,卡了好久才發現到它觸發重新導向的方式跟我平常熟悉的 WooCommerce Gateway 不一樣,它是透過一個 Helper 去呼叫綠界的 SDK,也就是說這邊 $data
傳送的參數並不是真正傳送給綠界的資料,只是一個暫存罷了。
真正的要傳的資料是放在 /includes/helper/ECPayPaymentHelper.php
,在處理傳送資料前,會有一個 checkoutPrepare()
方法來檢查 $data
裡面的參數是否在白名單之中:
由於綠界官方金流外掛預設並沒有把 orderResultUrl
這個參數加入白名單,而這邊也沒有 Filter 可以處理,因此只好直接硬塞,加完白名單後再把 $data
裡面的 orderResultUrl
加到真正要傳到綠界的一般參數裡面:
最後再根據付款方式把 OrderResultURL
加到各種付款方式的延伸參數之中,這樣就能確保結完帳之後會正確重新導向回感謝頁。