Google Billing Library 4中launchBillingFlow可返回哪些结果码?
为应用内购或订阅发起计费流程,会展示Google Play购买页面,流程结果将通过
BillingClient.Builder.setListener(PurchasesUpdatedListener)设置的PurchasesUpdatedListener接口实现回调返回。
两处BillingResult的响应码处理分工
1. launchBillingFlow 同步返回响应码
该返回值仅对应计费流程启动阶段的状态,也就是调用方法到Google购买页成功弹出前的校验、连接阶段的结果,除你反编译确认的4类响应码外,还可能返回其他服务校验类错误码,完整可处理的响应码如下:
OK:计费流程成功启动,Google购买页面已展示给用户,后续所有流程结果均走PurchasesUpdatedListener回调SERVICE_DISCONNECTED:当前BillingClient未与设备上的Google Play建立连接SERVICE_TIMEOUT:启动计费流程过程中连接中断,后台更新Google Play时大概率触发该错误FEATURE_NOT_SUPPORTED:传入的BillingFlowParams与当前BillingClient实例的配置不匹配,比如配置仅支持内购但传入了订阅类型的skuDEVELOPER_ERROR:开发配置类错误,常见场景包括传入的sku ID不存在、应用签名与Google Play后台配置不一致、测试账号未加入测试白名单等SERVICE_UNAVAILABLE:设备未安装Google Play服务、服务被冻结、无网络权限,无法正常调用计费接口ERROR:未知服务错误,通常由Google Play服务内部异常触发
所有非OK的返回值都代表购买页未成功弹出,无需等待后续回调,可以直接给用户对应错误提示即可。
2. PurchasesUpdatedListener 回调返回响应码
该回调返回的是购买页弹出后的所有流程结果,包含用户操作、支付结果、购买后校验的所有状态,需要处理的核心响应码包括:
OK:用户支付成功,可拿到返回的Purchases列表进行订单校验、商品核销操作BILLING_CANCELED:用户主动取消购买流程,包括点击取消按钮、手动关闭购买页,也就是你实测和官方文档描述错位的响应码ITEM_ALREADY_OWNED:用户已持有当前非消耗型商品、或当前订阅处于有效期内,无法重复购买ITEM_UNAVAILABLE:当前商品已下架、或不对当前用户所在地区开放购买SERVICE_DISCONNECTED:购买过程中Google Play服务连接中断,比如网络断开、后台进程被杀ERROR:支付过程中出现未知错误,比如银行卡余额不足、支付渠道临时故障
内容的提问来源于stack exchange,提问作者Ted Hopp
相关产品推荐
相关产品推荐

