首页 > 代码库 > Unity接入谷歌支付

Unity接入谷歌支付

文章理由

前段时间负责Unity接入Google内购功能,一开始研究别人的技术博客时发现,他们的文章都有些年头了,有些细节的地方已经不像n年前那样了,技术永远是需要更新的,而这篇就作为2016年末的最后一篇接入谷歌内购文章写给需要的人

准备工作

1.将自己的谷歌账号,支付25美元,成为谷歌开发者账号,开发者信息随意填写(有的博客写着必须填写美国,其实我就填写的中国)
2.一台安装有谷歌四件套的安卓手机以及VPN
3.一个用于测试的Unity小demo,只需要做好支付按钮就好了

谷歌开发者后台的设置

1.先创建一个新应用
技术分享
2.以下是发布应用前必填的信息(填写完整所有带*号的选项,左上角四处灰色对勾全部变为绿色才能够发布),附上需要填写信息的全部截图
技术分享
技术分享
技术分享
技术分享
技术分享
技术分享
技术分享
3.应用内商品填写
技术分享
与其他的博客不同,到了我写博客这个时期,只剩下受“管理的商品”和“订阅”这两种(取消了不受管理的商品),“受管理的商品“是谷歌帮你记录购买状态,例如一次性花钱购买所有开放关卡,玩家如果重装游戏,还能不再次花钱找回原来购买的这些关卡。可是有人会问,如果取消了“不受管理的商品”,那我游戏中可以无限购买的礼包以及金币钻石礼包怎么办,别急,后面的代码中会提到这个。
技术分享
创建完毕之后的界面
技术分享

Unity方面

因为支付的代码需要去安卓中写,所以在这里将Unity项目打包成为安卓项目,然后进行二次开发。首先是安卓和Unity的通信,如果不会的话可以去看看雨松的博客。下图buykey这个参数,是之前创建应用内商品得到的ID--(jb_1)和(lb_1),这个参数需要传到安卓中做处理。
技术分享
下图message这个参数是安卓传回来的消息,如有需要,可以在Unity中做后续处理
技术分享
接下来需要将Unity项目打包为安卓项目,先填写好相应的包名和签名以及固定必须修改的部分后开始打包为安卓项目
技术分享
技术分享

在Android中加入支付代码

我使用的是Eclpise进行的二次开发,你要是使用AndroidStudio也没有问题,代码的思路都是差不多的,配置的方式不同而已。首先在Eclipse中创建一个空项目(请注意图片上的标注)
技术分享
技术分享
之后的一路Next就可以,接下来将刚才Unity导出的安卓工程里面的文件夹直接拖动到新建的工程下,并选择全部覆盖,我们的工程内容将被替换为Unity内容:
技术分享
技术分享
Android工程设置完成。接下来是最关键的接入谷歌内购了,首先我们需要在SDK Manager中下载内购sdk。这里面是他的官方demo,介绍了如何在安卓工程中接入内购。将截图中需要的类放到我们的安卓项目,拖进来可能会报引入路径错,注意修改成符合你们自己工程的正常路径
技术分享
技术分享
技术分享
技术分享
在AndroidMainfest文件中添加内购权限
技术分享
接着我们在java代码中写入被Unity调用以及向Unity回传消息的代码
技术分享
技术分享
内购方面,必须要需要写入base64 ras公共密钥。在我们新创建的应用列表中找到“服务和API”,里面有公共密钥
技术分享
技术分享
接下来的几个函数是我们内购必须用到的
1.调用内购函数之后,执行“购买结果处理函数”,因为我们的商品是受管理商品,只允许购买一次,如果想再次购买,必须先进行消耗,只有消耗成功,谷歌才允许继续购买。如果您有金币或礼包等可无限购买商品,可以在每次购买成功之后立刻执行消耗函数即可。
技术分享
2.此图为购买成功之后,执行“消耗结果处理函数”,例如判断用户消耗成功,则执行相应的事件
技术分享
3.下图函数为程序初始化会自动调用的函数,可以将您希望执行消耗的商品列表添加到里面,如果是一次性购买商品,则不要添加到列表中
技术分享
4.下图函数必需添加到你的代码中(仿照demo)
技术分享

发布到谷歌

接下来将此安卓工程打包成apk,不会的自行搜索Eclipse如何打包为apk文件。打包好后,上传到谷歌开发者控制台,我这里上传的是Alpha版本并选择了封闭式ALPHA 版测试,然后将需要测试的谷歌账号添加到测试人员列表中,注意并不仅仅要在这里添加为测试人员,还要在设置中的许可测试选项中添加测试的谷歌账号,必须两处都加上
技术分享
技术分享
技术分享
第一次上传ALPHA版apk成功后,要耐心等待几个小时,然后使用测试账号进入下图的网址,然后点击确定成为测试人员,然后再次等待15分钟-1小时后即可在谷歌商店中下载我们的测试应用去测试,当然此时您也可以使用之前的apk直接安装到手机上测试
技术分享

结语

接入所有的步骤都在这里了,还有一些坑点,后续会更新上的,如果感觉哪里说的不够仔细,请私信我,我会一一加上的,大家一起进步

Unity接入谷歌支付