效果
目标:能在UNITY3D里通过qqgame充值
因为目前还没有这类文章,所以填补这下块空白
文章包含
QQGame登录器的制作
QQGAME和UNITY3D的交互
QQGame平台用户信息的读取
支付规则,后台搭建。
和常见问题。
对接参考腾讯开发者有文档
https://docs.qq.com/doc/DYkRQZHBrckhRbXhk
但是它没有细分哪些才是Unity3d开发者需要的。
第一步:如何在u3d里获取用户的信息,比如蓝钻等级
腾讯有http查询接口,需要传入用户 openid,和openkey,
这两个参数怎么得到呢?
通过QQ游戏大厅运行后,会把参数通过WebSocket 传给unity3d
具体可见PC_demo
https://open.qqgame.qq.com/wiki/24/35/53/55/55.html
我们需要通过大厅启动UNITY程序
制作启动器
首先启动的demohttps://open.qqgame.qq.com/wiki/24/35/53/234/234.html
通过win10 的任务管理器找到进程所在的目录
我们需要skin,config.init,launcher
拷贝出来放到QQlauncher目录
打开config.ini
*配置我们自己的GameId,这个GameID是由平台的审核人员分配的,需要人工询问
用官方提供的压缩工具打包U3NITY的游戏目录
得到压缩包,自己上传到外网服务器,得到U3D游戏包下载地址
*[Launcher]
Url=http://下载地址.7z
Md5=7B94A0E894B855D9340174974D29D974(压缩包的MD5)
.
打包启动器,得到qgi启动文件
用官方工具QgiMaker.exe,新版本目录选择刚才编辑的QQlauncher目录
得到QQ专用的启动器文件,然后人工发给提审人员
等到他们提审后,就可以通过QQGAME启动自己的游戏了
测试阶段如何启动游戏?
打开QQGAME的同时,打开浏览器 输入 qqgameprotocol://enterapp appid=我的GAMEID
入口处终于看见了自己的游戏
注意需要自行在腾讯开放平台添加自己的QQ白名单,否则是看不到测试阶段的游戏
游戏启动后,我们就可以得到了自己的openid和openkey
为什么QQDemo没有给我们提供查询用户信息的接口呢?
因为查询需要用到appkey(重要,公开会有安全隐患),所以只能搭建一个PHP服务器作为跳板查询
U3D端
至于PHP后台怎么查询的,签名怎么校验的(头疼的部分),腾讯开发文档写了很多详细说明,并且也给出php的demo,避免开发者浪费太多时间去做接口调试
php_demo
https://open.qqgame.qq.com/wiki/24/35/53/54/54.html
如何让玩家购买付费道具
下图是站在U3D开发者视觉整理的图
在后端搭建完毕后,U3D客户端只需要发出购买请求,输入具体参数
客户端向PHP服务器请求,需要买什么
PHP收到客户端消息后向腾讯请求,得到回复后再转到给客户端
拿到物品token
客户端收到物品token后向QQ大厅发出消息即可
结果
以下是php服务器的部署过程
因为发货回调需要的通信上的契合(比如https,key和ctr信息等等)
所以要给服务器配置证书
下载证书
首先配置好发货地址
因为只支持HTTPS,所以需要下载腾讯给的证书
给nginx配置腾讯给的证书,开启https
它的作用是用户付费购买后,会请求这个URL
官方的web demo有案例,delivery_web.php
游戏后台回调发货逻辑,参考它可以避免很多签名验证的麻烦
收到发货成功后,修改玩家的数据库即可
腾讯不支持透传,如何做PHP发货处理过程
游戏服发货参数是:playerid,payId,serverid…
腾讯发货参数是:openid,payitem…
可以看得出,腾讯的接口并不能满足我们需要的参数
一般情况下
其他平台会让开发者透传参数,提供额外的发货参数
但是腾讯不支持
所以只能做接口兼容
请求购买前
记录订单的token,openid,playerid,payId,写入数据库
腾讯发货后
根据token,oenid查找数据库里对应的playerid,payId,serverid…
调用真实的发货接口即可
常见问题:
在请求用户信息时,偶尔会出现 504 GateWay,导致程序无法识别QQ用户信息
因为用了QQ的例子,这里的sdk包没有更新,所以根据审核技术人员的提供的消息进行修改