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)
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'
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 ', '验签失败')