修改綠界超取無法使用其他付款方式的限制

說明綠界超取不付款為何無法選擇其他付款方式的原因,並講解如何修改綠界的模組程式,讓其他的付款方式也能出現在結帳的付款方式選項中。

綠界金流是很多人使用的 OpenCart 金物流模組,因為綠界官方提供的模組,已算是穩定堪用,最商家來說非常方便,然而綠界金流官方提供的金物流模組,不知是基於何種原因,限制了純超商取貨時可選用的支付方式,只能選擇綠界自家的整合金流(信用卡、超商條碼、超商代碼…),即使你明明系統已安裝了銀行轉帳或是其他支付方式,當運送方式是純超商取貨時,都不會出現非綠界金流的選項。

為何綠界純超取無法使用綠界以外的付款方式?

綠界是基於何種原因,讓純超商取貨不能選擇綠界以外的付款方式,我並不清楚,至於為何結帳時不會出現其他的付款方式,是因為在綠界的模組程式中,有一段程式碼,會判斷當運送方式為綠界的超商取貨(不付款)時,就從付款方式的清單中,將非綠界的金流模組隱藏,於是在結帳畫面上,就不會出現如銀行轉帳或是其他付款方式的選項了。

如果你並不打算提供其他的付款方式,那麼這個限制就不會是個問題,但如果你希望能夠提供銀行轉帳、或是 LINEPay 等其他的付款方式,那麼這個限制就會讓你無法提供銀行轉帳、或是 LINEPay,給純超取不付款的買家使用。

如何讓綠界純超取也能使用綠界以外的付款方式

找到這段隱藏其他付款方式的程式碼,解放其他的付款方式。

綠界金物流模組的程式,除了 OpenCart 系統所需的 MVCL 相館檔案以外,還有一些 incloud 檔及 SDK 之類的檔案,也點多,需要花時間去解讀才能找到這段碼,所以當我花了不少時間研究之後,決定分享給大家,以協助大家能節省時間,盡快修改成你要的模式。

綠界隱藏其他付款方式的手法,是透過一個叫做 ecpay_logistic_payment_method 的 Event (事件)機制,這個 Event 是在安裝綠界模組的時候註冊到 OpenCart 系統的,它會在系統執行完 catalog/model/setting/extension/getExtensions 之後觸發,接續執行綠界準備好的 extension/payment/ecpaylogistic/chk_payment_method 這支 function,並在這個 function 中進行隱藏其他付款方式的動作。

找到並開啟 extension/payment/ecpaylogistic.php 這支檔案,並找到 chk_payment_method function (如下圖),在畫面中可以清楚看到綠界在程式中的註解(給綠界工程師一個讚),在紅框的段落就是綠界移除其他付款方式,只留下綠界整合金流的程式段落,最簡單的方式是將 unset($output[$key]); 這一行註解掉,當然你也可以透過修改程式,只增加開放你希望開放的付款方式。

為何修改後仍然沒有出現其他付款方式

如果你是直接修改綠界的程式,有可能會發生修改後,仍然看不到其他付款方式的結果,這通常是因為這一支程式也被其他模組修改(代碼替換)過,所以系統執行時,會先去尋找代碼替換後的檔案,所以你只要在修改好綠界的程式碼之後,讓系統再跑一次代碼替換,那麼代碼替換過的檔案就會含有你修改過的部分,應該就會出現其他的付款方式了。