# 使用 Node.js 串接 Line Pay :::info [Github Repo 這邊請🛸](https://github.com/unicornGL/line-pay-payflow) ::: ## 註冊 Line Pay 1. 建立 [Line Pay Sandbox](https://pay.line.me/tw/developers/techsupport/sandbox/creation) 帳號 ![Line Pay Sandbox](https://hackmd.io/_uploads/ryPo5EGFC.png) 2. 登入 [Merchant Center](https://pay.line.me/portal/tw/auth/login) ![Merchant Center](https://hackmd.io/_uploads/r1k0n4Mt0.png) 3. 於[管理連結金鑰](https://pay.line.me/tw/center/payment/interlockKey)點擊查詢輸入驗證碼後,即可取得金鑰(Channel ID & Channel Secret Key),需要此組金鑰才能串接 Line APIs ![Get Channel ID and Channel Secret Key](https://hackmd.io/_uploads/ry68RNGYC.png) 4. 串接 API([Online APIs 文件](https://pay.line.me/tw/developers/apis/onlineApis))並測試付款流程 ## 付款流程 1. Local Server 建立訂單,向 Line Pay 送出交易請求。 2. Line Pay 提供付款連結,將使用者轉導到付款頁面。 3. 使用者使用電腦或 Line App 開啟付款頁面,選擇付款方式後點擊付款按鈕啟用付款。 4. Line Pay 確認付款成功後將使用者轉導到商家自訂的 `confirmUrl`。 5. Local Server 向 Line Pay 送出確認交易完成請求。 6. Line Pay 確認付款,確認交易完成。 7. 交易確認後顯示付款已確認的畫面。 下方為 Line Pay 提供的付款流程圖: *PC* ![截圖 2024-07-29 01.06.32](https://hackmd.io/_uploads/rJjiqeVKA.png) *Mobile* ![截圖 2024-07-29 01.08.41](https://hackmd.io/_uploads/r17NjgNK0.png) ## 實際執行 0. 使用套件:[Express](https://expressjs.com)、[Axios](https://axios-http.com/docs/intro)、[Dotenv](https://www.npmjs.com/package/dotenv)、[crypto-js](https://www.npmjs.com/package/crypto-js)(也可用 Node.js 內建的 `crypto`)、[uuid](https://www.npmjs.com/package/uuid) 1. 建立專案資料夾後執行 `npx express-generator`,使用 [Express Generator](https://expressjs.com/en/starter/generator.html) 建立環境 2. 建立 .env ![.env](https://hackmd.io/_uploads/SyM2f1VFC.png) 3. 建立測試用資料(spec:Request API) ![dummy data](https://hackmd.io/_uploads/r1JWp27KR.png) 4. 打 request API,如果 returnCode 是 `0000` 那就將使用者轉導到 Line Pay 提供的付款頁面。 ![call request api](https://hackmd.io/_uploads/SkepsgVtA.png) ![redirect user to payment url](https://hackmd.io/_uploads/BJlP1p7FA.png) 5. 模擬付款(此處用手機示範) ![payment simulation](https://hackmd.io/_uploads/S1aXXJNFA.jpg) 6. 付款完成後 Line Pay 將使用者轉導到第四步 Request Body 中的 `confirmUrl` ![call confirm api](https://hackmd.io/_uploads/ByW_UgVtA.png) 7. 打 confirm API,如果 returnCode 是 `0000` 就顯示付款已確認的畫面。 ![show success page](https://hackmd.io/_uploads/r1ajBgNtA.png)