Google Play 订阅接入:支付后台配置与服务端验证

Google支付与服务端验证

一、Google 开发者平台配置回调

订阅后台地址

Google Cloud Pub/Sub 主题列表

新建主题

新建主题

新建主题示例

创建订阅:输入回调服务端地址(付款成功后进行回调)

创建订阅

注意:需要设置 [email protected](必须添加)。

参考网址:Google Play 计费准备

配置示例

Google Play 控制台

最后通过 创收设置 来检查是否能够由 Google 通知到我们。

配置步骤

  1. 创建 API 项目:这个项目与登录用的项目不同。
  2. 开启 Google Play Android Developer API
  3. 设置 OAuth 同意屏幕:即开发者授权账号登录时的登录页面。
  4. 创建 Web 应用的 OAuth 客户端 ID
  5. 在 Google Play 开发者后台的 API 权限 菜单中关联刚刚创建的项目。一个 Google Play 账号只需关联一个 API 项目,该项目可以查询关联账号中的所有应用的订单。
  6. 拉起授权页面,使用 Google 开发者账号给项目授权,得到 code
  7. 通过 code 获取 refreshToken,该 token 仅在第一次返回,需要永久保存(非常重要)。如果丢失,需重新创建 OAuth 客户端 ID,并重复步骤 6 和 7。
  8. 刷新 refreshToken,获取 accessToken,通过 accessToken 查询订单状态。accessToken 一般有效期为 5 分钟,过期后需重新用 refreshToken 获取新的 accessToken。

操作截图

步骤 1:创建 API 项目

创建 API 项目

步骤 2:开启 Google Play Android Developer API

开启 API

搜索“Google Play Android Developer API”

搜索 API

开启“Google Play Android Developer API”

开启 API 示例

步骤 3:开启同意屏幕

同意屏幕

填写必填项即可。

步骤 4:创建 OAuth2 客户端 ID

创建客户端 ID

创建页面和创建成功后的修改页面可以获取到 clientId 和 clientSecret。

获取 clientId 和 clientSecret

到此,API 项目已创建完成。

步骤 5:在 Google Play 后台关联 API 项目

关联 API 项目

步骤 6:获取 code

地址:https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri={填写的重定向地址}&client_id={创建的clientId}

{XX} 替换为创建 API 项目时填写的重定向地址和 clientId,然后在浏览器中打开,授权登录。

请求方式:浏览器中打开。

获取 code 示例

code 参数示例

步骤 7:使用 code 换取 refreshToken

地址:https://accounts.google.com/o/oauth2/token

请求方式:POST

参数:
grant_type=authorization_code
code=获取到的code(需 urldecode)
client_id=创建 API 项目时的 clientId
client_secret=创建 API 项目时的 clientSecret
redirect_uri=创建 API 项目时的重定向地址

获取 refreshToken 示例

获取到 refreshToken,务必保存,它只会在第一次请求中返回。

步骤 8:使用 refreshToken 获取 accessToken

地址:https://accounts.google.com/o/oauth2/token

请求方式:POST

参数:
grant_type=refresh_token
refresh_token=刚刚获取到的 refreshToken
client_id=创建 API 项目时的 clientId
client_secret=创建 API 项目时的 clientSecret

获取 accessToken 示例

步骤 9:查询订单状态

地址:https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}?access_token={access_token}

  • packageName:应用包名,需与创建 API 项目时的包名一致。
  • productId:对应购买商品的商品 ID。
  • token:购买成功后 Purchase 对象的 getPurchaseToken()。
  • access_token:上面获取到的 accessToken。

请求方式:GET。

总结

到此,整个支付验证流程已完成。以下是笔者在试用过程中遇到的一些问题总结:

  • Google 应用必须在封闭测试状态下并审核通过才能支付,文档提到内部测试即可,但笔者每次都需在封闭测试状态下才能支付。
  • 在 Firebase 中创建的项目会自动同步到 Google API 后台,无需单独创建登录使用的项目。
  • 登录使用的 API 项目与查询支付的 API 项目是两个不同的项目,查询支付的 API 项目一个 Google Play 账号对应一个项目,该账号中的所有应用均可通过此项目查询。
  • 获取 code 授权 API 项目时,需使用 Google Play 后台的开发者账号授权。

关于 RefreshToken 过期问题

  • API 项目同意屏幕发布状态为测试(有效期 7 天)。
  • RefreshToken 6 个月未使用,需维护 accessToken 的有效性。
  • 授权账号改密码可能导致过期(未测试)。
  • 授权超过 50 个刷新令牌,最先的刷新令牌会失效。
  • 取消授权。
  • 属于具有有效会话控制策略的 Google Cloud Platform 组织。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

(0)
上一篇 6小时前
下一篇 2小时前

相关推荐