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