def pay(cls, receipt, product_id, apple_urls=None): """ 去apple官网检查支付情况 """ if apple_urls is None: d = base64.decodestring(receipt) apple_urls = get_urls(d.find('"Sandbox"') != -1) host, port, url = apple_urls log.info('[AppStore]Pay check:%s, %s', apple_urls, product_id) jsonStr = json.dumps({"receipt-data": receipt}) headers = {"Content-type": "application/json"} data = http_post_ex(host, port, url, data=jsonStr, headers=headers, timeout=60, ssl=True) if not data: return False, None, None decodedJson = json.loads(data) status = decodedJson[u'status'] if status != 0: return False, None, decodedJson receipt = decodedJson['receipt'] #检查产品id if receipt['product_id'] != product_id: return False, None, decodedJson #检查订单号 torder = receipt['transaction_id'] return True, torder, decodedJson
def check_pay(self, CooOrderSerial): """ 检查是否支付成功,主动式 """ sign = md5('%s%s%s%s' %\ (self.app_id, self.ACT_CHECKPAY, CooOrderSerial, self.app_key)).hexdigest() params = dict(AppId=self.app_id, Act=self.ACT_CHECKPAY, CooOrderSerial=CooOrderSerial, Sign=sign,) data = http_post_ex(self.host, self.port, self.url, params) if data is None: return False, CODE_FAIL, 'timeout' data = json.loads(data) return data[self.RN_CODE] == '1', data[self.RN_CODE], data[self.RN_DESC]
def has_pay(self, sns, CooOrderSerial): """ 查询支付结果 """ params = dict(CooOrderSerial=CooOrderSerial) url = self.get_url(sns, URL_HAS_PAY) data = http_post_ex(self.port, self.port, url, params=params) if not data: return 0, EC_NET_ERR rs, code, desc = json.loads(data) if not rs: log.error('SNSClient.has_pay error:%s, %s, %s', rs, code, desc) return 0, (code, desc) return 1, None
def get_players(self, PageNo, PageSize): """ 获取应用的玩家列表 """ sign = md5('%s%s%s%s%s' %\ (self.app_id, self.ACT_PLAYERS, PageNo, PageSize, self.app_key)).hexdigest() params = dict(AppId=self.app_id, Act=self.ACT_PLAYERS, PageNo=PageNo, PageSize=PageSize, Sign=sign,) data = http_post_ex(self.host, self.port, self.url, params) if data is None: return False, CODE_FAIL, 'timeout' data = json.loads(data) return data[self.RN_CODE] == '1', data[self.RN_CODE], data
def login(self, sid, session_id): """ 登陆验证 """ # return 1, 0, None sign = md5('%s%s%s%s%s' % \ (self.app_id, self.ACT_LOGIN, sid, session_id, self.app_key)).hexdigest() params = dict(AppId=self.app_id, Act=self.ACT_LOGIN, Uin=sid, Sign=sign, SessionID=session_id) data = http_post_ex(self.host, self.port, self.url, params) if data is None: return 0, CODE_FAIL, 'timeout' data = json.loads(data) return data[self.RN_CODE] == '1', data[self.RN_CODE], data[self.RN_DESC]
def login(self, sid): """ 登陆检查,查询结果直接返回给前端处理 """ kw = dict(sid=sid) sign = self.get_sign(kw) data = dict(id=time.time(), service=self.LOGIN_SERVICE, game=self.game, data=kw, sign=sign ) rs = http_post_ex(self.sdk_host, 80, self.LOGIN_PATH, data=json_dumps(data)) if not rs: return '' return rs
def get_players(self, PageNo, PageSize): """ 获取应用的玩家列表 """ sign = md5('%s%s%s%s%s' %\ (self.app_id, self.ACT_PLAYERS, PageNo, PageSize, self.app_key)).hexdigest() params = dict( AppId=self.app_id, Act=self.ACT_PLAYERS, PageNo=PageNo, PageSize=PageSize, Sign=sign, ) data = http_post_ex(self.host, self.port, self.url, params) if data is None: return False, CODE_FAIL, 'timeout' data = json.loads(data) return data[self.RN_CODE] == '1', data[self.RN_CODE], data
def check_pay(self, CooOrderSerial): """ 检查是否支付成功,主动式 """ sign = md5('%s%s%s%s' %\ (self.app_id, self.ACT_CHECKPAY, CooOrderSerial, self.app_key)).hexdigest() params = dict( AppId=self.app_id, Act=self.ACT_CHECKPAY, CooOrderSerial=CooOrderSerial, Sign=sign, ) data = http_post_ex(self.host, self.port, self.url, params) if data is None: return False, CODE_FAIL, 'timeout' data = json.loads(data) return data[self.RN_CODE] == '1', data[self.RN_CODE], data[ self.RN_DESC]
def login(self, sid, session_id): """ 登陆验证 """ # return 1, 0, None sign = md5('%s%s%s%s%s' % \ (self.app_id, self.ACT_LOGIN, sid, session_id, self.app_key)).hexdigest() params = dict(AppId=self.app_id, Act=self.ACT_LOGIN, Uin=sid, Sign=sign, SessionID=session_id) data = http_post_ex(self.host, self.port, self.url, params) if data is None: return 0, CODE_FAIL, 'timeout' data = json.loads(data) return data[self.RN_CODE] == '1', data[self.RN_CODE], data[ self.RN_DESC]
def login(self, sid): """ 登陆检查,查询结果直接返回给前端处理 """ kw = dict(sid=sid) sign = self.get_sign(kw) data = dict(id=time.time(), service=self.LOGIN_SERVICE, game=self.game, data=kw, sign=sign) rs = http_post_ex(self.sdk_host, 80, self.LOGIN_PATH, data=json_dumps(data)) if not rs: return '' return rs
def area_legal(self): """登陆时区域是不是合法""" if not self._area_url or not self._area_legal: #未配置则所有人合法登陆 return True rpc = client_rpc.get_cur_rpc() data = urllib.urlencode({'ip':rpc.addr[0], 'check':str(0)}) host, port, url = self._area_url try: area = tools.http_post_ex(host, port, url, params=data, timeout=GPlayerMgr.TIME_OUT) area = json.loads(area) country = area['country'] log.debug('area_legal:%s in %s', rpc.addr[0], country) return not country or country in self._area_legal except BaseException as e: log.warn("area_legal error:%s", e) return True
def area_legal(self): """登陆时区域是不是合法""" if not self._area_url or not self._area_legal: #未配置则所有人合法登陆 return True rpc = client_rpc.get_cur_rpc() data = urllib.urlencode({'ip': rpc.addr[0], 'check': str(0)}) host, port, url = self._area_url try: area = tools.http_post_ex(host, port, url, params=data, timeout=GPlayerMgr.TIME_OUT) area = json.loads(area) country = area['country'] log.debug('area_legal:%s in %s', rpc.addr[0], country) return not country or country in self._area_legal except BaseException as e: log.warn("area_legal error:%s", e) return True