<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>《互联网产品的服务端架构·交易、增长与平台化》 · 已发布章节索引（45 篇） on PlumePHP</title><link>https://plumephp.com/posts/books/%E4%BA%92%E8%81%94%E7%BD%91%E4%BA%A7%E5%93%81%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%9E%B6%E6%9E%84%E4%BA%A4%E6%98%93%E5%A2%9E%E9%95%BF%E4%B8%8E%E5%B9%B3%E5%8F%B0%E5%8C%96/</link><description>Recent content in 《互联网产品的服务端架构·交易、增长与平台化》 · 已发布章节索引（45 篇） on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 29 Oct 2026 07:20:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/books/%E4%BA%92%E8%81%94%E7%BD%91%E4%BA%A7%E5%93%81%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%9E%B6%E6%9E%84%E4%BA%A4%E6%98%93%E5%A2%9E%E9%95%BF%E4%B8%8E%E5%B9%B3%E5%8F%B0%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>《互联网产品的服务端架构·交易、增长与平台化》附录 C 合规与风控检查清单</title><link>https://plumephp.com/inet-growth-appendix-c-compliance-checklist/</link><pubDate>Thu, 29 Oct 2026 07:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-appendix-c-compliance-checklist/</guid><description>把卷三涉及交易、营销、增长与开放平台的合规与风控要求整理成可勾选的清单：主体资质、价格与促销、支付与发票、隐私与数据、未成年人保护、消费者权益、交易监测、风控维度、处置动作、申诉与审计，并给出上线前、活动中、事后复盘三阶段的检查项与常见失败案例。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》附录 B 实验与指标口径</title><link>https://plumephp.com/inet-growth-appendix-b-experiment-metrics/</link><pubDate>Thu, 29 Oct 2026 07:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-appendix-b-experiment-metrics/</guid><description>把卷三反复出现的指标与实验口径集中成一份可查的表：流量、转化、留存、交易、退款、履约、增长与实验各自的分子分母、时间窗口、去重规则与常见误读，再给出样本量估算公式、显著性判读顺序、多重比较校正、归因口径、指标字典模板、报表一致性、实验复盘记录与口径变更流程。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》附录 A 交易与营销状态机</title><link>https://plumephp.com/inet-growth-appendix-a-trade-state/</link><pubDate>Thu, 29 Oct 2026 07:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-appendix-a-trade-state/</guid><description>把卷三涉及的对象状态集中成表：订单、支付、退款、库存、优惠券、活动、权益、订阅、运营操作各自的合法迁移、触发者、并发约束与终态定义，再给出事件流水的字段设计、三种实现方式的对比、状态机测试方法、退款与对账的状态衔接，以及跨对象约束和设计检查项，方便对照代码逐条核对。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》13.3 进入卷四</title><link>https://plumephp.com/inet-growth-13-3-to-vol4/</link><pubDate>Thu, 29 Oct 2026 06:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-13-3-to-vol4/</guid><description>从一次只看 GMV、退款率悄悄翻倍的活动复盘切入，说明交易链路为什么需要支付成功率、履约时长、对账差异率三条指标，以及它们各自的分母。给出计算支付率与退款率、用严格阈值判定达标的 Go 实现与边界测试，并说明单一 GMV 如何掩盖真实亏损。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》13.2 券与活动的端到端验证</title><link>https://plumephp.com/inet-growth-13-2-coupon-activity-e2e/</link><pubDate>Thu, 29 Oct 2026 06:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-13-2-coupon-activity-e2e/</guid><description>从一次单测全绿、上线后却退款不退券的活动事故切入，说明券与活动的端到端验证必须覆盖库存、预算、防刷、退款回补四类不变量。给出用 httptest 真跑多步 HTTP 场景、失败后继续执行并捕获 panic 的 Go 实现与测试，复盘模块级 mock 掩盖的预算重复占用。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》13.1 下单→支付→履约→对账</title><link>https://plumephp.com/inet-growth-13-1-order-pay-fulfill-reconcile/</link><pubDate>Thu, 29 Oct 2026 06:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-13-1-order-pay-fulfill-reconcile/</guid><description>从一笔“已发货却查不到物流”的客诉切入，拆解下单、支付、履约、对账四个阶段各自的同步或异步边界与失败语义，说明为什么履约超时不能当成成功。给出用阶段秩、步骤名校验链路形状的 Go 实现与表驱动测试，并复盘把超时当成功导致的虚假发货与对账差额。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》12.3 报表口径与数据一致性</title><link>https://plumephp.com/inet-growth-12-3-report-consistency/</link><pubDate>Thu, 29 Oct 2026 06:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-12-3-report-consistency/</guid><description>周会上两张报表差了三万多元：一张含退款，一张不含，双方都认为自己是对的。文章先定义 GMV、订单数、退款数和净 GMV 的口径，再说明业务库与财务库对不上时如何用容差和完全相等条件判断，并给出 Row、Totals、Aggregate、Check 的 Go 实现和真实测试输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》12.2 运营操作的状态机</title><link>https://plumephp.com/inet-growth-12-2-operation-state-machine/</link><pubDate>Thu, 29 Oct 2026 06:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-12-2-operation-state-machine/</guid><description>运营在后台重复点了两次“执行”，活动库存被扣了两次；审批流、状态机和幂等缺少任何一层都会出问题。文章说明草稿、待审、通过、驳回、已执行的迁移规则，终态为什么必须拒绝所有动作，以及调用方如何用幂等键和条件更新兜住重复请求，并给出 Op 与 Next 的 Go 实现和真实测试输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》12.1 后台的权限与审计</title><link>https://plumephp.com/inet-growth-12-1-admin-permission-audit/</link><pubDate>Thu, 29 Oct 2026 06:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-12-1-admin-permission-audit/</guid><description>客服主管为处理一笔投诉，给客服角色临时开了改价权限；三个月后权限仍在，一次批量改价把毛利打穿。文章区分后台权限与用户权限，说明最小权限、角色定义校验和写操作审计该怎么落地，并给出 Role、Allow、Validate 的 Go 实现与真实测试输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》11.3 多区域部署与就近接入</title><link>https://plumephp.com/inet-growth-11-3-multi-region-routing/</link><pubDate>Thu, 29 Oct 2026 05:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-11-3-multi-region-routing/</guid><description>GeoDNS 把流量切到备用区，备用区的健康检查全部通过，用户却登录不了，因为那边没有刚写入的会话和数据。文章用一个多区域故障切换的事故，说明就近接入为什么不等于就近有数据、切区为什么要固定顺序、数据延迟如何影响可用性，并给出 Route 的 Go 实现、故障顺序测试和真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》11.2 数据驻留与合规</title><link>https://plumephp.com/inet-growth-11-2-data-residency/</link><pubDate>Thu, 29 Oct 2026 05:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-11-2-data-residency/</guid><description>EU 用户的姓名与收货地址，被一份周报 ETL 同步到 cn 区做汇总，审计时才发现违反数据驻留要求。文章用一个跨境电商的合规事故，说明驻留是法律约束而非性能优化、个人数据与日志的等级差异、跨境开关为什么要单独设计，并给出 Allowed 与 Check 的 Go 实现、等级矩阵测试和真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》11.1 语言、时区与货币</title><link>https://plumephp.com/inet-growth-11-1-locale-timezone-currency/</link><pubDate>Thu, 29 Oct 2026 05:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-11-1-locale-timezone-currency/</guid><description>会员订阅卖出 19.90 美元，退款时却出现 19.899999。文章用一个跨币种结算的场景，说明金额为什么必须存最小单位、locale 与 currency 为什么是两个维度、时区为什么只影响展示，并给出 Money、MinorUnits、Format 的 Go 实现、负数与币种精度测试，以及真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》10.3 第三方故障的隔离</title><link>https://plumephp.com/inet-growth-10-3-third-party-isolation/</link><pubDate>Thu, 29 Oct 2026 05:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-10-3-third-party-isolation/</guid><description>物流查询接口超时，整个订单详情页跟着打不开；文章说明第三方故障为什么要按依赖隔离、熔断的 closed/open/half_open 如何流转、降级应该返回什么，并给出 Health、State、Record 的 Go 实现、状态机测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》10.2 回调、签名与重放</title><link>https://plumephp.com/inet-growth-10-2-callback-signature-replay/</link><pubDate>Thu, 29 Oct 2026 05:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-10-2-callback-signature-replay/</guid><description>支付回调只签了 body、没签时间戳，攻击者把同一条成功通知重放三次，订单被重复发货；文章说明签名必须覆盖哪些字段、重放窗口为什么越短越好、nonce 存储怎样清理，并给出 Sign、Verify、Replay 的 Go 实现、已知向量测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》10.1 应用、权限与配额</title><link>https://plumephp.com/inet-growth-10-1-app-permission-quota/</link><pubDate>Thu, 29 Oct 2026 05:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-10-1-app-permission-quota/</guid><description>一个第三方应用为了省事申请了全部 scope，被拖库后影响所有用户；文章从应用身份与用户身份分离讲起，说明最小权限、按应用与接口两个维度配额的取舍，并给出 App、Authorize、CheckQuota 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》9.3 退订、频控与合规</title><link>https://plumephp.com/inet-growth-09-3-unsubscribe-frequency/</link><pubDate>Thu, 29 Oct 2026 04:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-09-3-unsubscribe-frequency/</guid><description>用户在 App 内退订了营销消息，短信却仍在发送，最终收到投诉。文章说明退订为什么是合规要求而不是体验优化、频控为什么要分渠道、事务通知与营销通知为什么要走不同队列，并给出 Allowed 与 AllowSend 的 Go 实现、边界测试和真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》9.2 召回链路与转化归因</title><link>https://plumephp.com/inet-growth-09-2-recall-conversion/</link><pubDate>Thu, 29 Oct 2026 04:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-09-2-recall-conversion/</guid><description>沉睡用户召回上线后，看板显示推送活动带来一万二千回流，预算继续加投；扣除自然回流后，真实增量不到三成。文章说明触达、点击、转化为什么要分开记，归因窗口与最后触点怎样定义，自然量如何识别，并给出 Attribute 的 Go 实现、边界测试与真实输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》9.1 人群圈选与触达节奏</title><link>https://plumephp.com/inet-growth-09-1-audience-selection/</link><pubDate>Thu, 29 Oct 2026 04:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-09-1-audience-selection/</guid><description>会员日前运营圈出一份八百万人的推送名单，要求当晚 20:00 全量发送，结果推送通道被打满，正常订单通知延迟两小时。文章说明圈选条件怎样写成可解释的规则、触达为什么要分批、排除名单为什么优先于其他条件，并给出 Select 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》8.3 配置平台与开关治理</title><link>https://plumephp.com/inet-growth-08-3-config-switch-governance/</link><pubDate>Thu, 29 Oct 2026 04:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-08-3-config-switch-governance/</guid><description>大促前临时加的一个结算降级开关，半年后没人说得清它控制什么；一次配置清理把它删掉，降级链路在流量高峰失效。文章说明开关为什么是运行时配置而不是发布、owner 与过期时间如何治理、默认值怎样保证失败关闭，并给出 Flag 的 Go 实现与真实测试输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》8.2 指标、显著性与误判</title><link>https://plumephp.com/inet-growth-08-2-metric-significance/</link><pubDate>Thu, 29 Oct 2026 04:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-08-2-metric-significance/</guid><description>定价页实验跑到第三天，转化率差异的 z 值达到 2.1，团队当天全量；第四天数据回落到基线。文章解释显著性为什么不等于差异大、样本量与最小可检测效应怎么定、偷看和多重比较如何抬高假阳性，并给出双比例 z 检验的 Go 实现与完整的真实测试输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》8.1 实验分流与一致性</title><link>https://plumephp.com/inet-growth-08-1-experiment-split-consistency/</link><pubDate>Thu, 29 Oct 2026 04:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-08-1-experiment-split-consistency/</guid><description>推荐实验上线一周，同一用户却在一天内看到新老两版页面，实验组指标被对照组行为稀释。文章解释为什么分流必须是确定性哈希、salt 为什么要按实验隔离、分层实验如何保持正交，并给出 Bucket 与 Assign 的 Go 实现、稳定性与权重测试，以及真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》7.3 增长实验的度量</title><link>https://plumephp.com/inet-growth-07-3-growth-experiment-metrics/</link><pubDate>Thu, 29 Oct 2026 03:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-07-3-growth-experiment-metrics/</guid><description>活动首周注册转化从 8% 提到 12%，团队当天全量；活动结束第二周，7 日留存从 35% 掉到 22%。文章拆解指标定义、转化率分母、新奇效应与长期留存，给出 Rate 与 Lift 的 Go 实现、对照组零转化的边界测试和真实运行输出，并说明点估计为什么不能替代显著性判断。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》7.2 奖励发放与反作弊</title><link>https://plumephp.com/inet-growth-07-2-reward-anti-cheat/</link><pubDate>Thu, 29 Oct 2026 03:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-07-2-reward-anti-cheat/</guid><description>注册即发奖的活动在三天内被领空：刷子用接码平台批量注册，每个账号都合规地领一份。文章把发放收成幂等键、用户上限、活动预算三层，说明设备与支付工具维度如何补盲，并给出 Grant 的 Go 实现、拒绝不落账的测试与真实运行输出，以及活动预算为何要单独原子占用。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》7.1 邀请关系与归因</title><link>https://plumephp.com/inet-growth-07-1-invite-attribution/</link><pubDate>Thu, 29 Oct 2026 03:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-07-1-invite-attribution/</guid><description>邀请活动最容易出的问题不是奖励太少，而是关系方向不清：A 邀请 B、B 又邀请 A，发奖任务在环里打转。文章拆解单向绑定、归因窗口、最后点击与深度上限，给出 Bind 与 Attribution 的 Go 实现、环检测测试和一次真实运行输出，并以案例假设值说明预算如何在无人察觉时被循环领走。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》6.3 防刷、风控与兜底</title><link>https://plumephp.com/inet-growth-06-3-anti-abuse-fallback/</link><pubDate>Thu, 29 Oct 2026 03:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-06-3-anti-abuse-fallback/</guid><description>风控服务超时两秒，下单接口把所有异常都当成拒绝，用户看到“活动已结束”，库存其实还在。文章说明防刷为什么要同时看账号、设备、IP 和支付工具，风控结果为什么必须区分通过、拒绝和降级，并给出滑动窗口 Check 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》6.2 秒杀链路与限流</title><link>https://plumephp.com/inet-growth-06-2-seckill-flow-limit/</link><pubDate>Thu, 29 Oct 2026 03:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-06-2-seckill-flow-limit/</guid><description>网关每秒放五千个请求进来，服务内部一次失败重试三次，库存就在重试里被打穿。文章区分令牌桶、滑动窗口、漏桶和并发信号量，说明秒杀链路为什么要短、限流为什么要分层、排队与快速失败如何选择，并给出令牌桶 Allow 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》6.1 活动模型与库存预热</title><link>https://plumephp.com/inet-growth-06-1-activity-stock-preheat/</link><pubDate>Thu, 29 Oct 2026 03:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-06-1-activity-stock-preheat/</guid><description>十点开场，九点五十九分五十秒才把库存写进缓存，用户已经点进来：库存预热不是把数字抄一遍，而是把读压力提前搬走。文章拆开活动库存与商品库存、分桶预热和单桶容量校验，给出 Validate、State、Preheat 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》5.3 订阅与自动续费</title><link>https://plumephp.com/inet-growth-05-3-subscription-renew/</link><pubDate>Thu, 29 Oct 2026 02:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-05-3-subscription-renew/</guid><description>用户只是不想下个月继续扣款，点了取消续费，会员权益却当场消失，剩余十八天也用不了。文章拆解取消、到期、续费失败与退款四种语义，说明续费基准为什么取 max(now, PeriodEnd)，并给出 Renew 与 Cancel 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》5.2 权益发放与回收</title><link>https://plumephp.com/inet-growth-05-2-entitlement-grant-revoke/</link><pubDate>Thu, 29 Oct 2026 02:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-05-2-entitlement-grant-revoke/</guid><description>退款只退了钱，会员折扣却还在：权益发放和回收如果没有幂等键、原因码和审计，财务、客服与审计都说不清。文章区分发放、到期、回收三种语义，说明退款后如何回收权益，并给出 Active 与 Revoke 的 Go 实现、不可变切片测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》5.1 会员等级与成长值</title><link>https://plumephp.com/inet-growth-05-1-membership-level-growth/</link><pubDate>Thu, 29 Oct 2026 02:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-05-1-membership-level-growth/</guid><description>会员体系最常见的错误是只存等级、不存成长值：门槛一改，老用户等级全部对不上，回滚也无从判断。文章把成长值、等级和权益拆成三件事，讨论降级策略与规则回放，并给出 LevelOf、AddGrowth 两个纯函数的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》4.3 营销预算与防刷</title><link>https://plumephp.com/inet-growth-04-3-marketing-budget-anti-abuse/</link><pubDate>Thu, 29 Oct 2026 02:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-04-3-marketing-budget-anti-abuse/</guid><description>一次预算五十万、计划跑七天的活动在三十小时内被领空：只按账号限领挡不住换设备、换支付工具的刷子。文章拆解总预算、日预算、用户预算三层约束，说明账号、设备、支付工具三维防刷，并给出 Consume 与 Allow 的 Go 实现、边界测试与真实运行输出。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》4.2 叠加规则与最优解</title><link>https://plumephp.com/inet-growth-04-2-stack-rule-optimal/</link><pubDate>Thu, 29 Oct 2026 02:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-04-2-stack-rule-optimal/</guid><description>结算页有三张券却只减了 30 元，用户手动拆单后发现本可以减 40 元。文章说明不可叠加券与可叠加券的规则边界、为什么按面额排序的贪心会选错、金额封顶与百分比向下取整怎么处理，并给出 Best 的 Go 实现、最优解测试与真实运行输出，全程以分为单位。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》4.1 券模板、发放与核销</title><link>https://plumephp.com/inet-growth-04-1-coupon-template/</link><pubDate>Thu, 29 Oct 2026 02:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-04-1-coupon-template/</guid><description>从一次「限量五千张、三秒发出五千二百张」的领券事故写起，说明券模板与券实例为什么必须分开、发放链路要在哪一层挡住超发、核销为什么要单独做幂等，并给出 Validate 与 Issue 的 Go 实现、边界测试和真实运行输出。所有金额统一用 int64 分表示。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》3.3 对账、退款与冲正</title><link>https://plumephp.com/inet-growth-03-3-reconcile-refund-reverse/</link><pubDate>Thu, 29 Oct 2026 01:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-03-3-reconcile-refund-reverse/</guid><description>对账时本地少一笔、退款时直接改支付单状态，是财务永远对不平的两个根源。文章以渠道账单为准计算缺失记录，把退款建模为引用原支付流水号单独记账的新资金流，并在提交前校验累计退款不超过原金额，错误信息直接给出超出多少分的差额，同时区分退款与冲正。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》3.2 回调、幂等与掉单</title><link>https://plumephp.com/inet-growth-03-2-callback-idempotency/</link><pubDate>Thu, 29 Oct 2026 01:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-03-2-callback-idempotency/</guid><description>回调重试三次导致重复发货，是支付接入最常见的生产事故。文章把验签之后的业务校验拆成渠道流水号、金额和状态三项，用持久化幂等表保证同一个 TradeNo 只产生一次副作用，并说明掉单为什么要靠主动查单补偿而不是被动等待渠道再次通知，最后给出重复回调的测试。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》3.1 支付渠道接入</title><link>https://plumephp.com/inet-growth-03-1-payment-channel/</link><pubDate>Thu, 29 Oct 2026 01:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-03-1-payment-channel/</guid><description>从「每接一个渠道就复制一遍代码」的支付接入写起：支付宝、微信与 Apple Pay 在币种、限额和异步通知上的差异，决定了必须有一张统一支付单。文章给出 Request 校验、币种矩阵与失败场景，并说明为什么只存渠道单号会让换渠道后的对账无法关联。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》2.3 订单查询与用户可见性</title><link>https://plumephp.com/inet-growth-02-3-order-query-visibility/</link><pubDate>Thu, 29 Oct 2026 01:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-02-3-order-query-visibility/</guid><description>从“列表里能看到订单、点进详情却 403”的故障切入，说明订单查询的可见性与字段裁剪：本人、管理员、陌生人三种视角各能看什么，列表与详情为什么必须共用同一个 owner 判定。给出 Visible 与 Mask 的 Go 实现与测试，并复盘两个接口各写一套鉴权导致的客诉与数据泄露风险。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》2.2 订单状态机与超时关闭</title><link>https://plumephp.com/inet-growth-02-2-order-state-timeout/</link><pubDate>Thu, 29 Oct 2026 01:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-02-2-order-state-timeout/</guid><description>用一笔“已付款却被关闭”的订单说明订单状态机与超时关闭：created、paid、fulfilled、closed、refunded 五态和 pay、fulfill、close、refund 四事件如何约束迁移，超时任务为什么要幂等，已支付订单为什么不能被关闭。给出纯函数 Next 的 Go 实现与测试，并复盘关闭任务与支付回调并发导致订单被误关的故障。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》2.1 下单、支付与履约</title><link>https://plumephp.com/inet-growth-02-1-order-pay-fulfill/</link><pubDate>Thu, 29 Oct 2026 01:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-02-1-order-pay-fulfill/</guid><description>从一笔“下单成功、付款却按旧价”的客诉切入，拆解下单时用户、商品、库存、价格快照与风控五道校验的先后顺序，说明支付与履约为什么是两条链路。给出用 int64 分计价、逐项检测乘法和累加溢出的 Go 实现与测试，并复盘价格快照缺失导致的资损与对账差额。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》1.3 库存对账与回补</title><link>https://plumephp.com/inet-growth-01-3-stock-reconcile/</link><pubDate>Thu, 29 Oct 2026 00:50:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-01-3-stock-reconcile/</guid><description>从「拾光集市」大促后库存快照与流水对不上、对账任务重跑导致同一笔差异被回补两次的事故出发，梳理库存漂移的常见来源，说明为什么对账必须以流水而不是快照为准、回补为什么要用业务唯一键保证幂等，并附可运行的 Go 差异计算与容差判定代码，以及覆盖双向漂移的表驱动测试。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》1.2 库存扣减与超卖</title><link>https://plumephp.com/inet-growth-01-2-stock-deduct-oversell/</link><pubDate>Thu, 29 Oct 2026 00:40:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-01-2-stock-deduct-oversell/</guid><description>以「拾光集市」限量 200 份手冲套装在大促中支付失败、库存被永久占用的事故为线索，对比下单即扣、支付后扣与预扣确认三种时机的超卖与占用风险，说明可用库存与预留库存为什么要分开、超时释放如何收尾，并给出可运行的 Go 扣减、确认、释放函数与完整生命周期测试。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》1.1 商品模型与 SKU</title><link>https://plumephp.com/inet-growth-01-1-product-sku/</link><pubDate>Thu, 29 Oct 2026 00:30:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-01-1-product-sku/</guid><description>从「拾光集市」一次上架生成两个 SKU、同一属性组合被卖成两份库存的事故出发，拆解商品、SPU 与 SKU 各自该放什么，说明属性组合为什么要排序、转义并生成稳定 Key，价格为什么必须落在 SKU 上，并附可运行的 Go 校验函数与表驱动测试。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》目录与学习路径</title><link>https://plumephp.com/inet-growth-toc/</link><pubDate>Thu, 29 Oct 2026 00:20:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-toc/</guid><description>卷三目录：13 章从商品、库存、订单、支付与对账，讲到优惠券、会员、活动秒杀、邀请裂变、实验配置、用户触达、开放平台、国际化与运营后台，最后用下单到对账的端到端链路收口；每节配可运行的 Go 代码与失败场景，并给出四条阅读路径与三条质量指标。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》前言</title><link>https://plumephp.com/inet-growth-preface/</link><pubDate>Thu, 29 Oct 2026 00:10:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-preface/</guid><description>卷三前言：说明读者对象、13 章的组织方式、每章的统一结构、可运行 Go 实验工程的包划分、代码分级、金额与时区约定、数字口径、三种阅读路径、代码阅读顺序与表格读法，以及如何验证自己真的读懂了交易链路；文中全部 Go 代码均可在本地逐字节复现。</description></item><item><title>《互联网产品的服务端架构·交易、增长与平台化》序</title><link>https://plumephp.com/inet-growth-foreword/</link><pubDate>Thu, 29 Oct 2026 00:00:00 +0800</pubDate><guid>https://plumephp.com/inet-growth-foreword/</guid><description>卷三序：当产品开始收钱、发券、做活动、拉新，服务端的判断标准从「能不能看到」变成「每一笔钱和每一个库存能否解释、能否对账、能否重放」；这一卷写给正在做交易、营销与增长系统的后端工程师与技术负责人，用对账差异与秒杀事故说明状态、流水与补偿的约束。</description></item></channel></rss>