天天看点

Android GooglePay 填坑录

1、基础概念坑

2、支付坑

3、发版流程坑

那么如何集成 google 结算库 ?

如何添加测试人员?

如何创建商品?

创建订阅商品

如何上传 alpha 版本?

如何把 alpha 版本转化为生产包?

4、Alpha 测试、Beta 测试 坑

5、代码坑

6、数据报表坑

订单管理

收入情况

7、结算币种

google play跟用户结算

google play跟开发者结算

8、GooglePlay 测试条件

9、邮件通知

最近我接了一个大活,领导要求 app接入google支付,来应对商业化变现困局。

说干就干,经过2周的洗礼,我也算从支付小白变成了支付老手,中间踩了很多坑,记录下来。

<code>在你阅读本文之前,我强烈建议你,不要马上动手撸代码,你要先把本文完完整整一字不漏的读完,先有一个整体框架</code>

google支付分为 <code>内购(inapp)</code> 和 <code>订阅 (subscription)</code>

inapp:内购分为:<code>购买</code>和<code>消耗</code> 两个步骤。如果购买成功,再调用消耗方法,下次可以继续购买。如果购买成功,不调用消耗的方法,那么下次将不能再次购买,返回的错误码为7。

subscription :订阅只有购买,没有消耗。 购买成功也就是订阅成功,订阅成功后会周期性扣费。订阅周期是可以自定义的,可以 周订阅、月订阅,季度订阅、年订阅 。

订阅成功后,用户可以取消订阅,取消成功后,也可以恢复订阅。<code>需要说明的是,订阅成功后,48小时内取消订阅是会退款的,超过 48 小时取消订阅不会退款,允许用户继续享受订阅服务到本次订阅周期结束。</code>

第一个坑,我们来说说支付坑。

和所有的支付功能一样,支付需要绑卡,而且卡必须支持境外支付功能的,信用卡和储蓄卡都行。没有卡的同学可以去招商银行申请全币信用卡(<code>招商VISIA全币信用卡</code>,<code>招商银行mastercard全币信用卡</code>)。

可以去营业厅申请,嫌麻烦的也可以在 招行 <code>掌上生活</code> App 申请 。 我当时不知道就跑去营业厅,到了营业厅发现营业员让我下载 App 操作,我 TM。。。 , 最后顺利申请到 <code>招商VISIA全币信用卡</code> ,申请完成后,差不多 5 天左右就收到卡了。

收到信用卡后,就可以在 GooglePlay 上绑定卡,打开手机上的 GooglePlay 。点击 <code>付款方式</code> -&gt; 点击 <code>添加信用卡或借记卡</code>

Android GooglePay 填坑录

<code>下面我们来说说没有卡怎么办,办理信用卡也需要时间。再一个方面,支付一直扣自己银行卡里面的钱,自己也肉疼。 解决这个问题很简答,就是在 GooglePlay 开发者后台添加自己的 GooglePlay 账号为测试账号。</code>

当你成为测试人员后,你就可以用测试模式支付了,好处就是可以完整的体验支付流程,不会真的扣钱。这种方式特别适合开发和测试,推荐。

我贴一个图,大家看一下两种模式的样子,你对比一下

<code>一定要记得:添加的测试账号是你手机里面 GooglePlay 登陆账号才行。具体怎么添加,这里不讲,下面章节会详细说。</code>

在以往的发版中,我们都是在本地测试,测试成功后,直接在 googlePlay 后台发<code>生产包</code>,加个 20% 灰度量,就 OK了。

接入支付后,发版就不能这么随意了,并不是说你集成了google 结算库,就具有支付功能了,要想app具有支付功能,你需要下面几个步骤:

第一步:集成 google 结算库,添加必要的权限,具体的逻辑代码可以先不着急写。

第二步:添加测试人员

第三部:创建商品

第四步:假设你当前的版本号设为 2.0 ,打包。然后在 googlePlay 开发者后台,上传 alpha 版本。

第五步:上传完 alpha 版本,你的 2.0 apk 就具有支付功能了,就可以编写具体支付代码,测试人员就可以测试了。

第四步:如果 alpha 版本测试成功了,就可以从 alpha 版本 一键转为生产包,等审核通过,用户就可以搜到你的应用了。

如果是 java项目

如果是 Kotlin 项目

添加支付必要的权限

Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录

GooglePlay 要求,任何需要购买的商品都是要在 GooglePlay 开发者后台创建。

Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录

一切顺利的话,就可以等待Google的审核了,通常这个过程会花费2-3个小时不等。审核通过后,在Android 设备Google play store上登陆你的测试者账号,就可以搜索你上传的的app了,之后就可以发起正常的购买流程,不需要绑定银行卡,因为不会真正的付费。

