Beispiel #1
0
    def __check_ras_code__(cls, hwapps, rparam, issign):
        TyContext.ftlog.debug('__check_ras_code__->', rparam, issign, hwapps)
        sk = rparam.keys()
        sk.sort()
        ret = ""
        sign = ''
        for k in sk:
            if k == 'sign':
                sign = rparam[k]
            else:
                v = rparam[k]
                if isinstance(v, unicode):
                    v = v.encode('utf-8')
                else:
                    v = str(v)
                TyContext.ftlog.debug('k====>', k, 'v====>', v, 'ret==>', ret)
                ret = ret + str(k) + '=' + v + '&'
        sigdata = ret[:-1]

        if issign:
            private_key = hwapps.get('_pay_ras_privat_key_', None)
            if not private_key:
                private_key = _import_rsa_key_(hwapps['pay_ras_privat_key'])
                hwapps['_pay_ras_privat_key_'] = private_key
            TyContext.ftlog.debug('__check_ras_code__ sign code ', sign, sigdata, private_key)
            b = _sign_with_privatekey_pycrypto(sigdata, private_key)
            return b
        else:
            public_key = hwapps.get('_pay_ras_pub_key_', None)
            if not public_key:
                public_key = _import_rsa_key_(hwapps['pay_ras_pub_key'])
                hwapps['_pay_ras_pub_key_'] = public_key
            TyContext.ftlog.debug('__check_ras_code__ verify ', sign, sigdata, public_key)
            isOk = _verify_with_publickey_pycrypto(sigdata, sign, public_key)
            return isOk
Beispiel #2
0
    def doiToolsPayCallback(self, rpath):
        postData = TyContext.RunHttp.get_body_content()
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postData: ',
                              postData)
        paramslist = postData.split('&')
        params = {}
        for k in paramslist:
            paramdata = k.split('=')
            params[paramdata[0]] = paramdata[1]
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback postParams: ', params)

        for k in params.keys():
            params[k] = urllib.unquote(params[k])
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback postParams_urldecode: ',
            params)

        pristr = params['notify_data']
        sign = params['sign']
        data = rsa_decrypto_with_publickey(pristr, iTools_pubkey_str, 1)
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback iTools callback data: ', data)
        rparam = json.loads(data)
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback notify_data: ', rparam)
        try:
            orderPlatformId = rparam['order_id_com']
            amount = rparam['amount']
            account = rparam['account']
            third_orderid = rparam['order_id']
            result = rparam['result']
            user_id = rparam['user_id']
        except:
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Get params in iTools callback ERROR!'
            )
            return 'fail'
        if 0 != cmp('success', result):
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Charge failed!')
            errormsg = 'user use ' + account + ' charge ' + result
            PayHelperV4.callback_error(orderPlatformId, errormsg, rparam)

        # veriry_result = cls.rsa_verify(data, sign, iTools_pubkey_str)
        veriry_result = _verify_with_publickey_pycrypto(
            data, sign, _iTools_pubkey_py)
        if not veriry_result:
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Verify failed! data: %s, sign: %s, iTools_pubkey_str: %s'
                % (data, sign, iTools_pubkey_str))
            return 'fail'

        rparam['third_orderid'] = third_orderid
        PayHelperV4.callback_ok(orderPlatformId, amount, rparam)
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback user %s charge % successed! '
            % (user_id, amount))
        return 'success'
Beispiel #3
0
 def rsaVerify(cls, data, **kwargs):
     sign = kwargs['sign']
     partnerId = kwargs.get('partner_id', "")
     sellerId = kwargs.get('seller_id', "")
     partnerParam = cls.getPartnerParam(partnerId=partnerId, sellerId=sellerId)
     from Crypto.PublicKey import RSA
     public_key = RSA.importKey(partnerParam['rsaPubKey'])
     return _verify_with_publickey_pycrypto(data, sign, public_key)
Beispiel #4
0
 def _check_ras_code(cls, public_key, rparam):
     TyContext.ftlog.debug('_check_ras_code->', rparam)
     sign = rparam['tt_sign']
     sigdata = "&".join(k + "=" + str(rparam[k]) for k in sorted(rparam.keys()) \
                        if k != 'tt_sign' and k != 'tt_sign_type')
     TyContext.ftlog.debug('__check_ras_code__ verify ', sign, sigdata,
                           public_key)
     return _verify_with_publickey_pycrypto(sigdata, sign, public_key)
