payin商户操作手册

最新文章

计费锚点设为三十一日:Stripe 如何处理短月

区分月末续期与注册日号续期,明确时分秒与展示时区,检查二月边界,避免续期日期被错误推移。

成稿与来源核验:

适用于新建 Stripe 月度订阅的三十一日锚点、闰年与协调世界时边界;仅为文档研究,不含既有订阅迁移或未付账单的按比例计费。

三十一日是持续规则,不是缺失后就作废的日期

Stripe 月度订阅若以一月三十一日为计费锚点,会在二月二十八日续期,闰年则为二月二十九日,之后回到三月三十一日、四月三十日。二月的短月处理不会把后续月份永久改成二十八日。[1] 公开社区中,开发者确实提出过“订阅从三十一日或闰年的二月二十九日开始,会怎样按月计费”的问题。[2] 因此,看到二月日期缩短时,应先判断是否正常应用锚点规则,而不是立即认为客户的订阅被修改。

本文仅讨论新建月度订阅的日历对齐,属于文档研究,并非实际执行过的 Stripe 集成测试,也不表示 PayIn 提供 Stripe 订阅功能。未付账单下的套餐调整、抵扣金额和既有订阅迁移均不在范围内。

先区分月末续期与固定日号续期

Stripe 明确说明,将 billing_cycle_anchor_config[day_of_month]=31 用于新建月度订阅,可让不足三十一天的月份也在当月最后一天续期。[1] 选择参数之前,先写清商业承诺:“每月最后一天”和“每月与注册日相同的日号”不是同一项规则。

  • 如果承诺月末续期,应选择三十一日,而不是照抄注册当月碰巧作为月末的日期。[1]
  • 如果承诺闰日注册的固定日号续期,社区回答描述的是其他月份二十九日、下一年二月二十八日;这不同于每月月末。[2]
  • 如果承诺每月一日开始新周期,不要把最后一天的时间戳标成下个月第一天。先让业务负责人明确实际续期边界。

例如,团队在二月开放订阅,可能因为当年二十八日就是月末而保存日号二十八。但若长期政策是每月月末,应采用文档给出的三十一日配置。[1] 建议同时保留中文规则说明和技术参数,让客服解释三月份的日期时不必反向猜测时间戳的含义。

日号之外,还要明确时分秒

Stripe 推荐月度或年度订阅使用 billing_cycle_anchor_config,因为它会考虑短月与闰年;另一种方式是通过 billing_cycle_anchor 直接传入以秒为单位的时间戳。[1] 这里的配置方式用于创建订阅,不应把本文示例直接当作修改既有订阅的操作方案。[1]

若希望在协调世界时的月末零时续期,示意参数为 billing_cycle_anchor_config[day_of_month]=31billing_cycle_anchor_config[hour]=0billing_cycle_anchor_config[minute]=0billing_cycle_anchor_config[second]=0。Stripe 支持这些时间分量,且锚点使用协调世界时。[1] 这些只是参数组合,不是完整支付集成,也不是已经执行成功的请求。

如果省略时、分、秒,Stripe 会使用订阅创建时刻对应的值。[1] 因而只设三十一日并不等于承诺午夜续期。建议分别记录系统采用的时间和客户页面的展示时区。发布“最后一天扣费”的说明前,应检查同一时刻转换到客户时区后显示哪一天,不能把协调世界时配置悄悄替换为本地日历承诺。

锚点不一定就是下一张完整账单的日期

周期长度与锚点共同决定时间安排。Stripe 说明,配置得到的锚点可能超过未来一个计费周期,但第一张完整账单的日期仍会落在创建订阅或试用结束之后的一个计费周期之内。[1] 因此,锚点是对齐参考,不是任何情况下都能直接当作“下次扣费时间”的字段。

官方举例:二月创建每两个月续期的订阅,并将日号设为三十一日,结果锚点可能在八月三十一日,但第一张完整账单仍在二月。[1] 审查共用的日期计算逻辑时,应保留这个边界案例。它并不改变普通月度订阅的一月、二月、三月序列。创建日至完整周期开始之间如何计费,是另一项独立决策,本文不规定其收费方案。

对外通知前检查日期边界

另一则公开问题询问:一月三十日创建的订阅若在二月二十九日十九时四十一分三十四秒结束当前周期,下一周期应从该时刻开始,还是从三月一日零时开始?[3] 这说明只展示年月日不足以排查周期问题。以下是建议的检查用例,不是已经完成的测试记录。

  • 检查平年序列:一月三十一日、二月二十八日、三月三十一日、四月三十日。
  • 检查闰年序列:一月三十一日、二月二十九日、三月三十一日。
  • 比较固定二十九日的规则与三十一日月末规则,确认业务选择没有混淆。
  • 比较明确设置零时与省略时分秒的配置,确认页面没有擅自补上午夜。
  • 记录返回的锚点、实际周期边界、周期长度和展示时区;发现差异时排查原因,不要每次都从上一个缩短后的日期重新推算。

前两组预期日期来自 Stripe 的月末规则。[1] 对客户可以说明“按所配置的协调世界时时刻,在当月最后一天安排续期”,并按需展示换算后的客户当地时间。应把续期安排与支付结果分开表达,不承诺该时刻一定成功扣款。引用资料没有给出该日期算法专属的国家清单;这也不能用来推断 Stripe 在任何地区都可开户或使用所有支付方式。

来源与日期

技术行为以官方文档为依据;社区提问只说明定性需求。于2026-09-22读取核验,检索日期不等于原文发布日期;未注明的日期仍视为未知。本文为文档研究,不是实际账户测试,不代表 PayIn 产品功能,也不是法律、税务或财务意见。账户资格与地区可用性需要另行确认。

延伸阅读

全部指南