佣金比例與二級分銷
佣金比例與二級分銷
本文講清各種比例的含義、什麼時候觸發、上級的「間推」佣金怎麼計算。
四種比例
每個分銷商有 4 個比例欄位,存在 mod_reseller_admins:
| 欄位 | 觸發場景 | 計算誰的訂單 |
|---|---|---|
new_order_rate | 客戶首筆已付發票 | 該分銷商自己的客戶 |
renewal_rate | 後續所有已付發票(續費) | 該分銷商自己的客戶 |
indirect_new_order_rate | 客戶首筆已付發票 | 該分銷商 下級 的客戶 |
indirect_renewal_rate | 續費已付發票 | 該分銷商 下級 的客戶 |
比例按發票 金額總額 計算(含稅,發票全額)。所有比例保留 2 位小數,範圍 0–100%。
二級分銷舉例
設定: - 分銷商 A(上級)—— new_order_rate=5, renewal_rate=3, indirect_new_order_rate=2, indirect_renewal_rate=1 - 分銷商 B(A 的下級)—— new_order_rate=8, renewal_rate=5, 間推比例 0/0
A 的客戶付了 100 元首單: - A 拿:100 × 5% = 5 元(level=1 直推) - B 拿:無(B 不是 A 的上級)
B 的客戶付了 100 元首單: - B 拿:100 × 8% = 8 元(level=1 直推) - A 拿:100 × 2% = 2 元(level=2 間推,用的是 A 的 indirect_new_order_rate)
注意:間推比例取自 上級 的記錄,不是下級的。所以 A 決定自己能從 B 出單裡拿多少。
佣金什麼時候記錄
WHMCS 的 InvoicePaid 鉤子在每張已付發票時觸發。鉤子邏輯: 1. 查發票客戶被分配給哪個分銷商。 2. 找到的話,按 new_order_rate 或 renewal_rate 計算直推佣金(level=1)。 3. 若該分銷商有上級,按上級的 indirect_*_rate 計算間推佣金(level=2)。 4. 插入 mod_reseller_commissions,狀態 pending,冪等由 (invoice_id, admin_id, level) UNIQUE 鍵保證。
UNIQUE 鍵意味著同一張發票重複觸發 InvoicePaid 也不會產生重複佣金。
直推佣金取決於客戶分配
只有當付款發票的客戶 已分配給分銷商(mod_reseller_customers.admin_id IS NOT NULL)時才會產生佣金記錄。客戶在資源池裡(admin_id 為空)時即使有付款也不會產生佣金。
要追溯補佣金:讓分銷商從客戶池認領,或者透過管理員客戶池視圖分配。
修改比例後的影響
修改比例只影響 未來 的佣金計算。佣金表裡已有的記錄不會重算。需要補差的話最簡單的辦法是在 佣金 標籤直接手動改單列金額。
防環保護
上級下拉控制: - 分銷商不能選自己。 - 分銷商不能選已經是自己下級的人(防止循環)。
直接 POST 繞過 UI 也會被服務端拒絕並記一條稽核日誌。