iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
AI & Data

【潛水課程 x SaaS】打造 AI 自動化 CRM 系統系列 第 10

【Day 10】為什麼你的報名款項老是漏收?|n8n × LINE × 自動化

  • 分享至 

  • xImage
  •  

你是否曾遇過這種情況:

  • 學員已經報名課程,但忘記付款或付款後未通知你
  • 作為教練或行政人員,你每天都要核對付款紀錄、確認繳費狀態、回覆學員訊息。

看似小事,卻每天可能花掉 1–2 小時,累積下來每月就超過 40 小時!

在 Day 8–9 的系列文章中,我們已經完成了報名入口設計報名資料自動整理
今天我們要解決另一個核心問題—付款追蹤自動化

透過這個流程,學員付款即自動更新系統狀態,教練不再需要手動核對,學員也能即時收到付款確認訊息。
這不僅節省時間,也避免漏收款或重複確認,提高學員報名體驗。

本文重點:

  • 為什麼付款追蹤很重要
  • 如何用 n8n 自動化付款追蹤
  • 案例示範與小教學
  • 實作練習與效益計算

核心概念:付款追蹤自動化思維

付款追蹤的重要性

在教育或運動領域中,報名與付款資訊往往分散在不同工具:LINE表單私訊金流平台

手動追蹤不但耗時,還容易出錯:

  • 學員已付款,但資料未更新 → 重複確認
  • 學員忘記付款 → 收入漏失
  • 資料分散 → 無法快速生成報表

自動化解法思路

解法核心是資料集中 + 自動更新 + 即時通知

  1. 建立統一付款狀態表(Google Sheet)
  2. 利用 n8n Webhook 接收金流平台通知(LINE Pay / 綠界 / 藍新 / 銀行)
  3. 自動更新學員付款狀態
  4. 自動發送確認訊息給學員

這個流程不僅解決遺漏收款問題,也能將付款資料與報名資料連動,形成完整 CRM 流程。

學員付款
   │
   ▼
金流平台 (LINE Pay / 綠界 / 藍新 / 銀行)
   │ 將付款結果 POST 到
   ▼
n8n Webhook 接收
   │
   ├─> 驗證付款 (驗證/比對訂單)
   │
   ├─> 更新 Google Sheet:付款狀態 = 已付款
   │
   ├─> (選擇) 建立/更新 Google Calendar 行程
   │
   └─> 發送 LINE OA 確認訊息 → 學員

圖1:流程圖


案例示範:潛水課程的付款追蹤

假設潛水課程教練 Alice 每月有 30 名報名學員,其中約 5 名學員付款需要再次確認。

人工方式:

  • 每天核對付款 → 約 30 分鐘/天 × 20 天 = 10 小時
  • 若每小時人力成本 NT$500 → 每月約 NT$5,000 人力成本

自動化方式:

  1. 學員付款 → 點擊 LINE「付款完成」按鈕
  2. 模擬 API 收到付款請求(POST /fake-payment)
    • 這個 Webhook 節點充當「Fake Payment API」,接收學員付款資料並觸發後續流程
    • 使用 Postman 或 curl 模擬付款通知:
// 測試 Fake Payment API

curl -X POST https://你的-n8n-domain/webhook/fake-payment \
-H "Content-Type: application/json" \
-d '{"student_name":"張三","course":"進階潛水","payment_status":"完成"}'

製作測試金流API
圖2:製作測試金流API

  1. n8n Webhook 接收付款訊息
  2. Google Sheet 自動更新「付款狀態」欄位
  3. LINE OA 自動發送「付款完成」確認訊息

說明:
Fake Payment API是一個簡單模擬金流通知的範例 API,讓你即使沒有真實金流帳號,也能完整展示付款追蹤自動化流程。

n8n 節點實作說明

  1. Webhook 節點
    • Method:POST
    • Path:/fake-payment
    • Payload 範例:
{
  "student_name": "張三",
  "course": "進階潛水",
  "payment_status": "完成"
}
  1. Google Sheet 節點

    • Operation:Update Row
    • 條件:依據 student_name + course
    • 更新欄位:付款狀態 = "已付款"
  2. LINE OA 節點

    • 發送訊息給學員
    • 範例訊息:「{{student_name}},付款完成!」

效果:

  • 行政工作時間減少 10 小時
  • 避免漏收款或重複確認
  • 學員體驗提升:即時收到付款確認訊息
  • 教練專注教學,無需處理行政瑣事

