Google基础服务,playservices

目录

一、官方文档

二、订阅流程简要介绍

三. APP应用开始订阅

四.总结

一、官方文档谷歌play支付系统简介https://developer.Android.Google.cn/Google/play/billing

看了上面的官方文档介绍,还很模糊,可以继续看视频介绍

谷歌订阅进程https://medium.com/Android developers/subscriptions-101-for-Android-apps-b 7005 a 7e 93 a 6以上两个链接中的

二、订阅流程简要介绍参与订阅的因素。 主要有谷歌商店服务器、你的服务器、你的手机谷歌商店、你的APP四个

可以分为Android层、服务器层:

也可以分为谷歌播放层、开发层:

开发者负责的是右边的哪一层?

那么,这些要素怎么通信?

我们和服务器的通信是我们自己知道的。 谷歌商店和谷歌服务器的通信我们不需要知道。

谷歌与APP商店的通信是谷歌提供的依赖库:

def billing _ version=’4.0.0′ implementation ‘ com.Android.billing client 3360 billing 3360 $ billing _ version ‘ in 在0,可以通过此从属库调用PAI来完成一些列购物操作。

然后,您的服务器与Google服务器之间的通信通过Google Play Deveploer API和Google Clound Pub/Sub进行,这一部分交给服务器端。

三、APP开始订阅我们从APP开始订阅的流程主要有以下四个。

通过调用startConnection (成功连接到Google商店后,通过调用queryPurchase查询当前订阅信息来模拟用户订阅, 调用launchBillingFlow )启动订阅请求(onPurchasesUpdated ) )可以在回调中检索请求结果,成功后检索purchase token

purchase token(购买证书)表示用户对您的APP应用程序提供的商品或服务拥有的有效权利

order id(订单ID )是用户与谷歌之间的交易收据

接下来,我们的APP应用程序将token传递给服务器。 服务器拿着purchase token去和谷歌服务器进行验证。 验证结果可能成功或失败。 (成功后,服务器将保留当前的purchase token,并通知APP应用程序订阅成功或失败。

查看订阅代码:

//1 .谷歌商店billing client.start connection (object : billingclientstatelistener ) overridefunonbillingsetupfinished ) ‘ onbillingsetupfinished : code=$ { P0.response code } ) log.I ) tag,’ onbillingsetupfinished : message=$ { P0

} override fun onBillingServiceDisconnected() { Log.i(TAG, “onBillingServiceDisconnected: “) disConnect() }})//2.查询订阅商品详情private fun querySkuDetails() { val skuList = ArrayList<String>() skuList.add(“sub_001”) skuList.add(“sub_002”) val params = SkuDetailsParams.newBuilder() //注意这里是SkuType.SUBS,表示查询订阅,SkuType.INAPP是应用内商品的查询 .setType(SkuType.SUBS) .setSkusList(skuList) .build() billingClient.querySkuDetailsAsync(params) { p0, p1 -> Log.i(TAG, “querySkuDetails2: code = ${p0.responseCode}”) Log.i(TAG, “querySkuDetails2: msg = ${p0.debugMessage}”) Log.i(TAG, “querySkuDetails2: data = $p1”) if (p0.responseCode == BillingResponseCode.OK) { if (p1 != null && p1.size > 0) { Log.i(TAG, “querySkuDetails: $p1”) skuDetails = p1[0] showGoods() } else { toast(“查无商品信息”) } } else { toast(“查询商品失败”) } }}//3.发起订阅private fun launchBillingFlow(skuDetails: SkuDetails) { val flowParams = BillingFlowParams.newBuilder() .setSkuDetails(skuDetails) .build() var responseCode = billingClient.launchBillingFlow(this, flowParams).responseCode; Log.i(TAG, “launchBillingFlow: responseCode = $responseCode”)}//4.监听购买回调//Google Play 会调用 onPurchasesUpdated(),以将购买操作的结果传送给实现 //PurchasesUpdatedListener 接口的监听器private val purchasesUpdatedListener = PurchasesUpdatedListener { billingResult, mutableList -> Log.i(TAG, “onPurchasesUpdated, code = ${billingResult.responseCode}”) Log.i(TAG, “onPurchasesUpdated, msg = ${billingResult.debugMessage}”) Log.i(TAG, “onPurchasesUpdated, data = $mutableList”) when (billingResult.responseCode) { BillingResponseCode.OK -> { if (mutableList != null) { //获取purchase token和order id val purchaseToken = mutableList[0].purchaseToken val orderId = mutableList[0].orderId Log.i(TAG, “oldPurchaseToken : $oldPurchaseToken”) } else { toast(“xxxxx”) } } else -> { toast(“xxx”) } }} 四、总结

介绍了google订阅服务器的四个元素、订阅原理,和如何在应用中发起订阅的部分代码。相信看完会对订阅流程有个完成的理解。

接下来的文章会介绍快三稳赚10大技巧 } else { toast(“查无商品信息”) } } else { toast(“查询商品失败”) } }}//3.发起订阅private fun launchBillingFlow(skuDetails: SkuDetails) { val flowParams = BillingFlowParams.newBuilder() .setSkuDetails(skuDetails) .build() var responseCode = billingClient.launchBillingFlow(this, flowParams).responseCode; Log.i(TAG, “launchBillingFlow: responseCode = $responseCode”)}//4.监听购买回调//Google Play 会调用 onPurchasesUpdated(),以将购买操作的结果传送给实现 //PurchasesUpdatedListener 接口的监听器private val purchasesUpdatedListener = PurchasesUpdatedListener { billingResult, mutableList -> Log.i(TAG, “onPurchasesUpdated, code = ${billingResult.responseCode}”) Log.i(TAG, “onPurchasesUpdated, msg = ${billingResult.debugMessage}”) Log.i(TAG, “onPurchasesUpdated, data = $mutableList”) when (billingResult.responseCode) { BillingResponseCode.OK -> { if (mutableList != null) { //获取purchase token和order id val purchaseToken = mutableList[0].purchaseToken val orderId = mutableList[0].orderId Log.i(TAG, “oldPurchaseToken : $oldPurchaseToken”) } else { toast(“xxxxx”) } } else -> { toast(“xxx”) } }} 四、总结

介绍了google订阅服务器的四个元素、订阅原理,和如何在应用中发起订阅的部分代码。相信看完会对订阅流程有个完成的理解。

接下来的文章会介绍:

开发者实时通知订阅升级、降级宽限期账号保留功能处理被取消的订阅订阅延迟结算

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注