JAVA随笔码农日历

谷歌内购服务配置教程与避雷指南

2020-08-21  本文已影响0人  一灰灰blog

谷歌内购服务配置教程与避雷指南

最近客串了一把 android 开发,对接谷歌的内购商品,这个过程真的是特别不顺,各种意想不到的坑,一踩一个;

接下来记录一下谷歌内购服务的完整配置流程,以及在最后测试阶段可能遇到的各种问题;在正式开始之前,请确定以下基本条件

  1. 科学上网
  2. 准备 gmail 邮箱
  3. 准备 google play 账号(地区不要选择中国大陆,因为不支持购买)
  4. 授权开启商家账号
  5. 准备测试机(谷歌服务四件套得有)

1. 内购服务前置授权配置

进入链接,开启 api accesshttps://play.google.com/apps/publish/#ApiAccessPlace

image

接着点击上面的创建服务账号

image

接下来再新的窗口页,点击创建服务账号

image

创建服务账号有三步,第一步如下,填写标记的两项

image

第二步设置账号权限,下面勾选结算功能,为了简单也可以直接选择 owner,对所有的权限都有

image

第三步,服务账号授权,注意账号就是我们第一步生成的,输入 bill 会出现一个候选框,选中即可

image

上面完成之后,会多一个服务账号,接下来创建密钥, json/p12 按需选择

image

比如我选择了 p12 之后,再进入详情,可以看到如下基本信息,在后续内购订单的确认中,服务端会用到这个电子邮件地址 + 上面下载的 p12 文件 (请注意,本文的所有配置只是为了演示,弄完之后就删除了,所以不要用这些信息来搞事情哦)

image

上面服务账号配置完毕之后,回到前面的页面,点击完成

image

点击完成之后,会自动刷新,出现下面这一行,点击授予访问权,在弹出中选中需要授权的应用

image

在下面的演示中,给的是管理员权限,并选中了 app

image

如果我们的内购商品是订阅类型,即支持自动续订,那么我们还需要额外的消息推送配置,比如自动续订之后,回调一下服务器,告诉续订成功,接下来进入相关配置

下面的操作来自于文档:https://cloud.google.com/pubsub/docs/quickstart-console

我们在快速入门中,点击设置项目,选中google play android developer

image

接下来进入 Pub/Sub 主题页,即https://console.cloud.google.com/cloudpubsub/topicList来创建主题

image

创建完毕之后,会自动进入主题详情页,拉到最下面,创建订阅

image

在订阅中,填写必要信息,比如订阅 id,我这里选择的是推送方式,因此需要填写接收推送的 url

image

topic 创建完毕之后,需要授予权限

image image

选择添加成员,google-play-developer-notifications@system.gserviceaccount.com,角色为Pub/Sub Publisher

image

保存之后,进入主题,点击刚才创建的 billing,进入详情,找到下面红框的内容,复制到粘贴板

image

接下来进入 google play console,找到对应的项目,进入服务和 API

image

将我们前面的内容,复制到输入框,点击保存,也可以发送测试通知,看一下配置的 url 是否能收到内容

image

在上图中,上面的终端显示的就是 google 的回调,因为我是随便配置的一个 url,所以不会正常返回 200 状态,所以会重试(关于这个消息的重试机制,推荐选择阶梯重试方式,避免立即重试)

以上所有的配置,请注意这些都是谷歌内购商品的前提操作,这些搞完之后,还有一些操作等待着你

2. 商品配置

这里应该是最简单,坑最少的地方了

接下来进入 google play console https://play.google.com/apps/publish,进行内购商品配置

image

请注意,应用内商品需要商家账号,开通流程没什么可说的,这里注意一下,受管理的商品和订阅是两种类型

创建收管理的商品,比较简单,唯一需要注意的是商品 ID,不能与之前的有冲突,而且某个商品即便删除了,其商品 id 也是依然不能再用的;其次就是需要将状态改为有效

image

订阅商品创建姿势和上面基本一致,会多一个结算周期;请注意,订阅商品创建之后不能删除(至少我没有找到删除的地方)

image

3. 代码集成

接下来就是 android 端集成对应的代码,按照文档一步一步来,官方文档在接入代码这里,写得比较清晰,主要的问题会在后面的测试环节

4. 测试

下面介绍下我们在测试这里踩过的坑

a. 首次提内测包需要过审

在测试之前,先要发包到 alpha 或者 beta 环境

首次发包需要审核,即便发的是内测包也需要审核(请注意预留足够的时间)

b. 签名问题

请注意,用于测试购买的包,有以下几点非常重要

c. 测试机

测试机上,google 的基础服务要有

c. Google Play In-app Billing API version is less than 3

上面这个错误有很大的迷惑性,直接升级billingclient版本是并没有什么用的,出现这个问题,95%的可能性是因为你的 google 账号的地区是中国,而中国地区的账号是不支持购买的

要避免这个问题,就是换个地区不是中国的账号;或者切换一下账号位置(但是这个切换的条件,没有那么容易)

d. Fatal error during the API action

在于谷歌服务建立连接之后,查询 Sku 列表的时候,可能报这个问题,返回状态码为 6

出现这个问题,一般是两个原因

e. SkuType.INAPP 与 SkuType.SUBS

请注意,在查询 Sku 信息时,传入的 producetId 与 SkuType 请对应起来,对应错了就查不到对应的 sku 信息

f. 商品确认

对于订阅性商品,用户购买了,也付了钱,但是这笔订单并不能表示完成了,这个时候需要确认

对于订阅型商品,下面的billingClient.acknowledgePurchase这一步必不可少

image

对于一次性商品,则是billingClient.consumeAsync,注意他们的区别,不要混用

image

关于上面两个确认的截图中,Listener 内部的实现非必要,一般来讲校验是否购买成功这件事情,推荐放在服务器端来做一个校验,如果完全信赖客户端的返回结果,会遇到什么问题各位小伙伴应该也能想到

g. 无法购买您要买的商品

请确保 google 账号在测试名单中

image

e. 此版本的应用未配置为通过 google play 结算

首先确保,当前测试的包与提交到谷歌控制台的包签名 + 包名 + 版本一致

如果上面没有问题,可以尝试如下操作

image

IV. 其他

1. 一灰灰 Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰 blog

QrCode
上一篇 下一篇

猜你喜欢

热点阅读