woocommerce line pay外掛更新下載-客製修改3
line pay目前是台灣能見度與使用度最高的行動支付,如果要做網路商店卻不支援line pay付款,實在是件很奇怪的事。原以為這個外掛應該是很普遍的東西,沒想到wordpress外掛官網卻只找到一個下載,而且還無法使用。今天就來研究看看woocommerce line pay外掛到底有什麼問題。
woocommerce line pay無法使用
網上搜尋到的免費外掛有兩個,一個是LINE Pay for WooCommerce,一個是LINE Pay Gateway for WooCommerce。
前者是wordpress外掛官網可下載,但注意看它說明寫的,This plugin extends the WooCommerce shop plugin for LINE Pay in Japan.。推測安裝後無法設定啟用的原因應該是只限日本使用。
後者是在github給人下載後,再上傳到wordpress安裝。但測試時發生錯誤,該外掛最後更新日是2015年,推測是時間久了,可能與wordpress或linepay有不相容的錯誤。
前置工作-linepay合作商店申請及設定
申請連結:(申請與審核會很久,確定要用linepay的話,資料準備好早點送)
https://pay.line.me/portal/tw/merchant-apply
審核通過後,登入linepay店家後台,要做的事只有兩個:
第一,取得管理連結金鑰的ID和Secret Key
第二,設定付款伺服器IP(就是輸入自己主機或付款來源的IP)
LINE Pay Gateway for WooCommerce測試
因為line pay gateway for woocommerce只有三個php程式組成,比較好debug,所以決定測試及修正這個外掛。
去下載LINE Pay Gateway for WooCommerce,然後上傳並啟用(這過程不贅述了)。
接著在外掛設定畫面輸入前述的ID和Secret Key並啟用。
新增一個測試商品,到前台進行購物流程,可以順利進入最後的結帳畫面。
用手機掃碼,進入linepay付款,一直到輸入密碼或指紋都正常,但完成付款後卻變成一片空白的畫面。
woocommerce後台有訂單記錄,但沒有完成付款;linepay後台也查不到任何交易記錄。
DeBug的過程
因為linepay後台沒有任何記錄,所以可以判斷是在資料送出到linepay時發生問題,再加上網址參數在linepay_confirm_url這裡出現錯誤畫面。
於是透過外掛編輯器,循線找到class-hpd-linepay-gateway.php,第152行的函式confirm_url_callback。就是這裡回傳了白畫面,$results = get_posts 沒取到文章(訂單)資料。
google一下wordpress的get_posts函式資料,似乎是少傳post_status參數。因為post_status預設值是publish,和這筆訂單建立的初始值wc-pending不同,所以找不到資料。
加入post_status修正如下:
$results = get_posts( array(
'post_status' => 'wc-pending',
'post_type' => 'shop_order',
'meta_query' => array(array( 'key' => '_hpd_linepay_transactionId', 'value' => $transaction_id ),
),
) );
重新測試,出現付款完成畫面。woocommerce和linepay後台也都有付款完成的資料。
後記
其實在台灣還是有很多業者開發woocommerce的linepay外掛,不過都是付費的。這篇修正文章看完的話,就可以得到一個運作順利又免費的linepay外掛。
目前linepay api官方已開發到V3的版本,但現有linepay外掛都還停留在使用V2,等以後有空再來做一個V3版本的woocommerce line pay外掛。
註:更多的woocommerce外掛或客製修改,請點選尚虎網科-woocommerce
您好:能跟您購買LINE PAY的部分嗎
呃,看完文章之後不會改嗎?
那可以到這裡,用linepay花10元購買並下載修正後的外掛
woocommerce linepay 金流外掛 免費或10元
另外提醒一下,linepay收款要自己去申請和設定IP白名單,不是安裝外掛後就可以使用。
我買了10元後~還是會出現錯誤訊息~IP我是設定我的固定IP對嗎
我這個阿呆~~我以為我不會改~~原來是我IP一個碼打錯了~~我還以為我怎麼買了10元也不行~~感謝大大的分享
我安裝好出現
結帳參數有誤,請聯絡網站管理員。錯誤代碼: 1106
line pay後台右上角是一個測試環境的選項
這樣是正常的嗎
右上角有測試環境的字樣是正常的,我也有,那是用於顯示測試資料與訊息。
1106的錯誤代碼,有可能是你白名單的主機IP打錯了。
可以參考這篇文章 LINEPAY API error code 錯誤代碼 1106 – ip問題 輸出錯誤訊息,或是確認你的主機IP。
您好 謝謝分享,有購買而且成功使用了!另外想請教商品傳送的問題,如果我想單獨固定只傳送某一個商品名稱可以怎麼做呢?
這應該也是要去編輯外掛了,初步看一下,你可能要編輯class-hpd-linepay-client.php第20行,productName把它改寫為固定值。
然後測試看看有沒有效。如果無效,或只一半有效,那大概就要去看class-hpd-linepay-gateway.php,一樣找尋productName進行修正。
改程式就是反覆測試與修正的過程,建議要有個程式基礎底再去改,要不然改到網站掛掉,可是自行負責囉。