You need to enable JavaScript to run this app. 如何通过Google Play Billing Library传递用户ID
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Play Billing Library传递用户ID

Billing Library 3.0+ 绑定用户关联标识的实现方法

按照Google Play结算库的强制适配规则,所有新应用、存量应用的版本更新均需接入3.0及以上版本的Billing Library,对应适配的Gradle依赖配置为:
implementation "com.android.billingclient:billing:3.0.2"

和2.x版本的逻辑不同,3.0及以上版本已经完全移除了原有的developerPayload自定义传参能力,无法再通过该字段传递与购买记录绑定的用户ID类标识,可通过以下两种官方支持的方案实现关联:

方案一:使用内置的混淆标识字段(快速适配方案)

Billing Library 3.0及以上版本在发起购买的参数类中,新增了两个专门用于存储关联标识的内置字段,字段值会直接和对应购买记录绑定存储,后续可从购买对象中回读:

  • obfuscatedAccountId:适合传入当前登录用户的唯一标识,比如用户主键哈希值
  • obfuscatedProfileId:适合传入用户下的二级标识,比如游戏内角色ID、绑定的社区账号ID

发起购买时的参数构建代码示例:

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(targetSkuDetail)
    // 传入经哈希处理的用户ID,自动绑定到后续生成的购买记录
    .setObfuscatedAccountId(hmacHashedUserId)
    .build();
// 拉起Google Play结算界面
billingClient.launchBillingFlow(activity, billingFlowParams);

字段使用注意事项:

  • 传入的字段值最大长度为100字符,Google Play会对内容做加密混淆后存储,不会回传明文原始值
  • 回读关联标识时,可从接口返回的Purchase对象中,通过getAccountIdentifiers()方法获取之前传入的对应字段值
  • 不要传入未脱敏的敏感信息(比如完整手机号、证件号、原始邮箱),建议提前对用户ID做单向哈希处理后再传入,符合隐私合规要求

方案二:服务端全链路绑定(高可靠安全方案)

如果是涉及大额交易、长周期订阅的场景,更推荐不依赖客户端传参,完全通过服务端逻辑实现绑定:

  1. 用户在客户端点击购买按钮时,先向自身业务服务端申请本次购买的唯一关联凭证
  2. 服务端将该凭证与当前登录用户ID做映射存储,标记为待匹配购买状态
  3. 购买流程完成后,服务端通过Google Play的实时通知通道接收购买回执,直接通过本地存储的映射关系匹配购买记录与对应用户

这种方案可以完全避免客户端被篡改、参数伪造、多端同步异常带来的绑定断裂问题,是资金类场景的推荐实现方式。

避坑提醒:不要尝试通过拼接商品ID后缀、本地缓存手动匹配、硬编码参数等方式传递关联标识,这类操作容易触发Google Play的商品合规校验,也会因为客户端缓存丢失、换设备登录导致绑定关系失效。


内容的提问来源于stack exchange,提问作者Martin Zeitler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 06:06:03