Google Sheet 付款狀態
圖3:Google Sheet 付款狀態

n8n 節點流程圖
圖4:n8n 節點流程圖

LINE Flex Message
圖5:LINE Flex Message「付款完成」


小教學:用 n8n 建立付款追蹤流程

步驟 1:建立付款狀態表

  • Google Sheet 欄位:
    • 姓名
    • 課程
    • 報名日期
    • 付款方式
    • 付款狀態
  • 初始狀態全部設為「未付款」

步驟 2:Webhook 接收金流通知

  • 支援平台:LINE Pay / 綠界 / 藍新
  • 範例 n8n Webhook 節點設定:
// POST /webhook/payment
{
  "student_name": "張三",
  "course": "進階潛水",
  "payment_status": "完成"
}

這樣能方便我們在 n8n 測試流程時,直接模擬金流通知。

步驟 2-1:整合綠界科技金流(測試環境)

為了更貼近真實情境,我們可以使用綠界科技提供的測試帳號,模擬線上收款與通知流程。

測試環境參數官方提供):

  • 特店編號 MerchantID:3002599
  • 串接金鑰 HashKey:spPjZn66i0OhqJsQ
  • 串接金鑰 HashIV:hT5OJckN45isQTTs

建立訂單(HTTP Request 節點設定)

  • URL:
https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5
  • Method:POST
  • Body(x-www-form-urlencoded):
{
  "MerchantID": "3002607",
  "MerchantTradeNo": "TEST12345678",
  "MerchantTradeDate": "2025/09/24 12:00:00",
  "PaymentType": "aio",
  "TotalAmount": 1000,
  "TradeDesc": "潛水課程報名費用",
  "ItemName": "進階潛水課程",
  "ReturnURL": "https://你的n8n伺服器/webhook/payment",
  "ChoosePayment": "Credit",
  "EncryptType": 1,
  "CheckMacValue": "系統自動生成"
}

CheckMacValue是簽章驗證,需要用 n8n Function Node 生成。

  • 範例 Function Node 程式碼(Node.js):
const crypto = require("crypto");
function generateCheckMacValue(params, hashKey, hashIV) {
  // 1. 排序參數
  const sorted = Object.keys(params)
    .sort((a, b) => a.localeCompare(b))
    .map(k => `${k}=${params[k]}`)
    .join("&");
  
  // 2. 加入 HashKey 與 HashIV
  const raw = `HashKey=${hashKey}&${sorted}&HashIV=${hashIV}`;
  
  // 3. URL encode
  const encoded = encodeURIComponent(raw)
    .toLowerCase()
    .replace(/%20/g, "+");
  
  // 4. MD5 轉大寫
  return crypto.createHash("md5").update(encoded).digest("hex").toUpperCase();
}

// 使用方式
const params = {
  MerchantID: "2000132",
  MerchantTradeNo: "TEST12345678",
  MerchantTradeDate: "2025/09/24 12:00:00",
  PaymentType: "aio",
  TotalAmount: 1000,
  TradeDesc: "潛水課程報名費用",
  ItemName: "進階潛水課程",
  ReturnURL: "https://你的n8n伺服器/webhook/payment",
  ChoosePayment: "Credit",
  EncryptType: 1
};

return {
  json: {
    CheckMacValue: generateCheckMacValue(params, "5294y06JbISpM5x9", "v77hoKGq4kWxNNIS")
  }
};

