예제 #1
0
    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
예제 #2
0
파일: sdk91.py 프로젝트: soulsharepj/zdzl
 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]
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
파일: sdk91.py 프로젝트: soulsharepj/zdzl
 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
예제 #6
0
파일: sdk91.py 프로젝트: soulsharepj/zdzl
    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]
예제 #7
0
파일: uc.py 프로젝트: soulsharepj/zdzl
 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
예제 #8
0
파일: sdk91.py 프로젝트: hw233/twisted_zdzl
 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
예제 #9
0
파일: sdk91.py 프로젝트: hw233/twisted_zdzl
 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]
예제 #10
0
파일: sdk91.py 프로젝트: hw233/twisted_zdzl
 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]
예제 #11
0
 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
예제 #12
0
 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
예제 #13
0
 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