ENGINEERING NOTE 12 / 50 · SMS

让接码倒计时不受设备时间偏差影响

OPEN RAMBO ·

浏览器倒计时只是展示。到期判断由服务端负责,并结合自身时间与订单状态决定操作是否允许。

本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。

返回绝对到期时间

同时返回服务端当前时间与到期时间。估算展示偏移,不直接信任设备时钟。电脑快十分钟不应让新订单立即显示过期;长时间休眠后重新估算。

不能靠定时器次数计时

后台标签定时器可能降频。每次回调减一秒会产生偏差。每次渲染重新计算剩余时间。显示归零时查询最终状态,休眠期间可能已经收码。

操作仍由服务端判断

客户端可能在展示到期后提交取消。服务端依据权威状态和订单规则,不接受客户端剩余秒数作为依据。显示问题不能改变退款资格或延长已购买号码期限。

示意流程

offset = server_now_ms - device_now_ms
remaining = max(0, expires_at_ms - (device_now_ms + offset))
# Server rechecks expiry independently.

如何验收

测试设备快慢十分钟以及标签休眠,确认最终状态仍来自服务端。

继续阅读