转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/106197857
本文出自【赵彦军的博客】
最近我接了一个大活,领导要求 app接入google支付,来应对商业化变现困局。
说干就干,经过2周的洗礼,我也算从支付小白变成了支付老手,中间踩了很多坑,记录下来。
在你阅读本文之前,我强烈建议你,不要马上动手撸代码,你要先把本文完完整整一字不漏的读完,先有一个整体框架
google支付分为 内购(inapp)
和 订阅 (subscription)
inapp:内购分为:购买
和消耗
两个步骤。如果购买成功,再调用消耗方法,下次可以继续购买。如果购买成功,不调用消耗的方法,那么下次将不能再次购买,返回的错误码为7。
subscription :订阅只有购买,没有消耗。 购买成功也就是订阅成功,订阅成功后会周期性扣费。订阅周期是可以自定义的,可以 周订阅、月订阅,季度订阅、年订阅 。
订阅成功后,用户可以取消订阅,取消成功后,也可以恢复订阅。需要说明的是,订阅成功后,48小时内取消订阅是会退款的,超过 48 小时取消订阅不会退款,允许用户继续享受订阅服务到本次订阅周期结束。
第一个坑,我们来说说支付坑。
和所有的支付功能一样,支付需要绑卡,而且卡必须支持境外支付功能的,信用卡和储蓄卡都行。没有卡的同学可以去招商银行申请全币信用卡(招商VISIA全币信用卡
,招商银行mastercard全币信用卡
)。
可以去营业厅申请,嫌麻烦的也可以在 招行 掌上生活
App 申请 。 我当时不知道就跑去营业厅,到了营业厅发现营业员让我下载 App 操作,我 TM。。。 , 最后顺利申请到 招商VISIA全币信用卡
,申请完成后,差不多 5 天左右就收到卡了。
收到信用卡后,就可以在 GooglePlay 上绑定卡,打开手机上的 GooglePlay 。点击 付款方式
-> 点击 添加信用卡或借记卡
下面我们来说说没有卡怎么办,办理信用卡也需要时间。再一个方面,支付一直扣自己银行卡里面的钱,自己也肉疼。 解决这个问题很简答,就是在 GooglePlay 开发者后台添加自己的 GooglePlay 账号为测试账号。
当你成为测试人员后,你就可以用测试模式支付了,好处就是可以完整的体验支付流程,不会真的扣钱。这种方式特别适合开发和测试,推荐。
我贴一个图,大家看一下两种模式的样子,你对比一下
一定要记得:添加的测试账号是你手机里面 GooglePlay 登陆账号才行。具体怎么添加,这里不讲,下面章节会详细说。
在以往的发版中,我们都是在本地测试,测试成功后,直接在 googlePlay 后台发生产包
,加个 20% 灰度量,就 OK了。
接入支付后,发版就不能这么随意了,并不是说你集成了google 结算库,就具有支付功能了,要想app具有支付功能,你需要下面几个步骤:
第一步:集成 google 结算库,添加必要的权限,具体的逻辑代码可以先不着急写。
第二步:添加测试人员
第三部:创建商品
第四步:假设你当前的版本号设为 2.0 ,打包。然后在 googlePlay 开发者后台,上传 alpha 版本。
第五步:上传完 alpha 版本,你的 2.0 apk 就具有支付功能了,就可以编写具体支付代码,测试人员就可以测试了。
第四步:如果 alpha 版本测试成功了,就可以从 alpha 版本 一键转为生产包,等审核通过,用户就可以搜到你的应用了。
google 支付依赖包,官方地址:google结算库使用
如果是 java项目
implementation 'com.android.billingclient:billing:2.1.0'
如果是 Kotlin 项目
implementation 'com.android.billingclient:billing-ktx:2.1.0'
添加支付必要的权限
GooglePlay 要求,任何需要购买的商品都是要在 GooglePlay 开发者后台创建。
一切顺利的话,就可以等待Google的审核了,通常这个过程会花费2-3个小时不等。审核通过后,在Android 设备Google play store上登陆你的测试者账号,就可以搜索你上传的的app了,之后就可以发起正常的购买流程,不需要绑定银行卡,因为不会真正的付费。
在测试购买的过程中,有可能发现bug了,改了之后需要再上传apk么?不用,直接像开发其他功能一样,直接连着IDE开发调试,购买流程完全不受影响,前提:设备上需要在google play store登陆测试者账号。
生产包发布以后,等 Google 审核通过,用户就可以搜到带有支付功能的包了。
官方链接:https://developer.android.google.cn/distribute/best-practices/launch/beta-tests.html?hl=zh-cn
在 Google Play 的眼里,认为所有的上架包都应该有经过测试环节测试,测试通过后才可以正式发布。
Google Play 把测试环境分为 Alpha 测试
和 Beta 测试
。
Alpha 测试
:官方定义为 封闭式测试
。测试范围小,人员少。 一般可以认为是内部测试,即供开发者内部测试人员测试。
Beta 测试
:官方定义为 开放式测试
。测试范围广,人员多。普通用户可以参与的测试环境。
Google Play 建议标准的测试流程为:先 Alpha 测试
,然后再 Beta 测试
,最后发布生成包。但是在实际开发过程中,根据具体环境自己选择,比如我在做支付的时候,就只有 Alpha 测试
, 测试通过,直接发布。
需要注意的事项:
确保用户可以加入测试
:不管哪种测试,测试人员都需要有 googlePlay 账户选择合适的测试类型
:Alpha 版测试的用户群规模不应太大,而且应当用于测试最不稳定的实验性质的应用版本;而 Beta 版测试的用户群规模可以稍大,以便针对即将发布的较稳定应用版本进行测试。检查您的 APK 版本号
:提供给 Alpha 版测试人员使用的 APK 的版本号必须高于您的 Beta 版或正式版,而进行 Beta 版测试的 APK 的版本号必须高于正式版。官方文档:https://developer.android.com/google/play/billing/billing_library_overview#kotlin
有一点需要注意的是,结算库现在是 2.1.0 版本
, 我们当做是 2.x
版本。在以前还有 1.x
版本。
官方文档:各个版本库的更新说明
相比 1.x 版本,2.x 版本主要的不同点:
推荐一个开源库,真心好用。这个开源库针对 1.x 版本 、2.x 版本 分别做了对应的封装,可以参考一下;
1.x 版本:https://github.com/TJHello/GoogleBilling
2.x 版本:https://github.com/TJHello/GoogleBilling/tree/2.0/
应用发布以后,怎么看付费情况,怎么看相关的数据报表?其实 GooglePlay 开发者后台提供了相应的数据。
币种涉及到两方面:google play如何跟用户结算,google play如何结算给开发者
用户购买时的币种主要由用户的归属地决定,归属地依赖于:
1、绑卡用户由信用卡归属地决定。
2、非绑卡用户,由ip地址决定。
币种为归属地的币种,该归属地如果在配置价格列表中,按配置价格计算。不在列表中,价格则涉及到汇率换算,换算的汇率按用户购买时的汇率确定。
结算给开发者的币种,按开发者银行卡归宿地确定
价格为用户付费价格结合分成比例和汇率计算,如果涉及到汇率换算,则按用户购买时的汇率计算。
当许可测试用户免费测试应用内物品购买,用户安装的APK需满足以下条件:
安装APK包名必须与Google Play Console测试渠道中APK包名相同。
安装APK签名必须与Google Play Console测试渠道中APK签名相同。
安装APK版本号必须与Google Play Console测试渠道中APK版本号相同。
不管你是购买成功、订阅成功、还是取消订阅,你都会通过邮件收到通知。
邮件内容包含:订单编号、订单时间、商品名字、支付价格、结算币种、付款方式