Beispiel #1
0
 def _verify_sign(cls, rparam, sign, pubkey):
     # data = "&".join(k + "=" + str(rparam[k]) for k in rparam.keys())
     data = str(rparam['transdata'])
     key = RSA.importKey(pubkey)
     TyContext.ftlog.error('doCoolpadPayCallback->ERROR, exception', data,
                           sign, key)
     return _verify_with_publickey_pycrypto_md5(data, sign, key)
Beispiel #2
0
    def doGeFuBigPaySdkCallback(self, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()

        TyContext.ftlog.info('TuYouPayGeFuBigSdk Callback ', rparam)

        strtransdata = rparam['transdata']
        sign = rparam['sign'].replace(' ', '+')

        params = eval(str(rparam['transdata']))
        TyContext.ftlog.info('TuYouPayGeFuBigSdk callback transdata ', params)

        orderPlatformId = params['cporderid']
        total_fee = float(params['money'])

        if rsacrypto._verify_with_publickey_pycrypto_md5(
                strtransdata, sign, _aibei_pubkey_py):
            if 0 == params['result']:
                rparam['third_orderid'] = params['transid']
                rparam['chargeType'] = 'gefubig'
                PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
                return 'SUCCESS'
            else:
                errinfo = '支付失败'
                PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
                return 'FAILURE'
        else:
            errinfo = '签名校验失败'
            PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
            return 'FAILURE'
Beispiel #3
0
    def charge_data(self, mi):
        chargeinfo = self.get_charge_info(mi)
        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data chargeinfo',
                             chargeinfo)
        geFuBigSdkconfig = TyContext.Configure.get_global_item_json(
            'geFuBigSdk_config', {})
        rparam = collections.OrderedDict()

        rparam['appid'] = geFuBigSdkconfig['appId']
        rparam['appuserid'] = str(chargeinfo['uid'])
        rparam['cporderid'] = chargeinfo['platformOrderId']
        # rparam['cpprivateinfo'] = '在线途游'
        rparam['currency'] = 'RMB'
        rparam['price'] = int(chargeinfo['chargeTotal'])
        rparam['waresid'] = int(geFuBigSdkconfig['waresId'])
        rparam['notifyurl'] = PayHelperV4.getSdkDomain(
        ) + '/v1/pay/gefubigsdk/callback'

        msg = json.dumps(rparam, separators=(',', ':'))
        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data msg', msg)
        msgsign = ''
        for i in msg:
            if i == '/':
                msgsign += '\/'
            else:
                msgsign += i

        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data msgsign', msgsign)
        signMsg = rsacrypto._sign_with_privatekey_openssl_md5(
            msgsign, _aibei_privkey)

        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data signMsg', signMsg)

        self.createorder_url = geFuBigSdkconfig['createOrderUrl']
        params = {}
        params['transdata'] = msgsign
        params['sign'] = signMsg
        params['signtype'] = 'RSA'
        responsemsg, _ = TyContext.WebPage.webget(self.createorder_url, params,
                                                  None, params)

        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data responsemsg',
                             responsemsg)

        responsemsg = urllib.unquote(responsemsg)
        responseDict = urlparse.parse_qs(responsemsg)
        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data Ditct',
                             responseDict)

        response = str(responseDict['transdata'][0])
        TyContext.ftlog.info(
            'TuYouPayGeFuBigSdk charge_data responseDict[transdata]',
            responseDict['transdata'], 'response', response)

        response = eval(str(response))
        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data eval response',
                             response)

        strtransdata = str(responseDict['transdata'][0])
        strsign = responseDict['sign'][0].replace(' ', '+')

        TyContext.ftlog.info('TuYouPayGeFuBigSdk charge_data strtransdata',
                             strtransdata, 'strsign', strsign)

        if rsacrypto._verify_with_publickey_pycrypto_md5(
                strtransdata, strsign, _aibei_pubkey_py):
            if response['transid']:
                TyContext.ftlog.info(
                    'TuYouPayGeFuBigSdk success userId transid',
                    response['transid'])
                chargeinfo['chargeData'] = {'transid': response['transid']}
                return self.return_mo(0, chargeInfo=chargeinfo)
            else:
                raise PayErrorV4(
                    1, 'TuYouGeFuDaEAiBeiSdk Failed ' + chargeinfo['userId'] +
                    'code' + responseDict['code'] + 'errmsg' +
                    response['errmsg'])
        else:
            raise PayErrorV4(1, 'TuYouPayGeFuBigSdk Failed ', '验签失败')