如何在同一Google Play账号下同时测试UAT与生产环境的Google Play Billing?
Google Play Billing RTDN UAT/生产环境隔离方案
针对单Google Play账号下UAT与生产环境RTDN事件冲突的问题,以下是几个可行的落地方案:
方案1:Pub/Sub订阅过滤规则(推荐)
利用Google Cloud Pub/Sub的订阅过滤功能,在同一个主题下为UAT和生产环境分别创建独立订阅,通过事件属性过滤实现隔离:
- 给生产环境订阅添加过滤条件:
attributes.purchaseType = "0"(对应正式购买事件) - 给UAT环境订阅添加过滤条件:
attributes.purchaseType = "1"(对应测试购买事件) - 无需修改Google Play Console的主题配置,两个订阅会自动接收对应类型的事件,互不干扰。
注:Google Play的测试购买(内部测试、许可测试账号发起的购买)会在RTDN事件中标记
purchaseType=1,正式购买为purchaseType=0,该属性无需额外配置即可获取。
方案2:商品ID区分+后端路由
与Android团队协作,在Google Play Console中创建两套商品(测试版&正式版),比如:
- 正式商品ID:
pro_monthly - UAT测试商品ID:
pro_monthly_uat
后端监听器收到RTDN事件后,通过解析productId字段的后缀标识,将事件路由到对应的UAT或生产处理逻辑中。
方案3:临时主题切换(适合低频率测试)
如果上述方案无法落地,可采用临时切换主题的方式:
- 日常保持Google Play Console配置为生产主题,生产环境正常接收事件
- 需要UAT测试时,先暂停生产环境的RTDN监听器,将Play Console的主题切换为UAT主题
- 测试完成后,切回生产主题,恢复生产监听器,并验证生产事件接收正常
额外最佳实践
- 严格使用Google Play官方测试渠道(内部测试、封闭测试)和测试账号进行UAT,禁止使用真实支付发起测试购买
- 后端RTDN处理逻辑必须实现幂等性,避免重复事件导致业务异常
- 与Android团队明确测试购买的触发规则,确保UAT事件的标识一致性
内容的提问来源于stack exchange,提问作者KVS
相关产品推荐
相关产品推荐

