最近因爲項目需要,接入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關鍵部分的邏輯都已經成功了。