LINEPAY API error code 錯誤代碼 1106 – ip問題

LINEPAY API error code 錯誤代碼 1106 - ip問題

之前有個客戶,明明LINEPAY所有設定都沒問題,但結帳就是一直出現錯誤代碼1106。去看LINEPAY API官方文件,1106對應的錯誤描述是Header Information Error標頭資訊錯誤。呃,這種不清不楚的說明,還是搞不懂問題出在哪裡。所以修改代碼,看看有沒有更進一步的訊息。


LINEPAY API錯誤訊息

用的woocommerce linapay外掛是LINE Pay Gateway for WooCommerce。用外掛編輯器選取該外掛,再點選class-hpd-linepay-gateway.php。找到第138行上下的if敘述:

        if ( $response_data->returnCode != '0000' ) {
            throw new Exception(
                sprintf(
                    __( 'Incorrect parameters were passed during checkout. Please contact site administrator. Return code: %s', 'wc-payment-gateway-line-pay' ),
                    $response_data->returnCode
                )
            );
        }

把輸出的errorCode換成errorMessage

        if ( $response_data->returnCode != '0000' ) {
            throw new Exception(
                sprintf(
                    __( 'Incorrect parameters were passed during checkout. Please contact site administrator. Return code: %s', 'wc-payment-gateway-line-pay' ),
                    $response_data->returnMessage
                )
            );
        }

DeBug的過程

重新整理一下前端頁面,看看會輸出什麼訊息。呃,是IP問題,IP和linepay商店後台設定的白名單不一樣。(這不是客戶的實際錯誤圖示,只是拿自己網站去模擬同樣的錯誤)

但明明都再三確認過,怎麼會有IP填錯的低級錯誤。原來客戶端的主機用的是BlueHost,它對外顯示的網域IP,和主機程式連線出去的IP是不一樣的。我最初幫客戶在linepay後台白名單設定的是網域IP,更新為程式連線的IP(錯訊訊息寫的IP)後就可以正常結帳了。


後記

整個除錯的過程當中,最大的問題應該是LINEPAY API官方文件。官方文件錯誤訊息就只寫個Header Information Error,Google搜尋也沒找到相關資訊。因為單從字面上的標頭資訊錯誤,其實問題有很多可能性,我一開始以為是主機連線或標頭交換程式有問題。沒想到errorMessage輸出後,原因是如此單純。

如果需要免費的woocommerce linepay可以參考此篇文章woocommerce line pay外掛更新下載-客製修改3

好文分享給朋友

您可能還喜歡...