Flutter开发的app实现Google Pay 配置

0 阅读2分钟

背景,app的苹果支付已经调试完了。在Google支付却遇到了问题。 首先,商品是创建好的。

Google Pay 支付配置步骤(脱敏版)

本文基于你提供的操作截图整理,所有可能涉及隐私的信息均已用 xxxx 代替。

1. 准备工作

在写代码前,先完成 Google Cloud 和 Google Play Console 的权限打通:

  1. 在 Google Cloud 项目 xxxx 中创建服务账号(Service Account)。

image.png

image.png

  1. 下载该服务账号的 JSON 密钥文件(例如 xxxx.json)。

image.png

  1. 在 Google Play Console 的“用户和权限”中邀请该服务账号邮箱(如 ser@xxxx.iam.gserviceaccount.com)。 复制账号,添加为用户并赋予相应的权益

image.png

  1. 给该服务账号关联目标应用(例如 xxxx)。

image.png

image.png

2. 必开 API(非常关键)

如果未启用 Android Publisher API,会出现以下典型报错:

  • Google Play Android Developer API has not been used in project xxxx before or it is disabled

处理方法:

  1. 打开 Google API Library - Android Publisher API
  2. 点击 Enable
  3. 等待 2-10 分钟权限传播后再重试

刚启用 API 立即调用,可能仍会短时间报错,属于正常延迟。

3. Play Console 权限配置

在 Play Console -> 用户和权限 -> 该服务账号,确保至少勾选以下两项权限:

  1. View financial data, orders, and survey responses
    (查看财务数据、订单和调查问卷回复)
  2. Manage orders and subscriptions
    (管理订单和订阅)

你提供的截图已明确:如果缺少这两个权限,常见结果是 401 insufficient permissions

4. 常见 401 报错与对应修复

报错 1

  • Error 401: The current user has insufficient permissions to perform the requested operation
  • 或日志:Verify PurchaseToken Fail ... permissionDenied

检查顺序(建议按这个顺序排查)

  1. 服务账号是否已被邀请到 Play Console(不是只在 Cloud 创建就行)。
  2. 服务账号是否关联到正确应用 xxxx
  3. 两项核心权限是否都已勾选(见上节)。
  4. Android Publisher API 是否已启用。
  5. 是否等待了权限传播(刚改权限时常有延迟)。
  6. 后端加载的 JSON 密钥是否为当前服务账号对应的最新文件。

5. 后端落地建议

  1. JSON 密钥文件不要入库,使用环境变量或密钥管理系统挂载。
  2. 在启动时打印“脱敏后的服务账号邮箱后缀 + 项目 ID 后 4 位”用于定位环境问题。
  3. 验证购买失败时,把 error codepackageNameproductIdpurchaseToken(脱敏)写入结构化日志。
  4. 401 增加明确提示:请检查 Play Console 权限和 Android Publisher API 是否已启用

6. 配置完成验收清单

  • Cloud 中服务账号已创建,JSON 密钥可被后端读取
  • Android Publisher API 已启用
  • 服务账号已加入 Play Console 用户与权限
  • 已关联正确应用 xxxx
  • 两项核心权限已勾选
  • 真机支付后,后端 verify purchase token 返回成功,无 401 permissionDenied