Google的IAP支付

Google IAP 就像去游乐园玩项目:你在官方售票亭(Google Play)买票(发起支付),拿到一张带有防伪码的票据(Purchase Token),然后项目管理员(你的服务器)必须用特殊的验票机(调用 Google API)去验证这张票的真伪,确认无误后,才会放你进去玩(发放商品)。

服务器的验证逻辑应该是:” 我收到了 purchaseToken,我去问 Google 这是谁、买了什么 “。商品信息和用户信息应该以 Google API 返回的结果为唯一标准。开发阶段,你可以将自己服务器的用户 ID 编码到购买请求的 obfuscatedAccountId 字段中,Google 会在验证结果里原样返回给你,用以校验用户身份。

  • 对于一次性商品(如游戏币):使用 client.VerifyProduct()
  • 对于订阅商品(如月度会员):使用 client.VerifySubscription()

1. 流程

1.1 下载 Json

前往 Google Play Android Developer API配置页,点击凭据,在下方的服务账号,找到之前创建的服务账号,点击修改进入到修改页面,点击密钥,再点击添加密钥→创建新密钥,选择 JSON,点击创建,保管好这份 JSON 文件,服务端调用 API 时需要使用这份文件中的配置来初始化 Client。

验证 api: https://developers.google.cn/android-publisher/api-ref/rest/v3/purchases.subscriptionsv2/get?hl=zh-cn

1.2 验证返回值

https://developers.google.cn/android-publisher/api-ref/rest/v3/purchases.subscriptionsv2?hl=zh-cn

1.3 回调返回值

定义:https://developer.android.com/google/play/billing/rtdn-reference#json_specification

https://developer.android.com/google/play/billing/rtdn-reference#one-time

https://developer.android.com/google/play/billing/rtdn-reference#sub

2. 其他

2.1 订阅升级方案

google play 的订阅升级(月转年)会麻烦一些,需要指定,当前订阅、将来(升级或降级的)订阅以及要使用的替换模式的详细信息。

参考文档:https://developer.android.com/google/play/billing/subscriptions?hl=zh-cn#trigger-subscription

google play 没有 apple 的订阅组的概念,如果直接购买两个订阅,两个订阅都会是生效状态。

3. 参考文档