unity接入google play 支付之结算库篇

接入google支付有两种方式:
1、导入AIDL 文件实现接入,2、使用google play 结算库实现。
我在这里使用的是结算库。看了很久的官方文档,给出了一些通用方法,但是还是一头雾水,概念要搞清楚。
google 应用内商品分两种,1、受管理的商品(又称一次性商品),2、 订阅商品;一次性商品又分两种,1、消耗型商品(可以重复购买),2、非消耗型商品(真正的一次性商品);

这里先贴上官方文档:
https://developer.android.com/google/play/billing/billing_library_overview

通过调用结算库中的API 实现支付接入,来,开始,上图:
在这里插入图片描述
登陆google play console官网,用自己的google 账号登陆,接受开发者协议之后,花费25美元,成为google 开发者。网址在此:
https://play.google.com/apps/publish/

在这里插入图片描述
进来之后,创建自己的应用,刚创建完是草稿状态,后面会有 等待发布状态、已发布状态、已移除状态,
创建应用之后,上图在这里插入图片描述
左边栏中的灰色对号让他变成绿色的,怎么变?把右边带星号的信息全部填完,就变了,填完之后,如果你有用于测试的APK包,先上传一个apk,因为只有上传apk才能申请应用内商品id。
这里apk的讲究也很大,apk必须带签名,签名怎么搞?来来来,转到unity项目中,上图在这里插入图片描述
打开Player Setting,打开Publishing Setting,下面有一个使用keystore文件,如果没有keystore文件,上网址:
https://www.cnblogs.com/aiaitie/p/9525564.html
可以自动生成,这里一定要保证java JDK是OK的,生成之后把keystore password和Alias Password两个密码记住。填入上图的位置。

上传完apk之后,要在后台添加受管理商品,上图在这里插入图片描述
会有人疑问为什么你的应用左边栏和我的不一样吗?你的应用发布之后就和我的一样了。
后台的设置基本就这些了。

导出Gradle包,下面用到Android studio了。
在这里插入图片描述

打开之后,四个划线位置都是需要改变的位置。首先,你得有Google play billing library,下载的话就去Android SDK Manager 下载,在extras目录下,我这里没有下载,因为我找不到,但是也能用,很神奇。

首先在AndroidManifest.xml中添加依赖:

在这里插入图片描述
build.gradle中添加依赖:implementation ‘com.android.billingclient:billing:+’

然后开始上代码:上图:在这里插入图片描述
private BillingClient billingClient;
“billingClient”是用来调用API的唯一对象,相当于支付对象。

billingClient = BillingClient.newBuilder(this).enablePendingPurchases().
setListener(mpurchases).build();//这段是用来连接google play服务的,
“this”是当前页面,Activity类型的参数;
“mpurchases”是一个PurchasesUpdatedListener的监听器,监听的实现都在SetLienter()函数中,后面贴代码。

billingClient.startConnection(mBillingClientStateListener);//开启支付
在这里插入图片描述
这里两个分支:
1、和google play服务连接成功
2、连接断开
说明:该监听实现在SetLintener中
在这里插入图片描述

billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() //该函数是查询函数

“Pay”是供unity调用的函数,当unity中点击购买按钮,调用该函数,实现查询商品和购买。
billingClient.launchBillingFlow(mActivity, flowParams);//该函数弹出购买界面
“mActivity”是当前页面,
“flowParams”是商品信息流,别管是什么意思,就是存储商品信息的。

弹出页面之后,上图在这里插入图片描述
通过之前绑定的监听,会执行到onPurchasesUpdated,这里有三个分支:
1、用户付款成功
2、用户取消购买
3、发生其他情况

当用户付款之后,billingResult.getResponseCode()返回的值如果是BillingClient.BillingResponseCode.OK,说明付款成功,
接下来再走消耗分支,这里说明一下消耗和消耗的区别:
1、如果是消耗商品,也就是可以重复购买的商品,像游戏中的金币包,钻石包,就要调用消耗函数,走for循环,走handlPurchases(),因为只有执行消耗之后,才能重复购买。
2、如果是非消耗函数,像游戏中购买关卡之类的,买一次同一个账号能够终身开启的,就不走消耗,直接走确认购买。
贴上handlPurchases(),上图在这里插入图片描述
billingClient.consumeAsync(params, new ConsumeResponseListener() //该函数为消耗函数,如果走到if分支,说明该商品消耗成功,可以重复购买
“params”这个参数是ConsumeParams类型,需要设置两个值,1、token;2、payload,这两个参数从purchases中获取即可。

消耗完成之后返回上面确认购买函数,只有执行确认购买之后,商品才会真正的被后台确认为已购买,如果没有执行确认购买函数
( billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() )
,商品会被后台撤销,并返回给用户。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值