woocommerce line pay外掛更新下載-客製修改3

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

好文分享給朋友

您可能還喜歡...

8 條回覆

  1. 李澤表示:

    您好:能跟您購買LINE PAY的部分嗎

  2. 李澤表示:

    我這個阿呆~~我以為我不會改~~原來是我IP一個碼打錯了~~我還以為我怎麼買了10元也不行~~感謝大大的分享

  3. yrf999表示:

    我安裝好出現
    結帳參數有誤,請聯絡網站管理員。錯誤代碼: 1106
    line pay後台右上角是一個測試環境的選項
    這樣是正常的嗎

  4. Emma表示:

    您好 謝謝分享,有購買而且成功使用了!另外想請教商品傳送的問題,如果我想單獨固定只傳送某一個商品名稱可以怎麼做呢?

    • admin表示:

      這應該也是要去編輯外掛了,初步看一下,你可能要編輯class-hpd-linepay-client.php第20行,productName把它改寫為固定值。
      然後測試看看有沒有效。如果無效,或只一半有效,那大概就要去看class-hpd-linepay-gateway.php,一樣找尋productName進行修正。
      改程式就是反覆測試與修正的過程,建議要有個程式基礎底再去改,要不然改到網站掛掉,可是自行負責囉。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。