Beispiel #5
0
    def doKuaiYongPingGuoPayCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  rparam', rparam)

        '''
        uid = rparam['uid']
        subject = rparam['subject']
        version = rparam['version']
        '''

        thirdId = rparam['orderid']
        platformOrderId = rparam['dealseq']
        encryptData = rparam['notify_data']
        sign = rparam['sign']

        verifySign = ''.join([k + '=' + str(rparam[k]) + '&' for k in sorted(rparam.keys()) if k != 'sign'])
        verifySign = verifySign[0:-1]
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  verifySign', verifySign)
        # 公钥验签
        if not _verify_with_publickey_pycrypto(verifySign, sign, _kuaiyongpingguo_pubkey_py):
            TyContext.ftlog.error('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback public verify fail')
            return 'failed'

        # 公钥解密:加载.so文件,python嵌入动态库
        decryptData = rsa_decrypto_with_publickey(encryptData, KUAIYONGPINGGUO_PUB_KEY, 1)
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  decryptData', decryptData)

        # 将dealseq=20130219160809567&fee=0 .01&payresult=0转化为dict结构.
        responseStatus = {}
        attr = decryptData.split('&')
        for param in attr:
            params = param.split('=')
            responseStatus[params[0]] = params[1]
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  responseStatus', responseStatus)

        rparam['third_orderid'] = thirdId
        rparam['chargeType'] = 'kuaiyongpingguo'
        if 0 == int(responseStatus['payresult']):
            total_fee = int(float(responseStatus['fee']))
            chargeKey = 'sdk.charge:' + platformOrderId
            chargeInfo = TyContext.RedisPayData.execute('HGET', chargeKey, 'charge')
            chargeInfo = json.loads(chargeInfo)
            # 当返回的fee和商品定价不一致时,采用商品本身的价格
            TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  chargeInfo', chargeInfo,
                                  chargeInfo['chargeTotal'], total_fee)
            # if chargeInfo['chargeTotal'] != total_fee:
            #    total_fee = chargeInfo['chargeTotal']

            PayHelper.callback_ok(platformOrderId, total_fee, rparam)
            return 'success'
        else:
            errinfo = '支付失败'
            PayHelper.callback_error(platformOrderId, errinfo, rparam)
            return 'failed'
Beispiel #6
0
 def _check_sign(cls, rparam):
     sigdata = "&".join(k + "=" + str(rparam[k]) for k in sorted(rparam.keys()) \
                        if k != 'sign')
     si = unquote(rparam['sign'])
     TyContext.ftlog.info('doJinliCallback  ,param err,exception si', si)
     appkeyconfig = TyContext.Configure.get_global_item_json(
         'jinli_config', {})
     if 'api_key' in rparam and appkeyconfig:
         for item in appkeyconfig:
             if 0 == cmp(rparam['api_key'], item['appKey']):
                 jinli_pubkey_py = RSA.importKey(item['publicKey'])
                 break
     else:
         jinli_pubkey_py = _jinli_pubkey_py
     return _verify_with_publickey_pycrypto(sigdata, si, jinli_pubkey_py)
Beispiel #7
0
 def _check_sign(self, rparam):
     sigdata = "&".join(k + "=" + str(rparam[k]) for k in sorted(rparam.keys()) \
                        if k != 'sign')
     si = unquote(rparam['sign'])
     TyContext.ftlog.info('doJinliCallback  ,param err,exception si', si)
     platformOrderId = rparam['out_order_no']
     chargeInfo = self.load_order_charge_info(platformOrderId)
     appId = chargeInfo['appId']
     packageName = chargeInfo['packageName']
     changeName = chargeInfo['channelName']
     config = GameItemConfigure(appId).get_sdk_configure(
         changeName, packageName, 'jinli')
     jinli_publicKey = config['jinli_publicKey']
     return _verify_with_publickey_pycrypto(
         sigdata, si, self.loadRsaPublicKey(jinli_publicKey))
Beispiel #8
0
 def _check_sign(self, rparam):
     sigdata = "&".join(k + "=" + str(rparam[k]) for k in sorted(rparam.keys()) \
                        if k != 'sign')
     si = unquote(rparam['sign'])
     TyContext.ftlog.info('doJinliCallback  ,param err,exception si', si)
     appkeyconfig = TyContext.Configure.get_global_item_json(
         'jinli_config', {})
     jinli_pubkey_py = ""
     if 'api_key' in rparam and appkeyconfig:
         for item in appkeyconfig:
             if 0 == cmp(rparam['api_key'], item['appKey']):
                 jinli_pubkey_py = RSA.importKey(item['publicKey'])
                 break
     if not jinli_pubkey_py:
         config = GameItemConfigure.get_game_channel_configure_by_orderId(
             rparam['out_order_no'])
         TyContext.ftlog.debug('jinli getsdkconfig -->', config)
         jinli_pubkey_py = config.get('jinli_publicKey', "")
         if jinli_pubkey_py:
             jinli_pubkey_py = self.loadRsaPublicKey(jinli_pubkey_py)
             jinli_pubkey_py = RSA.importKey(jinli_pubkey_py)
         else:
             jinli_pubkey_py = _jinli_pubkey_py
     return _verify_with_publickey_pycrypto(sigdata, si, jinli_pubkey_py)
Beispiel #9
0
 def verifySign(self, transdata, sign, appKey):
     privateKey = self.loadRsaPrivateKey(appKey)
     return _verify_with_publickey_pycrypto(transdata, sign, privateKey)
Beispiel #10
0
 def rsaVerify(cls, data, sign, pubkey):
     pubkey = cls.loadRsaPublicKey(pubkey)
     from Crypto.PublicKey import RSA
     public_key = RSA.importKey(pubkey)
     return _verify_with_publickey_pycrypto(data, sign, public_key)