在测试购买的过程中,有可能发现bug了,改了之后需要再上传apk么?不用,直接像开发其他功能一样,直接连着IDE开发调试,购买流程完全不受影响,前提:设备上需要在google play store登陆测试者账号。

Android GooglePay 填坑录

生产包发布以后,等 Google 审核通过,用户就可以搜到带有支付功能的包了。

在 Google Play 的眼里,认为所有的上架包都应该有经过测试环节测试,测试通过后才可以正式发布。

Google Play 把测试环境分为 <code>Alpha 测试</code> 和 <code>Beta 测试</code> 。

<code>Alpha 测试</code> :官方定义为 <code>封闭式测试</code> 。测试范围小,人员少。 一般可以认为是内部测试,即供开发者内部测试人员测试。

<code>Beta 测试</code> :官方定义为 <code>开放式测试</code> 。测试范围广,人员多。普通用户可以参与的测试环境。

Google Play 建议标准的测试流程为:先 <code>Alpha 测试</code> ,然后再 <code>Beta 测试</code> ,最后发布生成包。但是在实际开发过程中,根据具体环境自己选择,比如我在做支付的时候,就只有 <code>Alpha 测试</code> , 测试通过,直接发布。

需要注意的事项:

<code>确保用户可以加入测试</code>:不管哪种测试,测试人员都需要有 googlePlay 账户

<code>选择合适的测试类型</code> :Alpha 版测试的用户群规模不应太大,而且应当用于测试最不稳定的实验性质的应用版本;而 Beta 版测试的用户群规模可以稍大,以便针对即将发布的较稳定应用版本进行测试。

<code>检查您的 APK 版本号</code>:提供给 Alpha 版测试人员使用的 APK 的版本号必须高于您的 Beta 版或正式版,而进行 Beta 版测试的 APK 的版本号必须高于正式版。

有一点需要注意的是,结算库现在是 <code>2.1.0 版本</code> , 我们当做是 <code>2.x</code> 版本。在以前还有 <code>1.x</code> 版本。

官方文档:各个版本库的更新说明

相比 1.x 版本,2.x 版本主要的不同点:

修复潜在的内存泄漏问题

增加"确认购买"概念,每个新购买的商品都需要调用acknowledgePurchase方法来进行确认购买,如果没有进行确认购买,三天后会遭受系统自动退款。

强制删除BillingFlowParams.setSku()方法,改为使用BillingClient.querySkuDetailsAsync()+BillingFlowParams.Builder.setSkuDetails()来配置发起购买的参数。

消耗商品和确认购买配置添加setDeveloperPayload()方法,可以将一个字符串传递给google,然后可以在查询商品记录里面获得该值。(目前没在发起购买里看到这个方法,具体试用场景还不是很明确)

增加"待交易"概念,购买商品回调里面,我们需要通过getPurchaseState方法来判断商品当前的状态。(重要)

其他一些api修改,问题不大。不过一些开发者测试之类的功能应该很有用,但我没有具体去看。

推荐一个开源库,真心好用。这个开源库针对 1.x 版本 、2.x 版本 分别做了对应的封装

1.x 版本

2.x 版本

应用发布以后,怎么看付费情况,怎么看相关的数据报表?其实 GooglePlay 开发者后台提供了相应的数据。

Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录
Android GooglePay 填坑录

币种涉及到两方面:google play如何跟用户结算,google play如何结算给开发者

用户购买时的币种主要由用户的归属地决定,归属地依赖于:

1、绑卡用户由信用卡归属地决定。

2、非绑卡用户,由ip地址决定。

币种为归属地的币种,该归属地如果在配置价格列表中,按配置价格计算。不在列表中,价格则涉及到汇率换算,换算的汇率按用户购买时的汇率确定。

结算给开发者的币种,按开发者银行卡归宿地确定

价格为用户付费价格结合分成比例和汇率计算,如果涉及到汇率换算,则按用户购买时的汇率计算。

当许可测试用户免费测试应用内物品购买,用户安装的APK需满足以下条件:

安装APK包名必须与Google Play Console测试渠道中APK包名相同。

安装APK签名必须与Google Play Console测试渠道中APK签名相同。

安装APK版本号必须与Google Play Console测试渠道中APK版本号相同。

不管你是购买成功、订阅成功、还是取消订阅,你都会通过邮件收到通知。

邮件内容包含:订单编号、订单时间、商品名字、支付价格、结算币种、付款方式

Android GooglePay 填坑录

继续阅读