Esempio n. 1
0
 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
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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)
Esempio n. 8
0
    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)
Esempio n. 9
0
 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)
Esempio n. 10
0
    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
Esempio n. 11
0
 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
Esempio n. 12
0
    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)
Esempio n. 13
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 ', '验签失败')