模擬付款流程(官方提供

  • 一般信用卡測試卡號:4311-9522-2222-2222
  • 有效年月:任意未過期日期
  • 安全碼:222(任意輸入三碼數字)

付款完成後,綠界會把結果POSTReturnURL,也就是n8n 的 Webhook 節點

步驟 2-2:Webhook 接收綠界通知

Webhook 收到的內容範例:

{
  "MerchantID": "2000132",
  "MerchantTradeNo": "TEST12345678",
  "RtnCode": 1,
  "RtnMsg": "交易成功",
  "TradeAmt": 1000,
  "PaymentDate": "2025/09/24 12:01:23",
  "PaymentType": "Credit_CreditCard",
  "TradeNo": "2200924123456789",
  "CheckMacValue": "xxxxxx"
}

n8n 可以依據RtnCode = 1判斷付款成功,並進一步更新 Google Sheet 的「付款狀態」。

步驟 3:自動更新付款狀態

  • Google Sheet 節點 → Update Row
  • 條件:姓名 + 課程對應 → 更新「付款狀態」為「已付款」

步驟 4:自動發送確認訊息

  • LINE OA 節點發送訊息
  • 範例訊息:「張三,您的進階潛水課程付款已完成,報名成功!」

建立付款訂單
圖6:n8n 節點流程圖 - 建立付款訂單

接收綠界付款通知
圖7:n8n 節點流程圖 - 接收綠界付款通知

Google Sheet 付款狀態
圖8:Google Sheet 更新後狀態

收到 Line 通知
圖9:n8n Webhook 收到 Line 通知


小練習:模擬付款自動化

練習 1:建立你的付款狀態表

  • 列出 5 名學員報名資料
  • 初始付款狀態設為「未付款」

練習 2:模擬 Webhook 流程

  • 使用 Postman 或 curl 模擬付款完成通知
  • 檢查 Google Sheet 是否自動更新

練習 3:計算效益

  • 假設每筆漏收款成本 NT$2,000
  • 每月漏收 5 筆 → 自動化能省下 NT$5,000
  • 同時計算節省的行政時間

表1:成本節省

項目 傳統人工方式 自動化方式 節省效益
每月漏收款數量 5 筆 × NT$2,000 = NT$10,000 0 筆 NT$10,000
行政時間支出 約 10 小時 × NT$500 = NT$5,000 約 0–1 小時 NT$5,000
總成本 NT$15,000 幾乎為 0 NT$15,000

延伸應用

  1. 課程類型分流

    • 針對不同課程,設定不同付款方式自動化規則
  2. 多金流整合

    • 支援多個金流平台 → 統一 Webhook 處理,資料集中管理
  3. 異常提醒

    • 若學員付款逾期未完成 → 自動發送提醒訊息
  4. 報表生成

    • Google Sheet + Data Studio → 每月付款狀況可視化
    • 幫助教練決策與行銷分眾
[學員報名] 
      │
      ▼
[課程類型分流] 
      │
      ▼
[設定付款方式自動化規則]
      │
      ▼
[付款操作] → (LINE Pay / 綠界 / 藍新)
      │
      ▼
[n8n Webhook 接收付款通知]
      │
      ▼
[更新付款狀態] → Google Sheet
      │
      ▼
[發送付款確認訊息] → LINE OA
      │
      ▼
[報表生成] → Google Sheet + Data Studio
      │
      ▼
[教練 / 管理者查看報表與決策]

--------------------------------

※ 異常提醒:在付款期限到期後自動檢查未付款學員
      │
      ▼
[逾期未付款自動通知] → LINE OA / Email


圖10:自動化流程步驟

┌──────────────────────────────┐
│          每月付款報表         │
├──────────────────────────────┤
│ 課程名稱   │  已付款 / 未付款  │
├──────────────────────────────┤
│ 進階潛水   │  20 / 10         │
│ 入門潛水   │  15 / 5          │
│ 夜潛課程   │  8 / 2           │
└──────────────────────────────┘

┌───────────────────────────────────────────────┐
│       Data Studio 模擬柱狀圖                   │
├───────────────────────────────────────────────┤
│ 課程付款狀態柱狀圖                              │
│                                               │
│ 進階潛水 ██████████░░░░░░ (20已付款 / 10未付款) │
│ 入門潛水 ███████░░░░      (15已付款 /  5未付款) │
│ 夜潛課程 ████░░           ( 8已付款 /  2未付款) │
│                                               │
│ █ = 已付款  ░ = 未付款                        │
└───────────────────────────────────────────────┘

圖11:報表 / Data Studio


小結

今天我們完成了付款追蹤自動化,解決了遺漏收款與重複確認的問題。
透過n8n × Google Sheet × LINE OA,課程報名流程不再分散、重複確認,
教練可以專注在最重要的教學上,而學員也能享受順暢的報名體驗。

【我的小murmur】
明天預告:Day 11 我們將實作課前自動通知與提醒
確保學員不再忘記上課,也讓教練更輕鬆管理課程行程。

【秘密小樹洞】
想偷偷告訴我你最頭痛的工作流程、AI、自動化問題嗎?
點這個小樹洞分享,我會給你免費資源或可實作解法
樹洞問卷


上一篇
【Day 9】如何讓報名資料自動整理?|n8n × LINE × 自動化
下一篇
【Day 11】自動寄送課前通知與提醒|LINE Bot x Google Calendar
系列文
【潛水課程 x SaaS】打造 AI 自動化 CRM 系統13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言