最近因为项目需要,接入QuickSDK,因为关于QuickSDK的介绍比较少。甚至官方文档没有直观的时序图。
所以就照着官方Demo接入一遍QuickSDK,讲一些个人见解。
官方的接入文档地址是:https://www.quicksdk.com/doc-20.html
首先我在Unity里面搭建了一个简单的UI界面,用于各种情况下的测试。
第一部分、登陆
在不同的按钮下面绑定不同的点击事件。
第一个是登陆,官方的登陆是属于必须要接的部分。
登陆也很简单,就是一句简单的
/// <summary>
/// 登陆时候调用
/// </summary>
void Login()
{
QuickSDK.getInstance().login();
}
直接调用其SDK方法就可以吊起登陆。
母包点击Login按钮后会吊起QuickSDK的登陆窗口。可以输入任意账户名,注意这个账户名可以不需要提前注册。就可以登陆。
登陆完毕以后,SDK服务器会返回UID和Token等字段。
当客户端拿到UID和Token就可以进游戏逻辑了。
通过用户唯一的UID与游戏服务器通信,获取详细信息
那么登陆就接完了。
特别注意,QuickSDK的UID与用户名有关,与其他的设备平台无关。
第二部分、进入游戏
在接入支付之前,我们首先要让QuickSDK知道当前登陆的角色是什么?
所以需要接入enterGame这个方法。
我们用的是QuickSDK自身Demo的参数来生成用户角色,实际使用过程中还需要开发人员根据游戏配置来个性化每个字段的参数。
为了更加方便的存取数据,我们单独采用了一个方法,因为方法是初级阶段,所以不会有传参。
public static void SetRoleInfo()
{
m_Role.gameRoleBalance = "0";
m_Role.gameRoleID = "000001";
m_Role.gameRoleLevel = "1";
m_Role.gameRoleName = "钱多多";
m_Role.partyName = "同济会";
m_Role.serverID = "1";
m_Role.serverName = "火星服务器";
m_Role.vipLevel = "1";
m_Role.roleCreateTime = "roleCreateTime";//UC,当乐与1881渠道必传,值为10位数时间戳
m_Role.gameRoleGender = "男";//360渠道参数
m_Role.gameRolePower = "38";//360渠道参数,设置角色战力,必须为整型字符串
m_Role.partyId = "1100";//360渠道参数,设置帮派id,必须为整型字符串
m_Role.professionId = "11";//360渠道参数,设置角色职业id,必须为整型字符串
m_Role.profession = "法师";//360渠道参数,设置角色职业名称
m_Role.partyRoleId = "1";//360渠道参数,设置角色在帮派中的id
m_Role.partyRoleName = "帮主"; //360渠道参数,设置角色在帮派中的名称
m_Role.friendlist = "无";//360渠道参数,设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
}
我们用这个方法来简单设置用户信息。
在我们购买之前就要设置用户信息
实际上的操作逻辑也是这样,用户点击登陆后获取UID和Token,然后就会选择角色,选完角色后,就需要向服务器传入角色信息才能进入游戏大厅。
public void OnEnterDown()
{
QuickSDK.getInstance().enterGame(QuickSDKHelper.GetRole);
Debug.Log("EnterBtnDown");
}
在当前项目中点击Enter按钮后就会调用上述方法,将角色信息传入。
成功后,会显示;
这个信息在母包阶段的测试会一直显示,直到加入渠道后会自动消失。所以不需要担心。
到这里,用户信息就已经上传完毕了。
第二部分、支付
支付部分也很简单。
同样的,我们使用单独的设置商品信息的方法,将购买的商品信息这一块独立出来。因为是测试代码,所以没有设计传参。
public static void SetOrderInfo()
{
m_Order.goodsID = "1";
m_Order.goodsName = "勾玉";
m_Order.amount = 1;
m_Order.count = 10;
m_Order.cpOrderID = "cporderidzzw";
m_Order.extrasParams = "extparma";
m_Order.price = 0.1f; //停用的,不用给值
m_Order.quantifier = "个"; //停用的,不用给值
m_Order.goodsDesc = "10个勾玉"; //停用的,不用给值
}
我们通过点击Pay按钮吊起支付
Pay按钮的逻辑如下:
public void OnPayDown()
{
Pay(QuickSDKHelper.GetOrder,QuickSDKHelper.GetRole);
Debug.Log("PayBtnDown");
}
点击成功后,就会显示支付成功。
需要注意的是,以前我们接微信支付,或者支付宝支付的时候,必须要先由客户端向服务器统一下单,服务器下单完毕后返回单号由客户端进行吊起支付,但是在QuickSdk中,客户端无需向游戏服务器统一下单,直接将支付信息发送给sdk服务器,然后由sdk服务器告知游戏服务器是否支付成功,然后由游戏服务器告知游戏客户端支付成功,并进行相应的物品发放。
这样的话,整个QuickSDK关键部分的逻辑都已经成功了。