/// <summary>SingleRecordPay 实体转换</summary> public static SingleRecordPay ToSingleRecordPay(string platform, string server, tgm_record_pay model) { return(new SingleRecordPay() { platform = platform, server = server, playername = model.player_name, pay = model.money, gold = model.amount, paytime = Convert.ToString(DateTime.FromBinary(long.Parse(Convert.ToString(model.createtime)))), order = model.order_id, }); }
/// <summary>充值接口</summary> /// <param name="param">充值参数字符串 /// token|sid|user_code|order_id|channel|type|amount /// 令牌|游戏服编号|玩家账号|订单号|渠道|充值类型|充值数值 /// </param> /// <param name="checksum">param的MD5校验和 /// MD5字符串token|sid|user_code|order_id|channel|type|amount|key /// 令牌|游戏服编号|玩家账号|订单号|渠道|充值类型|充值数值|平台加密字符串 /// </param> /// <returns>充值后状态结果值</returns> public BaseEntity PostPayment(String param, String checksum) { //key : 解析param用 //param:充值封装字符串 格式: token|sid|user_code|order_id|channel|type|amount //checksum: MD5字符串token|sid|user_code|order_id|channel|type|amount|key //var t = string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}", "0c372ec3-1b00-4286-84a8-9216e7ab59e3", 1, "", 1, "", 1, 1, 100); //var _t0 = string.Format("{0}|{1}", t, "123456"); //解析 var s = param.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (s.Length == 7) { var _token = s[0]; var _sid = Convert.ToInt32(s[1]); var _user_code = s[2]; var _order_id = s[3]; var _channel = s[4]; var _type = Convert.ToInt32(s[5]); var _amount = Convert.ToInt32(s[6]); if (!IsToken(_token)) { return new BaseEntity { result = (int)ApiType.FAIL, message = "令牌错误" } } ; //验证会话 var ck = string.Format("{0}|{1}", param, Token.encrypt); var md5 = UConvert.MD5(ck); if (checksum == md5)//参数校验 { //获取游戏服信息 tgm_server.SetDbConnName(tgm_connection); var server = tgm_server.FindByid(_sid); if (server == null) { return new BaseEntity { result = (int)ApiType.FAIL, message = "游戏服务器不存在" } } ; SN = server.name; tg_user.SetDbConnName(db_connection); var user = tg_user.GetEntityByCode(_user_code); if (user == null) { return new BaseEntity { result = (int)ApiType.FAIL, message = "玩家账号不存在" } } ; var ip = server.ip; var port = server.port_server; //var conn = server.connect_string; //解析后调用游戏接口判断是否成功 var gold = UConvert.ToGold(_amount, _type); var api = new CommandApi(ip, port, ApiCommand.充值); var state = api.Recharge(user.id, gold); api.Dispose(); if (state == (int)ApiType.OK) { tgm_record_pay.SetDbConnName(tgm_connection); var entity = new tgm_record_pay() { sid = _sid, user_code = _user_code, player_id = user.id, player_name = user.player_name, order_id = _order_id, channel = _channel, pay_type = _type, amount = gold, pay_state = state, createtime = DateTime.Now.Ticks, money = _amount, }; //无论成功,存入后台数据库这条数据记录 entity.Save(); //同步数据 tgm_record_pay.Proc_sp_pay_syn(entity.id); return(new BaseEntity { result = (int)ApiType.OK, message = "充值成功" }); } return(new BaseEntity { result = state, message = "充值未达到玩家账号" }); } else { return(new BaseEntity { result = (int)ApiType.FAIL, message = "参数校验错误,传递参数被修改" }); } } return(new BaseEntity { result = (int)ApiType.FAIL, message = "传递参数解析错误" }); }