def checkSmsVerifyCode(cls, rpath): isReturn, params = AccountCheck.check_userv4(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountUniversal.doCheckSmsVerifyCode(params, mo) return mo
def getPayResult(self, ret, datas): r0_Cmd = ""; # 业务类型 r1_Code = ""; # 支付结果 r2_TrxId = ""; # 易宝支付交易流水号 r6_Order = ""; # 商户订单号 rq_ReturnMsg = ""; # 返回信息 rethmac = ""; # 签名数据 unkonw = ""; # 未知错误 result = ret.split("\n") for data in result: dsp = data.split('=') if len(dsp) != 2: continue sKey, Svalue = dsp if sKey == 'r0_Cmd': r0_Cmd = Svalue elif sKey == 'r1_Code': r1_Code = Svalue elif sKey == 'r2_TrxId': r2_TrxId = Svalue elif sKey == 'r6_Order': r6_Order = Svalue elif sKey == 'rq_ReturnMsg': rq_ReturnMsg = Svalue elif sKey == 'hmac': rethmac = Svalue else: unkonw = Svalue mo = TyContext.Cls_MsgPack() mo.setResult('r0_Cmd', r0_Cmd) mo.setResult('r1_Code', r1_Code) mo.setResult('r2_TrxId', r2_TrxId) mo.setResult('r6_Order', r6_Order) mo.setResult('rq_ReturnMsg', rq_ReturnMsg) mo.setResult('unkonw', unkonw) sbOld = str(r0_Cmd) + str(r1_Code) + str(r6_Order) + str(rq_ReturnMsg) hmacStr = self.getHmacString(sbOld) if (rethmac == hmacStr): if r1_Code == '1': info = '提交成功!' from tysdk.entity.pay.pay import TuyouPay TuyouPay.makeBuyChargeMessage(mo, datas) elif r1_Code == '2': info = '充值交易失败,卡密成功处理过或者提交卡号过于频繁' elif r1_Code == '11': info = '充值交易失败,订单号重复' elif r1_Code == '66': info = '充值交易失败,支付金额有误' else: info = '充值交易失败,请检查后重新测试支付' else: info = '充值交易失败,' + rq_ReturnMsg info = info.decode('utf-8') mo.setResult('info', info) return mo
def doNicai(cls, rpath): code = TyContext.RunHttp.getRequestParam('code', '0') rcode = TyContext.strutil.tydes_encode(code) mo = TyContext.Cls_MsgPack() mo.setCmd('nicai') mo.setResult('code', rcode) return mo
def confirmFriendRequest(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('confirmFriendRequest') friend_uid = TyContext.RunHttp.getRequestParam('friend_uid') isAgree = TyContext.RunHttp.getRequestParamInt('is_agree', 0) if friend_uid is None or friend_uid == '': mo.setResult('code', 2) mo.setResult('info', u"好友ID为空!") return cls.onResponse(mo, params) friend_uids = friend_uid.split(',') if len(friend_uids) == 1: Friend.confirmFriendRequest(params['appId'], params['userId'], friend_uid, isAgree, mo) return cls.onResponse(mo, params) for friend_uid in friend_uids: ret = Friend.confirmFriendRequest(params['appId'], params['userId'], friend_uid, isAgree, mo) if not ret: break mo.setResult('code', 0) mo.setResult('info', "ok") return cls.onResponse(mo, params)
def setScore(cls, rpath): appId = TyContext.RunHttp.getRequestParamInt('appId', 0) score = TyContext.RunHttp.getRequestParamInt('score', 0) userId = TyContext.RunHttp.getRequestParamInt('userId', 0) infos = TyContext.RunHttp.getRequestParam( 'infos', '') # user extra infos json string mo = TyContext.Cls_MsgPack() mo.setCmd('setScore') if score == 0: mo.setResult('code', 1) mo.setResult('info', 'score is zero') return mo rankName = TyContext.RunHttp.getRequestParam('rank_name', 'week_score') key = 'rank_scores:' + str(appId) + ":" + str(rankName) + ':' + str( userId) ret = TyContext.RedisUser.execute(userId, 'hmset', key, 'score', str(score), 'infos', infos) if ret: td = datetime.datetime.today() seconds = (7 - td.weekday() ) * 86400 - td.hour * 3600 - td.minute * 60 - td.second TyContext.RedisUser.execute(userId, 'EXPIRE', key, seconds) mo.setResult('code', 0) mo.setResult('info', 'success') else: mo.setResult('code', 1) mo.setResult('info', 'fail') # TyContext.ftlog.info(cls.__name__, 'mo->', mo.packJson()) return mo
def doYoukuVipCallback(cls, rpath): mo = TyContext.Cls_MsgPack() config = TyContext.Configure.get_global_item_json('youkuh5_config', {}) paykey = config.get('payKey') # qid=50469470&grade=1&vip_center_id=youkutest1011&sign=7439fb6fa5f82104c107648e9ac77d76 qid = TyContext.RunHttp.getRequestParam('qid', '') grade = TyContext.RunHttp.getRequestParam('grade', '') vip_center_id = TyContext.RunHttp.getRequestParam('vip_center_id', '') sign = TyContext.RunHttp.getRequestParam('sign', '') if qid == '' or grade == '' or vip_center_id == '': return 0 TyContext.ftlog.info('youku_vip_charge_callback', qid, grade, vip_center_id, sign) sign_str = "%s%s%s%s" % (qid, grade, vip_center_id, paykey) from hashlib import md5 m = md5() m.update(sign_str) my_sign = m.hexdigest() TyContext.ftlog.debug('youku_vip_charge_callback my_sign', my_sign, sign) if not my_sign or my_sign != sign: mo.setResult('code', 1) mo.setResult('info', 'sign error') return 0 sns_id = 'youkuh5:' + str(qid) uid = TyContext.RedisUserKeys.execute('GET', 'snsidmap:' + sns_id) cls.notify_game_server_on_vip_change(uid, vip_center_id, grade) return 1
def readyInviteFriend(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() invite_type = TyContext.RunHttp.getRequestParam('invite_type') productName = TyContext.RunHttp.getRequestParam('productName') uid = params['userId'] gameId = params['appId'] # todo subGameId = TyContext.RunHttp.getRequestParamInt('subGameId', 6) gameName, url = Friend.getGameNameAndUrl(subGameId, params['clientId']) if not productName: productName = gameName normal_user = 1 if invite_type == 'sms': msg = "我在玩 " + productName + ",等你哦,不见不散!点此下载:" + url normal_user = cls._checkNormalAccount(uid) else: msg = "我在玩 " + productName + ",等你哦,不见不散!我的id是" + str(uid) + ", " \ "在游戏中添加我为好友,一起玩吧~ 点击下载" code = 0 if normal_user == 0: code = 1 mo.setResult('code', code) mo.setResult('url', url) mo.setResult('content', msg) mo.setResult('info', "ok") return cls.onResponse(mo, params)
def doSetPasswdByVerifyCode(cls, rpath): # isReturn, params = AccountCheck.normal_check( rpath) # if isReturn : # return params params = {} isReturn, mobile = AccountCheck.check_param_mobile(rpath) if isReturn: return mobile params['mobile'] = mobile isReturn, vcode = AccountCheck.check_param_verify_code(rpath) if isReturn: return vcode params['vcode'] = vcode isReturn, newpasswd = AccountCheck.check_param_password(rpath, 'newpasswd', isSet=True) if isReturn: return newpasswd params['newpasswd'] = newpasswd mo = TyContext.Cls_MsgPack() AccountSms.doSetPasswordByVerifyCode(params, mo) return mo
def doLoginByDevId(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 1, False) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doLoginByDevId(params, mo) return mo
def doPayRequestAliDone(self, page, rparam, datas): # 成功的返回如下,可以发回客户端,由客户端调用支付宝 # {"code":"success","paydata":"partner=\"2088701816336850\"&seller=\"[email protected]\"&out_trade_no=\"0830120418153417112\"&subject=\"360Coin\"&body=\"360Coin\"&total_fee=\"10\"¬ify_url=\"https%3A%2F%2Fapi.360pay.cn%2Freturn%2Fnotify%2FchannelId%2F10005\"&sign=\"IPYiJda%2Br%2BLqTLBwJ%2FJKlj8EPzy6k%2Bxhv4DDxRsQOvV81StDZHuro%2Fgl2UlAUidskqSVgwsJ6jEd1uw4maLQ72N65EZ6KIzObvI7rzXxFhQV%2BY0ReyCcxqp7DvdWUGT1T8O32ckpgXHi1N41Nv%2FbMQB1hTp3Xr%2Bw6zLgIckuLBE%3D\"&sign_type=\"RSA\""} jsons = None try: jsons = json.loads(page) if 'code' in jsons: if not jsons['code'] == 'success': jsons = {'code': 'error', 'info': 'net work error'} else: jsons = {'code': 'error', 'info': 'net work error'} except: jsons = {'code': 'error', 'info': 'net work error'} mo = TyContext.Cls_MsgPack() from tysdk.entity.pay.pay import TuyouPay TuyouPay.makeBuyChargeMessage(mo, datas) if jsons['code'] == 'success': mo.setResult('payData', jsons['paydata']) else: mo.setResult('payData', '') mo.setResult('code', 1) if 'info' in jsons: mo.setResult('info', jsons['info']) else: mo.setResult('info', 'net work error') return mo
def doCancelOrder(cls, path): ''' 用于客户端支付失败后取消订单 reason 0: user cancel the order for client sdk (e.g. ydmm/ltw) failed 1: user cancel the order in the first place 2: user cancel the order on sms send fail 3: user cancel the order on sms send timeout ''' mi = TyContext.RunHttp.convertToMsgPack() platformOrderId = mi.getParamStr('platformOrderId', 'na') productOrderId = mi.getParamStr('productOrderId', 'na') shortId = 'na' if ShortOrderIdMap.is_short_order_id_format(platformOrderId): shortId, platformOrderId = platformOrderId, ShortOrderIdMap.get_long_order_id( platformOrderId) appId = mi.getParamInt('appId', 'na') userId = mi.getParamInt('userId', 'na') clientId = mi.getParamStr('clientId', 'na') paytype = mi.getParamStr('payType', 'na') errinfo = mi.getParamStr('errInfo', 'na') reason = mi.getParamStr('reason', 'na') Order.log(platformOrderId, Order.CLIENT_CANCELED, userId, appId, clientId, shortId=shortId, prodOrderId=productOrderId, paytype=paytype, subevent=reason, info=errinfo if errinfo else 'na') mo = TyContext.Cls_MsgPack() mo.setCmd('cancelorder') mo = mo.packJson() return mo
def listUser(cls, rpath): isReturn, params = AccountCheck.check_userv4(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountUniversal.listUser(params, mo) return mo
def bindByTyID(cls, rpath): isReturn, params = AccountCheck.check_userv4(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountUniversal.bindByTyId(params, mo) return mo
def changePassword(cls, rpath): isReturn, params = AccountCheck.check_userv4(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountUniversal.changePassword(params, mo) return mo
def payCardRequest(self, rparam, datas): cardUrl = TuyouPayTuyou.szf_url + '?' + self.createLinkString4Get( rparam) TyContext.ftlog.info('TuYouPayTuyou->requestUrl=', cardUrl) response, cardUrl = TyContext.WebPage.webget(cardUrl) TyContext.ftlog.info('TuYouPayTuyou->requestUrl=', cardUrl, 'response=', response) status = 0 try: status = int(response) except: status = 0 mo = TyContext.Cls_MsgPack() from tysdk.entity.pay.pay import TuyouPay if status == 200: TuyouPay.makeBuyChargeMessage(mo, datas) else: mo.setResult('code', 1) mo.setResult('tuyou.card.code', status) info = '' if status in TuyouPayTuyou.szf_request_code: info = TuyouPayTuyou.szf_request_code[status] else: info = '充值卡支付失败' info = info.decode('utf-8') mo.setResult('info', info) return mo
def doRenewAuthorCodeByTyId(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 3) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doRenewAuthorCodeByTyId(params, mo) return mo
def _check_prod_price(mi): try: prodId = mi.getParamStr('prodId') prodPrice = mi.getParamFloat('prodPrice') defPrice = -1 if prodId.startswith("TY"): lpid = len(prodId) if lpid >= 12: if prodId[6] == 'D' or prodId[6] == 'R': defPrice = float(prodId[7:12]) if defPrice >= 0: if prodPrice < defPrice * 0.8: TyContext.ftlog.info('CHECK_PROD_PRICE ERROR prodId=', prodId, 'defPrice=', defPrice, 'prodPrice=', prodPrice, mi) mo = TyContext.Cls_MsgPack() mo.setCmd('consume') mo.setError(2, '商品信息错误,请重新购买') return mo else: TyContext.ftlog.info('CHECK_PROD_PRICE OK prodId=', prodId, 'defPrice=', defPrice, 'prodPrice=', prodPrice, mi) else: TyContext.ftlog.info('CHECK_PROD_PRICE NG prodId=', prodId, 'defPrice=', defPrice, 'prodPrice=', prodPrice, mi) except Exception, e: TyContext.ftlog.error('CHECK_PROD_PRICE', e)
def doCreateAccount(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 7) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doCreateAccount(params, mo) return mo
def doPayRequestCard(self, mi): chargeInfo = self.get_charge_info(mi) mo = TyContext.Cls_MsgPack() status = TuYouPayYeeV4.doPayRequestCard(chargeInfo, mi, mo) mo.setResult('chargeinfo', chargeInfo) mo.setResult('code', status) return self.return_mo(0, chargeInfo=chargeInfo)
def doGetUserInfo(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountInfo.doGetUserInfo(params, mo) return mo
def addFriendRequest(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('addFriend') friend_uid = TyContext.RunHttp.getRequestParam('friend_uid') if friend_uid is None or friend_uid == '': mo.setResult('code', 2) mo.setResult('info', u"好友ID为空!") return cls.onResponse(mo, params) uid = params['userId'] normal_user = cls._checkNormalAccount(uid) if normal_user == 0: mo.setResult('code', 109) mo.setResult('info', Friend.err_codes[109]) # return mo todo friend_uids = friend_uid.split(',') TyContext.ftlog.debug('friend_uids', friend_uids) if len(friend_uids) == 1: Friend.addFriendRequest(params['appId'], params['clientId'], params['userId'], friend_uid, mo) else: for fid in friend_uids: Friend.addFriendRequest(params['appId'], params['clientId'], params['userId'], fid, None) TyContext.ftlog.debug('friend_uids....') mo.setResult('code', 0) mo.setResult('info', u"好友请求发送成功!") return cls.onResponse(mo, params)
def doSetUserAvatar(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params url = TyContext.RunHttp.getRequestParam('url', '').strip() data = TyContext.RunHttp.getRequestParam('data', '') mo = TyContext.Cls_MsgPack() is_url_error = len(url) > 0 and (len(url) > 125 or url.find('"') >= 0 or url.find("'") >= 0) if (len(url) == 0 and len(data) == 0) or is_url_error: mo.setResult('code', 1) mo.setResult('info', '输入参数错误') return mo if len(data) > 0: try: data = base64.b64decode(data) except: mo.setResult('code', 1) mo.setResult('info', '图像数据错误') return mo params['url'] = url params['data'] = data AccountInfo.doSetUserAvatar(params, mo) return mo
def searchUser(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('searchUser') search_uid = TyContext.RunHttp.getRequestParam('search_uid') if search_uid is None or search_uid == '' or not str( search_uid).isdigit(): mo.setResult('code', 2) mo.setResult('info', '请输入正确ID') return cls.onResponse(mo, params) search_list = [] user = Friend.getUserInfo(params['appId'], search_uid) if not user is None: search_list.append(user) Friend.setup_friends_game_info(search_list) # for user in search_list: # user['level'] = 1 # user['level_game'] = '麻将' if len(search_list) == 0: mo.setResult('code', 2) mo.setResult('info', '请输入正确ID') else: mo.setResult('code', 0) mo.setResult('info', 'ok') mo.setResult('search_list', search_list) return cls.onResponse(mo, params)
def doSetPasswd(cls, rpath): isReturn, params = AccountCheck.normal_check(rpath) if isReturn: return params # 获取玩家修改密码次数 userId = params['userId'] changePwdCount = TyContext.RedisUser.execute(userId, 'HGET', 'user:'******'changePwdCount') # TyContext.ftlog.info(cls.__name__, 'doSetPasswd->changePwdCount=', changePwdCount) if changePwdCount == None: changePwdCount = 0 if int(changePwdCount) > 0: isReturn, oldpasswd = AccountCheck.check_param_password(rpath, 'oldpasswd') if isReturn: return oldpasswd params['oldpasswd'] = oldpasswd isReturn, newpasswd = AccountCheck.check_param_password(rpath, 'newpasswd', isSet=True) if isReturn: return newpasswd params['newpasswd'] = newpasswd mo = TyContext.Cls_MsgPack() AccountInfo.doSetPasswd(params, mo) return mo
def crossReward(cls, rpath): userId = TyContext.RunHttp.getRequestParam('userId') appId = TyContext.RunHttp.getRequestParam('appId') Cross.reward(userId, appId) mo = TyContext.Cls_MsgPack() mo.setResult('code', 0) return mo
def doSetForbidden(cls, rpath): '''设置禁止登录用户''' mo = TyContext.Cls_MsgPack() lock_users = TyContext.RunHttp.getRequestParam('lock_users', '[]') unlock_users = TyContext.RunHttp.getRequestParam('unlock_users', '[]') try: locked = json.loads(lock_users) unlocked = json.loads(unlock_users) except: mo.setResult('code', 1) mo.setResult('info', 'error args') return mo byid = TyContext.RunHttp.getRequestParam('byid', 'userId') TyContext.ftlog.debug('doSetForbidden byid', byid, 'locked', locked, 'unlocked', unlocked) if byid == 'userId': return cls._set_forbidden_ids('forbidden:uid:', locked, unlocked, locked, mo, 100) elif byid == 'clientId': return cls._set_forbidden_ids('forbidden:cid:', locked, unlocked, locked, mo) elif byid == 'deviceId': lock_users = [] for devid in locked: userid = AccountLogin.__find_userid_by_devid_map_v3__(devid) if userid > 0: lock_users.append(userid) return cls._set_forbidden_ids('forbidden:devid:', locked, unlocked, lock_users, mo)
def doGetUpdataInfo(cls, rpath): gameid = TyContext.RunHttp.getRequestParamInt('gameId') clientid = TyContext.RunHttp.getRequestParam('clientId') upversion = TyContext.RunHttp.getRequestParamInt('updateVersion') mo = TyContext.Cls_MsgPack() mo.setCmd('getUpdateInfo') if gameid == 0 or clientid == None: mo.setError(2, '参数错误') return mo TyContext.ftlog.debug('doGetUpdataInfo', gameid, clientid, upversion) verinfo = GameIncUpdate.instance().getNeedUpdateVersion(gameid, clientid, upversion) if verinfo: mo.setResult('gameId', gameid) mo.setResult('clientId', clientid) mo.setResult('updateVersion', verinfo._id) if verinfo._force == '1': mo.setResult('updateType', 'force') else: mo.setResult('updateType', 'optional') mo.setResult('updateSize', verinfo._size) mo.setResult('updateUrl', verinfo._path) mo.setResult('updateDes', verinfo._des) mo.setResult('jsMD5', verinfo._md5) else: mo.setError(1, '无可用更新') return mo
def doLoginByMobile(cls, rpath): isReturn, params = AccountCheck.login_check(rpath, 2) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountLogin.doLoginByMobile(params, mo) return mo
def doAddVersion(cls, rpath): gameId = TyContext.RunHttp.getRequestParamInt('gameId') md5 = TyContext.RunHttp.getRequestParam('md5') size = TyContext.RunHttp.getRequestParam('size') path = TyContext.RunHttp.getRequestParam('path') des = TyContext.RunHttp.getRequestParam('des') force = TyContext.RunHttp.getRequestParam('force') mo = TyContext.Cls_MsgPack() if not (md5 and size and path and des and force): mo.setResult('code', 1) mo.setResult('info', 'args error') return mo vermnr = GameIncUpdateConfiger.instance().find_vers_mnr(gameId) if vermnr == None: mo.setResult('code', 2) mo.setResult('info', 'error gameId') return mo id = vermnr.generateId() ver = Version(id, md5, size, path, des, force) if vermnr.addVersion(ver): mo.setResult('version', ver.generateToManager()) vermnr.save() else: mo.setResult('code', 3) mo.setResult('info', 'add error') return mo
def getGuestBindCode(cls, rpath): isReturn, params = AccountCheck.check_userv4(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() AccountUniversal.getSmsBindCode(params, mo) return mo