/// <summary> /// 服务器返回订单信息 /// </summary> public void OnRequestRechargeOrder(GameCmd.stCreatePlatOrderPropertyUserCmd_S msg) { Client.IPlayer mainPlayer = DataManager.Instance.MainPlayer; if (null == mainPlayer) { return; } uint characterID = mainPlayer.GetID(); int characterLv = mainPlayer.GetProp((int)Client.CreatureProp.Level); ClanDefine.LocalClanInfo clanInfo = DataManager.Manager <ClanManger>().ClanInfo; string clanName = ""; if (null != clanInfo) { clanName = clanInfo.Name; } Pmd.ZoneInfo zoneInfo = DataManager.Manager <LoginDataManager>().GetZoneInfo(); string currencyName = "元宝"; string roleName = mainPlayer.GetName(); table.RechargeDataBase rechargeDb = GameTableManager.Instance.GetTableItem <table.RechargeDataBase>(msg.goodid); //平台支付 DoPlatformPay(msg, characterID, characterLv, roleName, clanName, zoneInfo, currencyName, CURRENCY_RATIO, rechargeDb); }
public void DoPlatformPay(GameCmd.stCreatePlatOrderPropertyUserCmd_S msg , uint characterId, int characterlv, string roleName, string clanName, Pmd.ZoneInfo zoneInfo, string currencyName, float currencyRatio, table.RechargeDataBase rechargeDb) { LoginDataManager lg = DataManager.Manager <LoginDataManager>(); int payMoney = (int)rechargeDb.money; int fenPayMoney = payMoney * 100; string moneyStr = fenPayMoney.ToString(); string characterIDStr = characterId.ToString(); string gameOrder = msg.gameorder; string token = lg.LoginToken; string serverNo = lg.ServerNo; string serverName = lg.ServerName; string account = lg.Acount; string accountIDStr = lg.AccountID; string characterLvStr = characterlv.ToString(); if (Application.platform == RuntimePlatform.Android) { CommonSDKPlaform.Instance.Pay(msg, characterId, characterlv, roleName, clanName, zoneInfo, currencyName, currencyRatio, rechargeDb); } else if (Application.platform == RuntimePlatform.IPhonePlayer) { ZqgameSDKController.Instance.Pay(moneyStr, account, characterIDStr, gameOrder, accountIDStr, token, rechargeDb.iosIAPId, serverNo, characterLvStr); } }
/// <summary> /// 支付接口 /// </summary> public void Pay(GameCmd.stCreatePlatOrderPropertyUserCmd_S orderMsg, uint characterId, int characterlv, string roleName, string clanName , Pmd.ZoneInfo zoneInfo, string currencyName, float currencyRatio , table.RechargeDataBase rechargeDB) { if (!DataManager.Manager <LoginDataManager>().IsSDKLogin) { Debug.LogError("Pay Faield,SDK not login!"); return; } if (Application.platform == RuntimePlatform.Android) { if (null == rechargeDB) { Debug.LogError("充值失败,数据错误"); return; } AndroidJavaObject payData = new AndroidJavaObject("com.talkingsdk.models.PayData"); AndroidJavaObject hashmap = new AndroidJavaObject("java.util.HashMap"); System.IntPtr methodPut = AndroidJNIHelper.GetMethodID(hashmap.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); Debug.Log("m_loginResult.uid :" + m_loginResult.uid); Dictionary <string, string> dict = new Dictionary <string, string>(); dict.Add("UserId", m_loginResult.szLoginAcccount); //uid //dict.Add("UserId", m_loginResult.uid); //uid dict.Add("UserBalance", "0"); //用户余额 dict.Add("UserGamerVip", "1"); //vip 等级 dict.Add("UserLevel", characterlv.ToString()); //角色等级 if (string.IsNullOrEmpty(clanName)) { clanName = "testName"; } dict.Add("UserPartyName", clanName); //工会,帮派 if (string.IsNullOrEmpty(roleName)) { roleName = "Underworld"; } dict.Add("UserRoleName", roleName); //角色名称 dict.Add("UserRoleId", characterId.ToString()); //角色id dict.Add("LoginAccount", m_loginResult.szLoginAcccount); dict.Add("LoginDataEx", m_loginResult.szLoginDataEx); dict.Add("LoginSession", m_loginResult.szLoginSession); dict.Add("AccessKey", orderMsg.sign); //拓展字段 dict.Add("OutOrderID", orderMsg.platorder); //平台订单号 dict.Add("NoticeUrl", orderMsg.noticeurl); //支付回调地址 //UserServerId string zoneIdStr = ""; string serverNameStr = "Underworld"; if (null != zoneInfo) { //合服后使用目标服务器 zoneIdStr = LoginDataManager.GetBestZoneID(zoneInfo).ToString(); serverNameStr = zoneInfo.zonename; } dict.Add("UserServerId", zoneIdStr); dict.Add("UserServerName", serverNameStr); // int payMoney = (int)rechargeDB.money; int gameMoneyAmout = payMoney * 10; dict.Add("GameMoneyAmount", gameMoneyAmout.ToString()); dict.Add("GameMoneyName", currencyName); object[] args = new object[2]; foreach (KeyValuePair <string, string> kvp in dict) { AndroidJavaObject k = new AndroidJavaObject("java.lang.String", kvp.Key); AndroidJavaObject v = new AndroidJavaObject("java.lang.String", kvp.Value); args[0] = k; args[1] = v; AndroidJNI.CallObjectMethod(hashmap.GetRawObject(), methodPut, AndroidJNIHelper.CreateJNIArgArray(args)); } Debug.LogError("go to pay.... setMyOrderId " + orderMsg.gameorder + " payGoodsData.pay_info.out_order: " + orderMsg.platorder + " rmb: " + payMoney + " setProductCount :" + orderMsg.goodnum + " setProductId :" + orderMsg.appgoodid + " setProductName :" + rechargeDB.rechargeName + " setSubmitTime:" + orderMsg.createtime + " extData:" + orderMsg.extdata + " AccessKey:" + orderMsg.sign + " userID:" + m_loginResult.szLoginAcccount + " LoginAcccount:" + m_loginResult.szLoginAcccount ); //string 类型 payData.Call("setMyOrderId", orderMsg.gameorder); payData.Call("setProductId", orderMsg.appgoodid.ToString());//"1");// payData.Call("setSubmitTime", orderMsg.createtime); payData.Call("setDescription", rechargeDB.desc); payData.Call("setProductName", rechargeDB.rechargeName); //int 类型 ,SDK 这边统一以分为单位 int fenPayMoney = payMoney * 100; payData.Call("setProductRealPrice", fenPayMoney); payData.Call("setProductIdealPrice", fenPayMoney); payData.Call("setProductCount", (int)orderMsg.goodnum); payData.Call("setEx", hashmap); sdkBase.Call("pay", payData); } else if (Application.platform == RuntimePlatform.IPhonePlayer) { } }