转载请标明出处: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 填坑录相关推荐

  1. Android Studio 填坑指南

    前几天发布了一篇名为<Android Studio 安装.配置及第一个程序演示>的博文,有不少童鞋都认真阅读过并照步骤一步一步操作了一遍,有滴如期成功地装好了,然鹅有滴反映说这不对呀,为森 ...

  2. 用MinGW编译AWTK填坑录

    AWTK 全称为 Toolkit AnyWhere,是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架.旨在为用户提供一个功能强大.高效可靠.简单易用.可轻松做出炫酷效果的 GUI 引擎,并 ...

  3. Android Tips - 填坑手册

    转载自汤奇V分享的Android-Tips 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的人们的帮助下,我遇到的坑都顺利地被填平了. 为了便于日后遇到同样的问题 ...

  4. Eclipse android 项目转android studio填坑之旅

    以前公司的老项目,是使用eclipse进行开发的,虽然android studio出来了很久,但为了避免迁移会有一些问题,一直忍着没改,但最近谷歌公司上架有要求,要求android的项目要用andro ...

  5. Android TV填坑之旅(一)--browsefragment并发数据遇到的坑。

    最近一段时间回来修改Android tv的相关故障. 这里记录一下Android tv的一些坑. 1.browsefragment的自动焦点是第一个出现的row. 注意是第一个出现,如果是并发数据,第 ...

  6. 【解决方案】Android开发填坑之RecyclerView刷新闪烁

    问题描述 RecyclerView数据刷新闪烁. 问题原因分析 RecyclerView有一个RecyclerViewPool用来缓存已创建的item,不手动创建RecyclerViewPool时,系 ...

  7. 【android录屏填坑】录屏报错start fail,stop fail

    先写个标题,有时间了填充内容. 时隔N天,终于忙完了.内容填充中-- 前言 为什么要写这么一篇文章.因为我最近做录屏实在是被坑哭了.不是遇到start fail报错,就是遇到stop fail报错,这 ...

  8. 开发工具总结(4)之Android Studio3.0填坑指南

    序言 Android Studio 3.0 上篇讲了: 全面总结Android Studio2.X的填坑指南 这篇讲一下AS3.0的坑.. 作为这个世界上走在最前沿的生物"猿",怎 ...

  9. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

最新文章

  1. 利用Event和MapFile进程共享信息
  2. C#数据导出Excel详细介绍
  3. Runner站立会议08
  4. python比较excel表格内容并提取_利用python提取多张excel表数据并汇总到同一张新表中...
  5. leetcode 1005. K 次取反后最大化的数组和 思考分析
  6. 编辑器推荐:Visual Studio Code(VSCode/VSC)
  7. Id vs Instancetype
  8. 你给我这么多报表,让我如何是好
  9. matlab作图图例,为scatter3 plot创建图例(Matlab)
  10. 欢迎加入互联网架构师群
  11. java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
  12. 计算机如何做材料的应力应变曲线,常用材料应力应变曲线.xlsx
  13. 简明python教程最新版价格_《简明Python教程》【价格 目录 书评 正版】_中国图书网...
  14. 查看局域网所有ip地址
  15. 浏览器不能调用JAVA打印_网页调用IE浏览器的打印功能
  16. 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告...
  17. 海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案
  18. org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
  19. 云栖大会 mysql_2019云栖大会 数据库
  20. 【东大自控笔记9】一文掌握根轨迹法

热门文章

  1. css列表格式属性,css list-style-type属性笔记
  2. onvif 客户端 linux,Linux下onvif客户端关于ipc摄像头的搜索
  3. 360浏览器 ajax取缓存,Angularjs在360兼容模式下取数据缓存问题的解决办法
  4. linux里的挂载错误无法开机怎么办,Linux基础知识 - 开机挂载错误
  5. 九、Docker快速搭建Elastic Stack(上篇)
  6. 浦发银行招聘计算机类笔试题,2019浦发银行招聘计算机模拟试题及答案
  7. 多种数据形式下智能问答的应用解读
  8. 6个月达不到25.6万年薪AI工程师,进不了大厂全额退款
  9. CVer入门必备:计算机视觉的深度学习实践
  10. Training RNNs as Fast as CNNs