用途:这是一个参考查询技能(lookup table),用于在 Play Billing Library 集成中查询 BillingResult.getResponseCode() 或 getOnPurchasesUpdatedSubResponseCode() 返回值的含义、类别与处理策略。它不用于从零编写集成代码,编写启动或购买流程应使用对应流程技能。
主要能力:覆盖 PBL 9.x 定义的全部 BillingResponseCode 常量(常量集与 8.x 相同,v9 未增删);覆盖 PBL 8.0 新增的全部 OnPurchasesUpdatedSubResponseCode 常量;提供每个码的可重试性、推荐响应策略、重试实现汇总以及从收到码到动作的错误处理决策树。典型问题包括“响应码 7 是什么意思”“SERVICE_UNAVAILABLE 是否应重试”“如何处理 ITEM_ALREADY_OWNED”。
可用响应码:OK(0)、USER_CANCELED(1)、SERVICE_UNAVAILABLE(2)、BILLING_UNAVAILABLE(3)、ITEM_UNAVAILABLE(4)、DEVELOPER_ERROR(5)、ERROR(6)、ITEM_ALREADY_OWNED(7)、ITEM_NOT_OWNED(8)、NETWORK_ERROR(12)、SERVICE_DISCONNECTED(-1)、FEATURE_NOT_SUPPORTED(-2)、SERVICE_TIMEOUT(-3)。子响应码仅在 PurchasesUpdatedListener.onPurchasesUpdated() 回调中通过 getOnPurchasesUpdatedSubResponseCode() 获取,包含 NO_APPLICABLE_SUB_RESPONSE_CODE、PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS、USER_INELIGIBLE。
分类与策略:分为成功、用户意图、瞬时服务或网络、缓存同步、目录或商品、环境或配置、编程错误六类桶。重试策略包括:NETWORK_ERROR 使用 1-2 秒固定延迟、最多 3 次;SERVICE_UNAVAILABLE、ERROR、SERVICE_TIMEOUT 使用 2 秒基数、2 倍因子的指数退避、最多 3 次;SERVICE_DISCONNECTED 在 PBL 8 启用 enableAutoServiceReconnection() 后自动重连;BILLING_UNAVAILABLE 由用户手动重试;USER_CANCELED、DEVELOPER_ERROR、FEATURE_NOT_SUPPORTED 不重试。
使用方式:接收 BillingResult 后按决策树依次判断:OK 直接处理;USER_CANCELED 不处理也不提示;可重试错误按对应策略重试,全部失败后展示错误;ITEM_ALREADY_OWNED 或 ITEM_NOT_OWNED 调用 queryPurchasesAsync() 刷新本地缓存;ITEM_UNAVAILABLE 刷新商品详情;BILLING_UNAVAILABLE 或 FEATURE_NOT_SUPPORTED 展示面向用户的提示,不自动重试;DEVELOPER_ERROR 记录完整信息并修正代码。
限制:本技能仅为查阅参考,不生成新的集成代码;权威表格与决策树完整版位于 revenuecat.com 附录与 Google Play Billing Library 官方参考。除上述内容外,其他扩展信息暂未提供。