def generate_sign(self, mi, chargeinfo): uc_uid = mi.getParamStr('uc_uid', '') params = { 'amount': '%.2f' % chargeinfo['chargeTotal'], 'notifyUrl': PayHelperV4.getSdkDomain() + '/v1/pay/uc/callback', 'accountId': uc_uid, 'signType': 'MD5', 'callbackInfo': chargeinfo['userId'], 'cpOrderId': chargeinfo['platformOrderId'] } from hashlib import md5 signStr = ''.join(k + '=' + str(params[k]) for k in sorted(params) if k != 'sign' and k != 'signType') config = GameItemConfigure.get_game_channel_configure_by_orderId( params['cpOrderId'], 'uc') if not config: TyContext.ftlog.error( 'TuYouPayUcV4,can not find uc config for package:', chargeinfo['packageName']) config = {} apiKey = config.get('apiKey', '') signStr += apiKey m = md5(signStr) params['sign'] = m.hexdigest().lower() return params
def charge_data(self, mi): chargeInfo = self.get_charge_info(mi) chargeInfo['chargeData'] = { 'platformOrderId': chargeInfo['platformOrderId'], 'notifyUrl': PayHelperV4.getSdkDomain() + '/v1/pay/bdgame/callback' } return self.return_mo(0, chargeInfo=chargeInfo)
def charge_data(cls, mi): chargeinfo = cls.get_charge_info(mi) cporderid = chargeinfo.get('platformOrderId', '') config = GameItemConfigure.get_game_channel_configure_by_orderId(cporderid, 'more') appkey = config.get('more_appkey', '') chargeinfo['chargeData'] = {'callbackUrl': PayHelperV4.getSdkDomain() + '/v1/pay/more/callback'} return cls.return_mo(0, chargeInfo=chargeinfo)
def charge_data_direct(self, mi): chargeInfo = self.get_charge_info(mi) chargeInfo['chargeData'] = { 'platformOrderId': chargeInfo['platformOrderId'], 'notifyUrl': PayHelperV4.getSdkDomain() + '/v1/pay/ysdk/callback', 'paymentUrl': self.getPaymentUrl(mi, chargeInfo) } return self.return_mo(0, chargeInfo=chargeInfo)
def charge_data(cls, mi): chargeinfo = cls.get_charge_info(mi) notifyurl = PayHelperV4.getSdkDomain() + '/v1/pay/uc/callback' TyContext.ftlog.debug('TuYouPayUc charge_data callback url=', notifyurl) paydata = cls.generate_sign(mi, chargeinfo) chargeinfo['chargeData'] = {'notifyUrl': notifyurl, 'payData': paydata} return cls.return_mo(0, chargeInfo=chargeinfo)
def charge_data(self, mi): chargeinfo = self.get_charge_info(mi) orderPlatformId = chargeinfo['platformOrderId'] vivo_appId = mi.getParamStr('vivo_appId') appinfoconfig = TyContext.Configure.get_global_item_json('vivo_appkeys', {}) appdata = appinfoconfig.get(str(vivo_appId), None) if not appdata: config = GameItemConfigure(chargeinfo['appId']).get_game_channel_configure_by_package('vivo', chargeinfo[ 'packageName'], chargeinfo[ 'mainChannel']) appdata = { 'cpid': config.get('vivo_cpid'), 'appid': config.get('vivo_appId'), 'cpkey': config.get('vivo_cpkey'), } cpkey = appdata['cpkey'] url = 'https://pay.vivo.com.cn/vcoin/trade' params = { 'version': '1.0.0', # 'signature': '', 'cpId': appdata['cpid'], 'appId': appdata['appid'], 'cpOrderNumber': orderPlatformId, 'notifyUrl': PayHelperV4.getSdkDomain() + '/v1/pay/vivounion/callback', 'orderTime': datetime.datetime.now().strftime('%Y%m%d%H%M%S'), 'orderAmount': int(float(chargeinfo['chargeTotal']) * 100), 'orderTitle': chargeinfo['buttonName'], 'orderDesc': chargeinfo['buttonName'], 'extInfo': orderPlatformId } sign = self.__cal_sign(params, cpkey) params['signature'] = sign params['signMethod'] = 'MD5' response, _ = TyContext.WebPage.webget(url, params) TyContext.ftlog.debug('TuYouPayVivounionV4 -> trade response ->', response) try: datas = json.loads(response) if int(datas['respCode']) != 200: raise PayErrorV4(1, 'TuYouPayVivo charge_data->order push url response ERROR, rspmsg=', datas['respMsg']) if not self.__verify_sign(datas, cpkey, datas['signature']): raise PayErrorV4(1, 'vivo 验签失败!') chargeinfo['chargeData'] = {'vivoOrder': datas['orderNumber'], 'vivoSignature': datas['accessKey']} return self.return_mo(0, chargeInfo=chargeinfo) except: raise PayErrorV4(1, 'TuYouPayVivo charge_data->order push url return ERROR, response=', response)
def charge_data(cls, mi): chargeinfo = cls.get_charge_info(mi) TyContext.ftlog.info('TuYouPayPPZhuShou->chargeinfo', chargeinfo) orderNo = chargeinfo['platformOrderId'] fee = int(chargeinfo['chargeTotal']) productDesc = chargeinfo['buttonName'] notifyUrl = PayHelperV4.getSdkDomain() + '/v1/pay/ppzhushou/callback' chargeinfo['chargeData'] = { 'orderNo': orderNo, 'fee': fee, 'productDesc': productDesc, 'notifyUrl': notifyUrl } return cls.return_mo(0, chargeInfo=chargeinfo)
def charge_data(cls, mi): chargeinfo = cls.get_charge_info(mi) platformOrderId = chargeinfo['platformOrderId'] prodPrice = int(chargeinfo['chargeTotal']) * 100 charge = int(chargeinfo['chargeTotal']) prodName = chargeinfo['diamondName'] callbackAddress = PayHelperV4.getSdkDomain( ) + '/v1/pay/maopao/callback' prodPayMethod = '' maopaoConfig = TyContext.Configure.get_global_item_json( 'maopao_config', {}) phoneType = TyContext.UserSession.get_phone_type_name( chargeinfo['phoneType']) maopaoAppid = mi.getParamStr('maopao_appId') if not maopaoAppid: raise PayErrorV4(1, '【冒泡】maopao_appId参数 没有!') if charge in maopaoConfig['paysms'] and PHONETYPE_INTS[phoneType] != 1: prodPayMethod = 'sms' typroductId = chargeinfo['buttonId'] payPointNum = '-1' if maopaoAppid in maopaoConfig: maopaoAppidPayNum = maopaoConfig[maopaoAppid] if typroductId in maopaoAppidPayNum: payPointNum = maopaoAppidPayNum[typroductId] TyContext.ftlog.debug('doMaopaoCallback payInfo', 'maopaoAppid', maopaoAppid, 'typroductId', typroductId) else: raise PayErrorV4(1, '【冒泡】ID [%s] 没有[%s]计费点配置!', maopaoAppid, typroductId) else: prodPayMethod = '3rd' payPointNum = '1' TyContext.ftlog.debug('doMaopaoCallback payPointNum', payPointNum) chargeinfo['chargeData'] = { 'platformOrderId': platformOrderId, 'prodPrice': prodPrice, 'prodName': prodName, 'prodPayMethod': prodPayMethod, 'callbackAddress': callbackAddress, 'payPointNum': payPointNum } return cls.return_mo(0, chargeInfo=chargeinfo)
def charge_data(self, mi): chargeinfo = self.get_charge_info(mi) appId = chargeinfo['appId'] prodId = chargeinfo.get("prodId", chargeinfo['diamondId']) notifyurl = PayHelperV4.getSdkDomain() + '/v1/pay/360pay/callback' # prodconfig = TyContext.Configure.get_global_item_json('360pay_prodids', {}) # data = prodconfig[str(appId)].get(prodId, None) amount = chargeinfo['chargeTotal'] * 100 prodName = chargeinfo['buttonName'] chargeinfo['chargeData'] = { 'amount': amount, 'productId': prodId, 'productName': prodName, 'notifyUrl': notifyurl, 'rate': '1000' } return self.return_mo(0, chargeInfo=chargeinfo)
def _create_order(cls, phoneType, userId, amount, orderPlatformId, is_monthly): yiconfig = TyContext.Configure.get_global_item_json('yipay_config', {}) iccid = TyContext.UserSession.get_session_iccid(userId) imei = TyContext.UserSession.get_session_imei(userId) imsi = TyContext.UserSession.get_session_imsi(userId) params = {} if phoneType == PHONETYPE_CHINAMOBILE: params['corp_type'] = '1' elif phoneType == PHONETYPE_CHINAUNION: params['corp_type'] = '2' else: params['corp_type'] = '3' params['merc_id'] = cls.merc_id params['amount'] = str(amount) if iccid: params['iccid'] = iccid if imei: params['imei'] = imei if imsi: params['imsi'] = imsi params['user_id'] = userId params['app_id'] = cls.yipay_appid params['site_type'] = '3' params['scheme'] = '3' params['ver'] = '2.0' params['pay_code'] = yiconfig['paycode_config'][str(amount / 100)] # 0非包月, 2包月 params['is_monthly'] = is_monthly notifyurl = PayHelperV4.getSdkDomain() + '/v1/pay/yipay/callback' params['app_orderid'] = orderPlatformId params['ip'] = TyContext.RunHttp.get_client_ip() params['noti_url'] = notifyurl params['time'] = str(int(time.time())) params['sign'] = cls._cal_sign(params) response_msg, final_url = TyContext.WebPage.webget( cls.createorder_url, params) response = json.loads(response_msg) return response
def _get_pay_requset_params(cls, chargeInfo, mi, mo, bankIndex): cls.reqSeq += 1 rparam = {} # 如果同一个事务,发送第一次请求,失败,360认为此事务已被占用,必须使用不同的事务ID rparam['mer_trade_code'] = chargeInfo['platformOrderId'] + '-' + str(cls.reqSeq) rparam['rec_amount'] = float(chargeInfo['chargeTotal']) rparam['product_name'] = chargeInfo['buttonName'] rparam['mer_code'] = cls.merchant_code rparam['trans_service'] = cls.trans_service rparam['input_cha'] = cls.input_cha rparam['sign_type'] = cls.sign_type rparam['notify_url'] = PayHelperV4.getSdkDomain() + cls.notify_url rparam['return_url'] = cls.no_notify_url rparam['bank_code'] = cls.bank_code[bankIndex] if bankIndex in (1, 2, 3): if not PayHelperV4.checkCardParam(mi, mo): return None rparam['card_amount'] = mi.getParamInt('card_amount') rparam['card_number'] = mi.getParamStr('card_number') rparam['card_pwd'] = mi.getParamStr('card_pwd') rparam['sign'] = cls.__build_my_sign__(rparam) return rparam
def charge_data(self, mi): chargeinfo = self.get_charge_info(mi) appId = chargeinfo['appId'] diamondId = chargeinfo['buttonId'] orderPlatformId = chargeinfo['platformOrderId'] vivo_appId = mi.getParamStr('vivo_appId') if not vivo_appId: raise PayErrorV4(1, '沒有找到参数vivo_appId!') pramas = {} pramas['version'] = '1.0.0' pramas['orderTitle'] = chargeinfo['buttonName'] pramas['orderDesc'] = chargeinfo['buttonName'] pramas['orderAmount'] = '%.2f' % chargeinfo['chargeTotal'] appinfoconfig = TyContext.Configure.get_global_item_json( 'vivo_appkeys', {}) appdata = appinfoconfig.get(str(vivo_appId), None) if not appdata: config = GameItemConfigure( chargeinfo['appId']).get_game_channel_configure_by_package( 'vivo', chargeinfo['packageName'], chargeinfo['mainChannel']) appdata = { 'cpid': config.get('vivo_cpid'), 'appid': config.get('vivo_appId'), 'cpkey': config.get('vivo_cpkey'), } pramas['storeId'] = appdata['cpid'] pramas['appId'] = appdata['appid'] notifyurl = PayHelperV4.getSdkDomain() + '/v1/pay/vivo/callback' pramas['notifyUrl'] = notifyurl pramas['storeOrder'] = orderPlatformId timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S') pramas['orderTime'] = timestamp cpkey = appdata['cpkey'] sign = self.__cal_sign(pramas, cpkey) pramas['signature'] = sign pramas['signMethod'] = 'MD5' orderpushurl = 'https://pay.vivo.com.cn/vivoPay/getVivoOrderNum' TyContext.ftlog.debug('TuYouPayVivo->order push url->', orderpushurl) response, orderpushurl = TyContext.WebPage.webget(orderpushurl, pramas) try: datas = json.loads(response) if int(datas['respCode']) != 200: raise PayErrorV4( 1, 'TuYouPayVivo charge_data->order push url response ERROR, rspmsg=', datas['respMsg']) if not self.__verify_sign(datas, cpkey, datas['signature']): raise PayErrorV4(1, 'vivo 验签失败!') chargeinfo['chargeData'] = { 'vivoOrder': datas['vivoOrder'], 'vivoSignature': datas['vivoSignature'] } return self.return_mo(0, chargeInfo=chargeinfo) except: raise PayErrorV4( 1, 'TuYouPayVivo charge_data->order push url return ERROR, response=', response)
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 ', '验签失败')