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

2023-10-08 08:30

本文主要是介绍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() )
,商品会被后台撤销,并返回给用户。

这篇关于unity接入google play 支付之结算库篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/164010

相关文章

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException异常

用Gson解析json数据的时候,遇到一个异常,如下图: 这个异常很简单,就是你的封装json数据的javabean没有写对,你仔细查看一下javabean就可以了 比如:我的解析的代码是             Gson gson = new Gson();             ForgetJson rb = gson.fromJson(agResult.mstrJson, For

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您

Google Earth Engine——高程数据入门和山体阴影和坡度的使用

目录 山体阴影和坡度 对图像应用计算 应用空间减速器 高程数据 通过从“重置”按钮下拉菜单中选择“清除脚本”来清除脚本。搜索“elevation”并单击 SRTM Digital Elevation Data 30m 结果以显示数据集描述。单击导入,将变量移动到脚本顶部的导入部分。将默认变量名称“image”重命名为“srtm”。使用脚本将图像对象添加到地图: Map

The import com.google cannot be resolved

The import com.google cannot be resolved,报错: 第一感觉就是缺少jar包,因为项目用maven管理,所以在pom.xml中添加: <dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <version>2.3.1</ver

Unity Adressables 使用说明(六)加载(Load) Addressable Assets

【概述】Load Addressable Assets Addressables类提供了加载 Addressable assets 的方法。你可以一次加载一个资源或批量加载资源。为了识别要加载的资源,你需要向加载方法传递一个键或键列表。键可以是以下对象之一: Address:包含你分配给资源的地址的字符串。Label:包含分配给一个或多个资源的标签的字符串。AssetReference Obj