SuperAPI AI 工具集

error-handling

设计与创作

查看项目

更新于 10-16 07:58

技能介绍

用途:为 Play Billing Library 设计错误处理与重试策略,覆盖从读取 BillingResult 到落地重试层的流程。

主要能力:1) 正确读取 BillingResult:根据 responseCode 使用 BillingClient.BillingResponseCode 常量分支,debugMessage 仅用于日志,不得解析或展示给用户;可检查 PBL 8.0 起的子响应码(如 PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS、USER_INELIGIBLE),需先判断是否存在。2) 归类响应码:OK 继续;USER_CANCELED 静默返回;SERVICE_UNAVAILABLE、ERROR 走指数退避;NETWORK_ERROR、SERVICE_TIMEOUT 短延迟简单重试;SERVICE_DISCONNECTED 重连后重试;ITEM_UNAVAILABLE 刷新商品;ITEM_ALREADY_OWNED、ITEM_NOT_OWNED 刷新购买记录;BILLING_UNAVAILABLE 提示用户登录或更新 Play 商店;DEVELOPER_ERROR、FEATURE_NOT_SUPPORTED 视为终止错误。可建模为 sealed action 类型以便单元测试。3) 重试层:NETWORK_ERROR/SERVICE_TIMEOUT 固定短延迟、最多三次;SERVICE_UNAVAILABLE/ERROR 指数退避加随机抖动;在重试外再加熔断器,连续失败后短路调用一段时间。

使用方式:以 PBL 9.x 为例,用 when(responseCode) 分支;可复用示例中的 retryOnBillingError、retryWithBackoff、BillingCircuitBreaker 与 guarded 函数。

适用场景:应用内购买、订阅等需要稳定处理网络与服务端波动的场景。

限制与注意:PBL 返回结果而非抛异常,应检查响应码;BILLING_UNAVAILABLE 不自动重试;DEVELOPER_ERROR 不应出现在生产;FEATURE_NOT_SUPPORTED 可启动时用 isFeatureSupported 检测;onPurchasesUpdated 中即使 OK 也要对 purchases 判空,USER_CANCELED 不发 UI、不打失败埋点,ITEM_ALREADY_OWNED 静默发放权益;用户提示文案需映射类别,绝不展示原始响应码或 debugMessage;成功购买需在三天内确认,否则自动退款。资料未提供具体版本兼容细节之外的额外收费或价格信息。