using System; using System.Collections.Generic; using System.Text; using Games.Events; using Module.Log; using UnityEngine; public class SdkIosYuCheng : SdkIosBase { private const string _serverListUri = "http://rk.jjbb.yoseleather.com/YcApi/server/cid/2-10004"; private const string _loginUri = "http://rk.jjbb.yoseleather.com/YcApi/login/cid/2-10004"; private const string _paymentUri = "http://rk.jjbb.yoseleather.com/YcApi/createOrder/cid/2-10004"; // 兑换码超链接 private const string _redemptionUri = "http://rk.jjbb.yoseleather.com/Gift/receiveGiftPackage"; private const string _noticeUri = "http://rk.jjbb.yoseleather.com/YcApi/notice/cid/2-10004"; private SdkUser _user; public override string sdkAccount { get { return _user == null ? string.Empty : _user.id; } } public override string platformId { get { return "2-10004"; } } protected override string redemptionUri { get { return _redemptionUri; } } protected override string noticeUri { get { return _noticeUri; } } public override bool IsLogin() { return _user != null; } public override void GetServerList() { var data = new Dictionary(); data["mem_id"] = _user.id; data["user_token"] = _user.token; Debug.Log(string.Format("MemId = {0}, Token = {1}", _user.id, _user.token)); var jsonDownloader = new DownloadJsonFile(_serverListUri, 10f, data) { onDownloadComplete = OnGetServerListComplete }; jsonDownloader.Start(); } private void OnGetServerListComplete(DownloadJsonFile action) { var result = ParseServerList(action); EventDispatcher.GetInstance().Dispatch(EventId.ServerListCallback, result); } public override void LoginPhp(int serverId) { var data = new Dictionary(); data["mem_id"] = _user.id; data["user_token"] = _user.token; data["server_id"] = serverId.ToString(); data["recom_server_id"] = defaultServer.ToString(); Debug.Log(string.Format("Login Php: mem_id = {0}, user_token = {1}, serverId = {2}, reconmServer = {3}", _user.id, _user.token, serverId, defaultServer)); var jsonDownloader = new DownloadJsonFile(_loginUri, 10f, data) { onDownloadComplete = OnPhpLoginComplete }; jsonDownloader.Start(); } private void OnPhpLoginComplete(DownloadJsonFile action) { LoginPhpWithToken(action, _user.token); } public override void Payment(int goodsId) { var playerData = GameManager.gameManager.PlayerDataPool; var data = new Dictionary(); data["serverId"] = LoginData.accountData.serverId.ToString(); data["userRoleId"] = playerData.MainPlayerBaseAttr.Guid.ToString(); data["goodsId"] = goodsId.ToString(); data["mServerId"] = SdkControl.instance.currentServerData.m_id.ToString(); data["level"] = playerData.MainPlayerBaseAttr.Level.ToString(); var jsonDownloader = new DownloadJsonFile(_paymentUri, 10f, data) { onDownloadComplete = OnPaymentPhpComplete }; jsonDownloader.Start(); } public override void SubmitData(RoleDataSubmit submitType) { base.SubmitData(submitType); var roleData = GetRoleInfoDict(submitType); var builder = new StringBuilder(); builder.Append(roleData["Event"]); builder.Append(','); builder.Append(roleData["ServerId"]); builder.Append(','); builder.Append(roleData["ServerName"]); builder.Append(','); builder.Append(roleData["Id"]); builder.Append(','); builder.Append(roleData["Name"]); builder.Append(','); builder.Append(roleData["Level"]); builder.Append(','); builder.Append(roleData["Vip"]); builder.Append(','); builder.Append(roleData["Balance"]); builder.Append(','); builder.Append(roleData["CreateTime"]); builder.Append(','); builder.Append(roleData["OnlineTime"]); SubmitRoleNative(builder.ToString()); } private void OnPaymentPhpComplete(DownloadJsonFile action) { Dictionary payData = null; if (!string.IsNullOrEmpty(action.error)) Debug.LogError(action.error); else try { var json = action.jsonData; var msg = json["msg"].ToString(); if (msg != "success") { Debug.LogError(string.Format("OnPaymentPhpComplete Error: " + msg)); } else { payData = new Dictionary(); var data = json["data"]; payData["OrderId"] = data["cp_order_id"].ToString(); payData["Price"] = data["product_price"].ToString(); // payData["Count"] = data["product_count"].ToString(); payData["Id"] = data["product_id"].ToString(); payData["Name"] = data["product_name"].ToString(); payData["Desc"] = data["product_desc"].ToString(); payData["Ext"] = data["ext"].ToString(); } } catch (Exception e) { Debug.LogError(e); payData = null; } if (payData != null) { var roleData = GetRoleInfoDict(RoleDataSubmit.Other); var builder = new StringBuilder(); builder.Append(payData["OrderId"]); builder.Append(','); builder.Append(roleData["ServerId"]); builder.Append(','); builder.Append(roleData["ServerName"]); builder.Append(','); builder.Append(payData["Id"]); builder.Append(','); builder.Append(payData["Name"]); builder.Append(','); builder.Append(payData["Desc"]); builder.Append(','); builder.Append(payData["Ext"]); builder.Append(','); builder.Append(payData["Price"]); builder.Append(','); builder.Append(roleData["RoleId"]); builder.Append(','); builder.Append(roleData["RoleName"]); builder.Append(','); builder.Append("灵玉"); PaymentNative(builder.ToString()); } } public override bool LoginComplete(string args) { var result = IsSuccess(args); if (result) { var argList = args.Split(','); if (argList.Length > 2) { _user = new SdkUser(argList[1].Trim(), argList[2].Trim()); } else { result = false; LogModule.ErrorLog("Login success but with no enough args: " + args); } } else { LogModule.ErrorLog("Login failed: " + args); } return result; } public override bool LogOutComplete(string args) { bool result; if (_user == null) { LogModule.ErrorLog("Logout before login!"); result = false; } else { result = IsSuccess(args); LogModule.ErrorLog("LogOut failed: " + args); } if (result) _user = null; return result; } public override bool PaymentComplete(string data) { var result = IsSuccess(data); return result; } private class SdkUser { public readonly string token; public readonly string id; public SdkUser(string id, string token) { this.id = id; this.token = token; } } }