Android GooglePay 填坑录
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/106197857
本文出自【赵彦军的博客】
目录
- 1、基础概念坑
- 2、支付坑
- 3、发版流程坑
- 那么如何集成 google 结算库 ?
- 如何添加测试人员?
- 如何创建商品?
- 创建订阅商品
- 如何上传 alpha 版本?
- 如何把 alpha 版本转化为生产包?
- 4、Alpha 测试、Beta 测试 坑
- 5、代码坑
- 6、数据报表坑
- 订单管理
- 收入情况
- 7、结算币种
- google play跟用户结算
- google play跟开发者结算
- 8、GooglePlay 测试条件
- 9、邮件通知
最近我接了一个大活,领导要求 app接入google支付,来应对商业化变现困局。
说干就干,经过2周的洗礼,我也算从支付小白变成了支付老手,中间踩了很多坑,记录下来。
在你阅读本文之前,我强烈建议你,不要马上动手撸代码,你要先把本文完完整整一字不漏的读完,先有一个整体框架
1、基础概念坑
google支付分为 内购(inapp)
和 订阅 (subscription)
inapp:内购分为:购买
和消耗
两个步骤。如果购买成功,再调用消耗方法,下次可以继续购买。如果购买成功,不调用消耗的方法,那么下次将不能再次购买,返回的错误码为7。
subscription :订阅只有购买,没有消耗。 购买成功也就是订阅成功,订阅成功后会周期性扣费。订阅周期是可以自定义的,可以 周订阅、月订阅,季度订阅、年订阅 。
订阅成功后,用户可以取消订阅,取消成功后,也可以恢复订阅。需要说明的是,订阅成功后,48小时内取消订阅是会退款的,超过 48 小时取消订阅不会退款,允许用户继续享受订阅服务到本次订阅周期结束。
2、支付坑
第一个坑,我们来说说支付坑。
和所有的支付功能一样,支付需要绑卡,而且卡必须支持境外支付功能的,信用卡和储蓄卡都行。没有卡的同学可以去招商银行申请全币信用卡(招商VISIA全币信用卡
,招商银行mastercard全币信用卡
)。
可以去营业厅申请,嫌麻烦的也可以在 招行 掌上生活
App 申请 。 我当时不知道就跑去营业厅,到了营业厅发现营业员让我下载 App 操作,我 TM。。。 , 最后顺利申请到 招商VISIA全币信用卡
,申请完成后,差不多 5 天左右就收到卡了。
收到信用卡后,就可以在 GooglePlay 上绑定卡,打开手机上的 GooglePlay 。点击 付款方式
-> 点击 添加信用卡或借记卡
下面我们来说说没有卡怎么办,办理信用卡也需要时间。再一个方面,支付一直扣自己银行卡里面的钱,自己也肉疼。 解决这个问题很简答,就是在 GooglePlay 开发者后台添加自己的 GooglePlay 账号为测试账号。
当你成为测试人员后,你就可以用测试模式支付了,好处就是可以完整的体验支付流程,不会真的扣钱。这种方式特别适合开发和测试,推荐。
我贴一个图,大家看一下两种模式的样子,你对比一下
一定要记得:添加的测试账号是你手机里面 GooglePlay 登陆账号才行。具体怎么添加,这里不讲,下面章节会详细说。
3、发版流程坑
在以往的发版中,我们都是在本地测试,测试成功后,直接在 googlePlay 后台发生产包
,加个 20% 灰度量,就 OK了。
接入支付后,发版就不能这么随意了,并不是说你集成了google 结算库,就具有支付功能了,要想app具有支付功能,你需要下面几个步骤:
第一步:集成 google 结算库,添加必要的权限,具体的逻辑代码可以先不着急写。
第二步:添加测试人员
第三部:创建商品
第四步:假设你当前的版本号设为 2.0 ,打包。然后在 googlePlay 开发者后台,上传 alpha 版本。
第五步:上传完 alpha 版本,你的 2.0 apk 就具有支付功能了,就可以编写具体支付代码,测试人员就可以测试了。
第四步:如果 alpha 版本测试成功了,就可以从 alpha 版本 一键转为生产包,等审核通过,用户就可以搜到你的应用了。
那么如何集成 google 结算库 ?
google 支付依赖包,官方地址:google结算库使用
如果是 java项目
implementation 'com.android.billingclient:billing:2.1.0'
如果是 Kotlin 项目
implementation 'com.android.billingclient:billing-ktx:2.1.0'
添加支付必要的权限
<!-- googlePay -->
<uses-permission android:name="com.android.vending.BILLING" />
如何添加测试人员?
如何创建商品?
GooglePlay 要求,任何需要购买的商品都是要在 GooglePlay 开发者后台创建。
创建订阅商品
如何上传 alpha 版本?
一切顺利的话,就可以等待Google的审核了,通常这个过程会花费2-3个小时不等。审核通过后,在Android 设备Google play store上登陆你的测试者账号,就可以搜索你上传的的app了,之后就可以发起正常的购买流程,不需要绑定银行卡,因为不会真正的付费。
在测试购买的过程中,有可能发现bug了,改了之后需要再上传apk么?不用,直接像开发其他功能一样,直接连着IDE开发调试,购买流程完全不受影响,前提:设备上需要在google play store登陆测试者账号。
如何把 alpha 版本转化为生产包?
生产包发布以后,等 Google 审核通过,用户就可以搜到带有支付功能的包了。
4、Alpha 测试、Beta 测试 坑
官方链接: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 的版本号必须高于正式版。
5、代码坑
官方文档:https://developer.android.com/google/play/billing/billing_library_overview#kotlin
有一点需要注意的是,结算库现在是 2.1.0 版本
, 我们当做是 2.x
版本。在以前还有 1.x
版本。
官方文档:各个版本库的更新说明
相比 1.x 版本,2.x 版本主要的不同点:
- 修复潜在的内存泄漏问题
- 增加"确认购买"概念,每个新购买的商品都需要调用acknowledgePurchase方法来进行确认购买,如果没有进行确认购买,三天后会遭受系统自动退款。
- 强制删除BillingFlowParams.setSku()方法,改为使用BillingClient.querySkuDetailsAsync()+BillingFlowParams.Builder.setSkuDetails()来配置发起购买的参数。
- 消耗商品和确认购买配置添加setDeveloperPayload()方法,可以将一个字符串传递给google,然后可以在查询商品记录里面获得该值。(目前没在发起购买里看到这个方法,具体试用场景还不是很明确)
- 增加"待交易"概念,购买商品回调里面,我们需要通过getPurchaseState方法来判断商品当前的状态。(重要)
- 其他一些api修改,问题不大。不过一些开发者测试之类的功能应该很有用,但我没有具体去看。
推荐一个开源库,真心好用。这个开源库针对 1.x 版本 、2.x 版本 分别做了对应的封装,可以参考一下;
1.x 版本:https://github.com/TJHello/GoogleBilling
2.x 版本:https://github.com/TJHello/GoogleBilling/tree/2.0/
6、数据报表坑
应用发布以后,怎么看付费情况,怎么看相关的数据报表?其实 GooglePlay 开发者后台提供了相应的数据。
订单管理
收入情况
7、结算币种
币种涉及到两方面:google play如何跟用户结算,google play如何结算给开发者
google play跟用户结算
用户购买时的币种主要由用户的归属地决定,归属地依赖于:
1、绑卡用户由信用卡归属地决定。
2、非绑卡用户,由ip地址决定。
币种为归属地的币种,该归属地如果在配置价格列表中,按配置价格计算。不在列表中,价格则涉及到汇率换算,换算的汇率按用户购买时的汇率确定。
google play跟开发者结算
结算给开发者的币种,按开发者银行卡归宿地确定
价格为用户付费价格结合分成比例和汇率计算,如果涉及到汇率换算,则按用户购买时的汇率计算。
8、GooglePlay 测试条件
当许可测试用户免费测试应用内物品购买,用户安装的APK需满足以下条件:
安装APK包名必须与Google Play Console测试渠道中APK包名相同。
安装APK签名必须与Google Play Console测试渠道中APK签名相同。
安装APK版本号必须与Google Play Console测试渠道中APK版本号相同。
9、邮件通知
不管你是购买成功、订阅成功、还是取消订阅,你都会通过邮件收到通知。
邮件内容包含:订单编号、订单时间、商品名字、支付价格、结算币种、付款方式
Android GooglePay 填坑录相关推荐
- Android Studio 填坑指南
前几天发布了一篇名为<Android Studio 安装.配置及第一个程序演示>的博文,有不少童鞋都认真阅读过并照步骤一步一步操作了一遍,有滴如期成功地装好了,然鹅有滴反映说这不对呀,为森 ...
- 用MinGW编译AWTK填坑录
AWTK 全称为 Toolkit AnyWhere,是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架.旨在为用户提供一个功能强大.高效可靠.简单易用.可轻松做出炫酷效果的 GUI 引擎,并 ...
- Android Tips - 填坑手册
转载自汤奇V分享的Android-Tips 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的人们的帮助下,我遇到的坑都顺利地被填平了. 为了便于日后遇到同样的问题 ...
- Eclipse android 项目转android studio填坑之旅
以前公司的老项目,是使用eclipse进行开发的,虽然android studio出来了很久,但为了避免迁移会有一些问题,一直忍着没改,但最近谷歌公司上架有要求,要求android的项目要用andro ...
- Android TV填坑之旅(一)--browsefragment并发数据遇到的坑。
最近一段时间回来修改Android tv的相关故障. 这里记录一下Android tv的一些坑. 1.browsefragment的自动焦点是第一个出现的row. 注意是第一个出现,如果是并发数据,第 ...
- 【解决方案】Android开发填坑之RecyclerView刷新闪烁
问题描述 RecyclerView数据刷新闪烁. 问题原因分析 RecyclerView有一个RecyclerViewPool用来缓存已创建的item,不手动创建RecyclerViewPool时,系 ...
- 【android录屏填坑】录屏报错start fail,stop fail
先写个标题,有时间了填充内容. 时隔N天,终于忙完了.内容填充中-- 前言 为什么要写这么一篇文章.因为我最近做录屏实在是被坑哭了.不是遇到start fail报错,就是遇到stop fail报错,这 ...
- 开发工具总结(4)之Android Studio3.0填坑指南
序言 Android Studio 3.0 上篇讲了: 全面总结Android Studio2.X的填坑指南 这篇讲一下AS3.0的坑.. 作为这个世界上走在最前沿的生物"猿",怎 ...
- Android Studio 插件开发详解四:填坑
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...
最新文章
- 利用Event和MapFile进程共享信息
- C#数据导出Excel详细介绍
- Runner站立会议08
- python比较excel表格内容并提取_利用python提取多张excel表数据并汇总到同一张新表中...
- leetcode 1005. K 次取反后最大化的数组和 思考分析
- 编辑器推荐:Visual Studio Code(VSCode/VSC)
- Id vs Instancetype
- 你给我这么多报表,让我如何是好
- matlab作图图例,为scatter3 plot创建图例(Matlab)
- 欢迎加入互联网架构师群
- java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
- 计算机如何做材料的应力应变曲线,常用材料应力应变曲线.xlsx
- 简明python教程最新版价格_《简明Python教程》【价格 目录 书评 正版】_中国图书网...
- 查看局域网所有ip地址
- 浏览器不能调用JAVA打印_网页调用IE浏览器的打印功能
- 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告...
- 海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案
- org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
- 云栖大会 mysql_2019云栖大会 数据库
- 【东大自控笔记9】一文掌握根轨迹法
热门文章
- css列表格式属性,css list-style-type属性笔记
- onvif 客户端 linux,Linux下onvif客户端关于ipc摄像头的搜索
- 360浏览器 ajax取缓存,Angularjs在360兼容模式下取数据缓存问题的解决办法
- linux里的挂载错误无法开机怎么办,Linux基础知识 - 开机挂载错误
- 九、Docker快速搭建Elastic Stack(上篇)
- 浦发银行招聘计算机类笔试题,2019浦发银行招聘计算机模拟试题及答案
- 多种数据形式下智能问答的应用解读
- 6个月达不到25.6万年薪AI工程师,进不了大厂全额退款
- CVer入门必备:计算机视觉的深度学习实践
- Training RNNs as Fast as CNNs