结算与定价语义
这篇文档说明 AuthNexus 的钱怎么算、怎么流。它面向后台操作者和需要理解分账口径的人。
系统里有两类普通代理,定价和结算方式完全不同:
- 代售结算代理(Resale):按百分比逐级抽成,激活后联级结算,下级欠上级的钱在结算单里支付。
- 余额充值代理(Balance):按绝对单价预付,制卡当场从自己钱包扣钱,上下级之间不联级补差价。
两套模型都先经过卡类型上的「开发者抽成」一刀。
卡类型:所有定价的锚
每个卡类型有两个定价字段:
| 字段 | 含义 |
|---|---|
终端售价 P | 权威总盘。终端用户最终为一张卡付的钱,也是所有抽成切分的基数。 |
开发者抽成 d | 平台(admin)对每张卡的固定版税,万分比。从终端售价里最先切走,与代理链无关,两类代理都吃这一刀。 |
开发者抽成那笔钱 P × d 归平台 admin 自己留存,不单独分给任何代理。
例:终端售价 1000 元、开发者抽成 20%,则每张卡平台先拿走 200 元,剩下 800 元才进入代理链分配。
代售结算代理(Resale)
一句话模型
每个代售代理设一个抽成百分比,含义是「我的上级招募我这条边,从传到这里的剩余盘里切走多少」。盘子逐级往下传,每经过一级切一刀,剩下的传给更下级;终端代理把剩下的全部留作自己的利润。
计算公式
设代理链从平台根到某代理为 root → A → B → … → X:
R(root 之下的盘) = P × (1 − d) # 开发者先抽 d
R(X) = R(上一级) × (1 − retained[X]) # X 这条边再切一刀retained[X]是 X 自己价格行上的抽成比例(万分比),表示招募 X 这条边的抽成。R(X)是「传到 X 手里的剩余盘」。- X 的拿货价 = P − R(X):X 买一张卡需要对上游链应付的金额。
- 某条边上父代理赚到的 margin = R(父) − R(子)。
- 终端代理(最末级)把
R(末级)全部留下作为自己的毛利。
所有金额用整数分、向下取整(floor)。
守恒
开发者版税 (P×d) + 各级边 margin 之和 + 末级留存 = P逐级望远镜相消,floor 取整不产生泄漏——一张卡的钱被精确分完,不多不少。
上级调价不影响下级配置
代售代理设的是百分比。上级改了自己的抽成,只会让传到下级手里的剩余盘 R 重新算出一个新数,下级的百分比不用动。所以代售链上调价不需要逐级重新配置,也不会卡住下级制卡。
结算时点与资金流
| 时点 | 发生什么 |
|---|---|
| 制卡 | 把整条链的结算边快照冻结到卡上(base_cost / payable_to_parent / margin 等),此刻不动钱。 |
| 激活 | 终端用户激活卡,按冻结的边落成结算事实(settlement_facts)。 |
| 对账 | 周期或手动生成结算单,下级对上级的应付在结算单里结清。 |
代售代理没有钱包,钱通过结算单在链上向上结清。
例子
终端售价 P = 100,开发者抽成 d = 10%:
| 角色 | 传到手的盘 R | 实得 |
|---|---|---|
| 开发者(平台固定) | — | 10(最先切) |
| 总代 A(抽成 20%) | 90 | 90 × 20% = 18 |
| 二级 B(抽成 25%) | 72 | 72 × 25% = 18 |
| 终端 C(无下级) | 54 | 全留 = 54 |
合计 10 + 18 + 18 + 54 = 100 = P。C 的拿货价 = 100 − 54 = 46,卖终端 100,赚 54。
余额充值代理(Balance)
一句话模型
每个余额代理在每个卡类型上有一个绝对制卡单价(元,存为分),由上级设定。代理制卡时当场从自己钱包按这个单价扣钱。上下级之间不联级、不补差价——上级的利润是在「给下级拨款余额」那一步实现的。
定价与下限链
上级给下级定一个绝对单价,要求 下级单价 ≥ 上级的成本价:
| 下级的直接上级是谁 | 下级单价的下限(成本价) |
|---|---|
平台 admin | P × d(开发者版税那一刀算出来的成本) |
| 代售结算代理 | 该上级的拿货价 P − R(上级)(等价于上级对这个余额下级「全部让利、抽成 0%」) |
| 余额充值代理 | 该上级自己的制卡单价 |
整条余额链因此是单调非降的:越往下,单价只会越高。
制卡扣费(关键)
余额代理是预付进货模型:
- 制卡(生成卡密)那一刻,按
单价 × 数量从自己钱包预扣,扣在卡写入之前;制卡失败原路退款。 - 扣的是代理钱包余额,与这批卡日后是否卖出/激活无关。
- 没有任何上级被入账——制卡环节不产生需要向上分配的差价。
上级利润从哪来:拨款
余额代理的钱包靠拨款(钱包间转账)充值:上级把自己的余额拨给下级,向下级收钱。上级的利润 = 向下级收的钱 − 上级自己的成本,在拨款这一步落袋,而不是在下级制卡时。
例:A 成本 20/张,给 B 定单价 24/张。A 拨 100 余额给 B(向 B 收钱)。B 用这 100 余额按 24 制卡。B 制同样的卡比 A 贵,B 的利润空间被压在 24 与终端售价之间。A 赚的是拨款时的差价,系统不在制卡时再算一遍。
重定价闸门
因为余额用的是绝对单价,上级一旦调高自己的价格,下级原来的单价就可能低于新的成本价下限。这时:
- 被压破下限的代理及其下游会被暂时禁止制卡;
- 制卡时系统校验整条下限链,发现破链就拦截,提示「上级已调价,请重新定价」;
- 需要有人手动把下级单价重新调到 ≥ 新成本价,系统不会自动改下级的价。
后台提供「待重定价」视角,列出单价低于上级成本价的余额代理,便于批量处理。
例子
终端售价 P = 100,开发者抽成 d = 0(简化)。平台给 A 定单价 20,A 给 B 定单价 24:
- A 制卡:每张扣自己钱包 20。
- B 制卡:每张扣自己钱包 24。
- A 给 B 拨 100 余额 → B 能按 24 制约 4 张。
- 若平台把 A 的单价从 20 调到 25:B 的 24 < 25,B 被禁止制卡,需把 B 单价重定到 ≥ 25。
混合链
余额充值代理可以挂在代售结算代理下面。这种情况下,余额代理的成本价下限 = 它那个代售上级的拿货价 P − R(上级),等价于「这个代售上级对它全部让利、抽成 0%」。再往下若还是余额代理,就按余额规则逐级 ≥ 上级单价。
两类代理对照
| 代售结算(Resale) | 余额充值(Balance) | |
|---|---|---|
| 定价形式 | 百分比抽成(per-edge) | 绝对制卡单价 |
| 钱包 | 无 | 有,靠拨款充值 |
| 扣费时点 | 不在制卡;激活后对账结清 | 制卡当场预扣自己钱包 |
| 联级 | 是,下级欠上级在结算单结清 | 否,各扣各的,不向上补差价 |
| 上级利润来源 | 结算单里的边 margin | 拨款(卖余额)时的差价 |
| 上级调价影响下级 | 不影响配置(只重算剩余盘) | 可能压破下限 → 下级需重定价、暂禁制卡 |
| 开发者抽成 | 适用(最先切) | 适用(作为直属下级的成本下限) |
常见疑问
开发者抽成和创建子代时的抽成会不会重复扣? 不会。开发者抽成是平台的固定版税;创建代售子代时设的百分比是「这条边」的抽成,二者落在不同环节,叠加但不重复。对余额子代,开发者抽成体现为直属下级的成本下限 P × d。
余额代理为什么不向上结算? 因为余额是预付模型:下级的余额是上级拨过来的,上级在拨款时已经向下级收过钱、赚到差价了,制卡时再向上补一遍就重复了。所以制卡只扣下级自己的钱包。
代售代理改了某一级的抽成,会不会影响已经发出去的卡? 不会。结算边在制卡那一刻就冻结成快照了,已发出的卡按当时的快照结算;改抽成只影响之后新制的卡。