你是否曾遇過這種情況:
看似小事,卻每天可能花掉 1–2 小時,累積下來每月就超過 40 小時!
在 Day 8–9 的系列文章中,我們已經完成了報名入口設計與報名資料自動整理。
今天我們要解決另一個核心問題—付款追蹤自動化。
透過這個流程,學員付款即自動更新系統狀態,教練不再需要手動核對,學員也能即時收到付款確認訊息。
這不僅節省時間,也避免漏收款或重複確認,提高學員報名體驗。
本文重點:
在教育或運動領域中,報名與付款資訊往往分散在不同工具:LINE、表單、私訊或金流平台。
手動追蹤不但耗時,還容易出錯:
解法核心是資料集中 + 自動更新 + 即時通知:
這個流程不僅解決遺漏收款問題,也能將付款資料與報名資料連動,形成完整 CRM 流程。
學員付款
│
▼
金流平台 (LINE Pay / 綠界 / 藍新 / 銀行)
│ 將付款結果 POST 到
▼
n8n Webhook 接收
│
├─> 驗證付款 (驗證/比對訂單)
│
├─> 更新 Google Sheet:付款狀態 = 已付款
│
├─> (選擇) 建立/更新 Google Calendar 行程
│
└─> 發送 LINE OA 確認訊息 → 學員
圖1:流程圖
假設潛水課程教練 Alice 每月有 30 名報名學員,其中約 5 名學員付款需要再次確認。
// 測試 Fake Payment API
curl -X POST https://你的-n8n-domain/webhook/fake-payment \
-H "Content-Type: application/json" \
-d '{"student_name":"張三","course":"進階潛水","payment_status":"完成"}'
圖2:製作測試金流API
說明:
Fake Payment API是一個簡單模擬金流通知的範例 API,讓你即使沒有真實金流帳號,也能完整展示付款追蹤自動化流程。
{
"student_name": "張三",
"course": "進階潛水",
"payment_status": "完成"
}
Google Sheet 節點
student_name
+ course
付款狀態
= "已付款"
LINE OA 節點
「{{student_name}},付款完成!」
圖3:Google Sheet 付款狀態
圖4:n8n 節點流程圖
圖5:LINE Flex Message「付款完成」
// POST /webhook/payment
{
"student_name": "張三",
"course": "進階潛水",
"payment_status": "完成"
}
這樣能方便我們在 n8n 測試流程時,直接模擬金流通知。
為了更貼近真實情境,我們可以使用綠界科技提供的測試帳號,模擬線上收款與通知流程。
3002599
spPjZn66i0OhqJsQ
hT5OJckN45isQTTs
https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5
POST
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 生成。
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
(任意輸入三碼數字)付款完成後,綠界會把結果POST
到ReturnURL
,也就是n8n 的 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 的「付款狀態」。
圖6:n8n 節點流程圖 - 建立付款訂單
圖7:n8n 節點流程圖 - 接收綠界付款通知
圖8:Google Sheet 更新後狀態
圖9:n8n Webhook 收到 Line 通知
表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 |
課程類型分流
多金流整合
異常提醒
報表生成
[學員報名]
│
▼
[課程類型分流]
│
▼
[設定付款方式自動化規則]
│
▼
[付款操作] → (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、自動化問題嗎?
點這個小樹洞分享,我會給你免費資源或可實作解法
→樹洞問卷