幂等 Postback:财务团队为什么在意重复计数
一次可以安全重试的 Postback,是财务愿意签字的数字和财务会拿来吵架的数字之间的差别。幂等是什么意思,运营商为什么会把同一事件发不止一次,以及他们这样做时联盟会员该在钱包里看见什么。

财务团队讨厌的不是 Postback。他们讨厌无法回放的总数。如果同一笔首次入金可以因为一次请求超时又被发了一遍而出现两次,这个月就结不了。就会有人在周五下午对着两份 CSV 和一支荧光笔耗下去。幂等 Postback 是取消那个周五的办法。
这是一篇讲能力的文章。AFFILIFY 把一笔转化只计一次,即便运营商发了不止一次。我们如何认出重复,不是一份公开清单。您需要知道的是问题的形状、电线上该放什么,以及一次重试落地时联盟钱包该做什么。
如果您想看更完整的追踪图景,回传、像素与图片标签是那篇比较。这篇是 S2S 面向财务的那一切片。
这里的幂等指什么
幂等意味着您可以把同一事件应用两次,存下来的结果不变。发送 FTD #84102。因为队列没看到 200,再发一次。仍然是一笔 FTD。仍然是一笔佣金。第二次请求不是错误,也不是第二个玩家。
反面是一个每次 HTTP 请求都往上加的计数器。那个计数器会和您的重试日志对得上。它不会和运营商的玩家库对得上,也不会和只送了一个人的联盟会员对得上。
重试不是缺陷。网络会失败。负载均衡会超时。一个 200 会丢。认真的对接把「发到被确认为止」当成幸福路径,而这只有在接收方吞得下重复时才安全。这就是全部的产品要求。

运营商该发送什么
您已经有 click id。您已经有事件类型:注册、FTD、入金,以及方案还需要的任何东西。给那个事件发一个稳定标识,让重试是同一个对象而不是一个新的。确切字段名在Postback 文档里,不在这里。
三条规则能救下月末。
重试同一份载荷。不要递增 nonce,不要新造一个事件 id,不要靠发送 FTD-2 来「修好」一次超时。第二次发送应该是第一次再来一遍。
不要把 HTTP 成功当成唯一账本。您这边应该在请求之前记下「我们打算发送 FTD #84102」,在之后记下「他们确认了 FTD #84102」。如果您只记下请求,超时看起来像一个洞,您就会发一个不同的事件去填它。
NGR 是一个期间,不是一次 ping。入金事件可以按每笔入金做幂等。一个月度 NGR 数字是关于一段日期的陈述。按那段范围发送它,不要当成一串您希望能加总的碎增量。NGR 与负结转是这些扣项必须稳定的联盟会员版说明。
像素做不好这件事。浏览器里触发两次的像素就是两次触发。图片标签一样。S2S 在 2026 年是默认,因为它是三种里唯一财务团队愿意拿来回放的。这就是回传与像素里的能力主张。
联盟会员该看见什么
一个玩家,一笔 FTD,一行 CPA。打开这笔转化,您该看见品牌、点击、GEO、sub-id、时间戳。您不该看见一个双胞胎。
如果一笔入金后来被冲回,那是另一个事件,不是重复。拒付、奖金滥用、取消的支付:那些作为调整落地,可以把钱放到暂扣,也可以把一笔待处理佣金拉回来。它们不是重试。结算怎么运作覆盖待处理、可用、暂扣和审核中。结算本身在出去的方向上也只计一次,原因和 Postback 在进来的方向上只计一次相同。
看起来像加倍时,不要从钱包开始。从链接开始。坏掉的 click id 产出的是缺失的转化,不是多余的。先 QA 追踪链接。然后再看是不是两张落地页、两个 sub-id 或两个品牌造出了两次真实点击。同一个人的两次真实点击可以是两件事件。那不是重复计数。那是两次点击。
为什么这对运营商是卖点
一个重复计数的联盟计划会多付,然后扣回,然后把关系耗掉。一个丢掉重试的联盟计划会少计,然后吵架,然后把关系从另一头耗掉。幂等 S2S 是那个无聊的第三选项:发,必要时再发一次,总数不动。
这也是 AFFILIFY 能把转化显示成一行而不是一个桶的原因。这一行就是事件。重试把总数留在原处。
在联盟会员这一侧,同一条规则是 15 日能结账的原因。待处理转为可用,依据的是一个不会因为队列在 14:58 赶上而变动的总数。KYC 仍然卡住提现。等级仍然把合格入金计一次。如果 FTD 本身是对着重试日志抛硬币,这些都成立不了。
如果您作为运营商在接这个,从文档开始,用您自己的点击参数,并把「发到被确认为止」当成正常。如果您是联盟会员,您本来就不该需要去想它,这正是重点。当真得去想的时候,上游在把两个不同的事件叫做一个。那是对接缺陷,不是重试。
常见问题
幂等对 Postback 意味着什么?
同一事件可以发送不止一次,只计一次。超时和重试是预期之内的。第二次 HTTP 请求不是第二笔 FTD,也不是第二笔佣金。如果载荷变了、新造了一个事件 id,那是新事件,不是重试。
运营商重试的话,我会在 AFFILIFY 钱包里看到重复的 FTD 吗?
不会。同一事件的一次重试不加第二行,也不加第二笔 CPA。如果您真的看见两行,您有两件事件:两次点击、两笔入金,或两种不同的事件类型。这件事值得和品牌拆开看,而不是假定平台计了两次。
这和结算幂等是一回事吗?
同一思路,另一个方向。进来的转化即使被重试也只计一次。出去的结算即使被支付服务商问了两次也只入账一次。两者都存在,是为了让财务不用荧光笔就能结一个月。[结算怎么运作](/blog/how-affilify-payouts-work)是出去的那一侧。
像素也需要这个吗?
像素和图片标签在浏览器里触发,页面加载多少次就触发多少次。它们没法像服务器 Postback 那样被做成可安全重试。这也是 S2S 成为默认、像素只作为还发不出服务器事件的人的退路的原因之一。优先用 S2S。
