Пример #1
0
 def doXYZSDJPayCallback(cls, rpath):
     # 获取XY助手单机斗地主的appkey和paykey
     rparam = TyContext.RunHttp.convertArgsToDict()
     orderPlatformId = rparam["extra"]
     try:
         appid = rparam['orderid'].split('_')[0]
         keyvalue = TyContext.Configure.get_global_item_json(
             'XYDJSdk_config', {})
         if keyvalue and appid in keyvalue:
             appkey = keyvalue[appid]['appkey']
             paykey = keyvalue[appid]['paykey']
         else:
             config = GameItemConfigure.get_game_channel_configure_by_orderId(
                 orderPlatformId)
             appkey = config.get('appkey', "")
             paykey = config.get('paykey', "")
             if not appkey or not paykey:
                 TyContext.ftlog.error(
                     'TuYouPayXYZS->doXYZSDJPayCallback get appkey and paykey ERROR'
                 )
                 return cls._response_result(8)
     except:
         TyContext.ftlog.error(
             'TuYouPayXYZS->doXYZSDJPayCallback get appkey and paykey ERROR'
         )
         return cls._response_result(8)
     TyContext.ftlog.debug(
         'TuYouPayXYZS->doXYZSDJPayCallback rparam: [%s], appid: [%s], appkey: [%s], paykey: [%s]'
         % (rparam, appid, appkey, paykey))
     ChargeModel.save_third_pay_order_id(orderPlatformId,
                                         rparam.get('orderid', ''))
     return cls._docallback(appkey, paykey)
Пример #2
0
    def doVivoCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()

        TyContext.ftlog.info('doVivoCallback->rparam=', rparam)
        orderPlatformId = rparam['storeOrder']

        try:
            appinfoconfig = TyContext.Configure.get_global_item_json(
                'vivo_appkeys', {})
            cpId = rparam['storeId']
            appdata = appinfoconfig[str(cpId)]
            appKey = appdata['cpkey']
        except KeyError:
            config = GameItemConfigure.get_game_channel_configure_by_orderId(
                orderPlatformId, 'vivo')
            appKey = config.get('vivo_cpkey')
        sign = rparam['signature']
        if not cls.__verify_sign(rparam, appKey, sign):
            return 'ERROR'
        total_fee = float(rparam['orderAmount'])
        ChargeModel.save_third_pay_order_id(rparam.get('vivoOrder', ''))
        isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'SUCCESS'
        else:
            return 'ERROR'
Пример #3
0
    def doPayAiSiCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('TuYouPayAiSi->rparam', rparam)
        try:
            orderPlatformId = rparam['billno']
            total_fee = float(rparam['amount'])
            status = int(rparam['status'])
            sign = rparam['sign']
            third_orderid = rparam['order_id']
            appid = rparam['app_id']
        except Exception as e:
            TyContext.ftlog.error('TuYouPayAiSi->doPayAiSiCallback Error: ', e)
            return 'fail'

        # 验签
        if not cls.VerifySign(sign, rparam):
            TyContext.ftlog.error(
                'TuYouPayMiDaShi->doMiDaShiPayCallback Verify sign ERROR!')
            return 'fail'

        rparam['third_orderid'] = third_orderid
        rparam['chargeType'] = 'aisi'
        if status == 0:
            ChargeModel.save_third_pay_order_id(orderPlatformId, third_orderid)
            PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
            return 'success'
        elif status == 1:
            return 'success'
        else:
            errinfo = '支付失败'
            PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
            return 'fail'
Пример #4
0
    def __check_callback(cls, rparam, appKey):
        signQuery = rparam['signature']
        del rparam['signature']

        sk = rparam.keys()
        sk.sort()
        queryStr = ""
        for k in sk:
            queryStr = queryStr + str(k) + '=' + str(rparam[k]) + '&'
        signData = queryStr[:-1]
        TyContext.ftlog.info('doXiaomiCallback->queryStr=', queryStr,
                             'signData=', signData)

        a = hmac.new(appKey, signData, sha1)
        sign = a.digest().encode('hex').upper()
        if signQuery.upper() != sign:
            TyContext.ftlog.info(
                'doXiaomiCallback->ERROR, sign error !! signQuery=', signQuery,
                'sign=', sign)
            return '{"errcode":1525}'

        orderPlatformId = rparam['cpOrderId']

        total_fee = float(rparam['payFee']) / 100
        ChargeModel.save_third_pay_order_id(orderPlatformId,
                                            rparam.get('orderId'))
        isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return '{"errcode":200}'
        else:
            return '{"errcode":1506}'
Пример #5
0
    def doLenovoDanjiCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.info('doLenovoDanjiCallback->rparam=', rparam)
        try:
            transdata = rparam['transdata']
            verifyData = transdata
            signStr = rparam['sign']
            transdata = json.loads(transdata)
            TyContext.ftlog.debug(
                'TuYouPayLenovoDanji->doLenovoDanjiCallback transdata: ',
                transdata)
            orderPlatformId = transdata['cpprivate']
            appid = transdata['appid']
            total_fee = transdata['money']
            result = transdata['result']
            paytype = transdata['paytype']
            ChargeModel.save_third_pay_order_id(orderPlatformId,
                                                transdata.get('transid'))
        except Exception as e:
            TyContext.ftlog.error(
                'TuYouPayLenovoDanji->doLenovoDanjiCallback ERROR:', e)
            return 'FAILURE'

        if '0' != str(result):
            TyContext.ftlog.error(
                'TuYouPayLenovoDanji->doLenovoDanjiCallback ERROR, sign error !! rparam=',
                rparam, 'sign=', sign)
            PayHelperV4.callback_error(orderPlatformId, '支付失败', transdata)
            return 'FAILURE'

        appkeyconfig = TyContext.Configure.get_global_item_json(
            'lenovodanji_config', {})
        if not appkeyconfig:
            TyContext.ftlog.error(
                'TuYouPayLenovoDanji->doLenovoDanjiCallback Doesn\'t find appkeyconfig by lenovodanji_config'
            )

        for item in appkeyconfig:
            if 0 == cmp(appid, item['appId']):
                lenovodanji_prikey_str = item['appKey']
                break
        else:
            TyContext.ftlog.error(
                'TuYouPayLenovoDanji->doLenovoDanjiCallback Doesn\'t find appkey by appid:',
                appid)
            config = GameItemConfigure.get_game_channel_configure_by_orderId(
                orderPlatformId, 'lenovodj')
            lenovodanji_prikey_str = cls.loadRsaPrivateKey(
                config.get('lenovo_appKey', ""))

        if not cls.verifySign(lenovodanji_prikey_str, verifyData, signStr):
            TyContext.ftlog.error(
                'TuYouPayLenovoDanji->doLenovoDanjiCallback ERROR, sign error')
            return 'FAILURE'

        transdata['sub_paytype'] = paytype
        PayHelperV4.callback_ok(orderPlatformId,
                                float(total_fee) / 100, transdata)
        return 'SUCCESS'
Пример #6
0
 def doMeizuPayCallback(cls, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.info('doMeizuPayCallback rparam', rparam)
     cp_order_id = None
     try:
         cp_order_id = rparam['cp_order_id']
         total_price = float(rparam['total_price'])
         trade_status = rparam['trade_status']
         ChargeModel.save_third_pay_order_id(cp_order_id,
                                             rparam.get('order_id', ''))
     except Exception as e:
         TyContext.ftlog.error('doMeizuCallback param error, exception', e,
                               'cp_order_id', cp_order_id)
         return json.dumps({
             'code': 900000,
             'message': '参数不匹配',
             'redirect': '',
             'value': None
         })
     if not cls._check_sign(rparam):
         TyContext.ftlog.error('TuYouPayMeizu _check_sign failed',
                               cp_order_id)
         return json.dumps({
             'code': 900000,
             'message': '签名错误',
             'redirect': '',
             'value': None
         })
     if trade_status == '3':
         PayHelperV4.callback_ok(cp_order_id, total_price, rparam)
         return json.dumps({
             'code': 200,
             'message': '充值成功',
             'redirect': '',
             'value': None
         })
     elif trade_status == '4':
         PayHelperV4.callback_error(cp_order_id, '订单取消', rparam)
         return json.dumps({
             'code': 900000,
             'message': '',
             'redirect': '',
             'value': None
         })
     elif trade_status == '1' or trade_status == '2':
         return json.dumps({
             'code': 90000,
             'message': '订单处理中',
             'redirect': '',
             'value': None
         })
     elif trade_status == '5':
         return json.dumps({
             'code': 90000,
             'message': '订单异常取消',
             'redirect': '',
             'value': None
         })
Пример #7
0
    def doIappayPayCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        transdata = rparam['transdata']
        transdata = json.loads(transdata)
        sign = rparam['sign']
        appid = transdata['appid']
        signtype = rparam['signtype']
        iappayConfig = TyContext.Configure.get_global_item_json(
            'iappay_config', {})
        try:
            pubkey = iappayConfig.get(appid)['pubkey'] if iappayConfig.get(
                appid) else ""
            orderPlatformId = transdata['cporderid']
            total_fee = transdata['money']
            result = transdata['result']
            ChargeModel.save_third_pay_order_id(orderPlatformId,
                                                transdata.get('transid'))
        except Exception as e:
            TyContext.ftlog.error('doIappayPayCallback->ERROR, exception', e,
                                  'rparam', transdata)
            return 'error'
        if not pubkey:
            chargeKey = 'sdk.charge:' + orderPlatformId
            chargeInfo = TyContext.RedisPayData.execute(
                'HGET', chargeKey, 'charge')
            if chargeInfo:
                chargeInfo = TyContext.strutil.loads(chargeInfo,
                                                     decodeutf8=True)
            else:
                return 'failed'
            chargeType = chargeInfo['chargeType']
            sdk = chargeType.split('.')[0]
            config = GameItemConfigure.get_game_channel_configure_by_orderId(
                orderPlatformId, sdk)
            pubkey = config.get('iappay_pubKey')
            if not pubkey:
                TyContext.ftlog.error(
                    'doIappayPayCallback->ERROR,cannot get sdkconfig for',
                    appid)
                return 'failed'
            pubkey = cls.loadRsaPublicKey(pubkey)
        if not cls._verify_sign(rparam, sign, pubkey):
            errinfo = '支付失败'
            PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
            return 'failed'

        if result != 0:
            errinfo = '支付失败'
            TyContext.ftlog.error(
                'doIappayPayCallback->ERROR, exception, result not 0')
            PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
            return 'failed'
        PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        return 'success'
Пример #8
0
    def doMaopaoPayCallback(cls, rpath):

        rparam = TyContext.RunHttp.convertArgsToDict()

        maopaoInfo = {}
        maopaoInfo['orderId'] = rparam['orderId']
        maopaoInfo['skyId'] = rparam['skyId']
        maopaoInfo['resultCode'] = rparam['resultCode']
        maopaoInfo['payNum'] = rparam['payNum']
        maopaoInfo['cardType'] = rparam['cardType']
        maopaoInfo['realAmount'] = rparam['realAmount']
        maopaoInfo['payTime'] = rparam['payTime']
        maopaoInfo['failure'] = rparam['failure']
        maopaoInfo['signMsg'] = rparam['signMsg']

        rparam['third_orderid'] = maopaoInfo['payNum']
        rparam['chargeType'] = 'maopao'
        maopaoConfig = TyContext.Configure.get_global_item_json(
            'maopao_config', {})
        md5key = maopaoConfig['md5key']

        signParams = rparam['orig_uri']
        signInfo = signParams[signParams.find('?') +
                              1:signParams.find('signMsg') -
                              1] + '&' + 'key' + '=' + md5key

        TyContext.ftlog.info('doMaopaoCallback signInfo', signInfo)

        total_fee = int(maopaoInfo['realAmount']) / 100
        orderPlatformId = maopaoInfo['orderId']

        sign = cls._cal_sign(signInfo)
        TyContext.ftlog.debug('doMaopaoCallback  sign', sign, 'signMsg',
                              maopaoInfo['signMsg'], 'signInfo', signInfo)

        if sign == maopaoInfo['signMsg']:
            if int(maopaoInfo['realAmount']) > 0:
                ChargeModel.save_third_pay_order_id(orderPlatformId,
                                                    maopaoInfo['payNum'])
                PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
                TyContext.ftlog.info('doMaopaoCallback->SUCCESSFUL rparam',
                                     rparam)
                return 'result=0'
            else:
                errinfo = '支付失败'
                PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
                TyContext.ftlog.error('doMaopaoCallback->ERROR, failDesc',
                                      errinfo, 'rparam', rparam)
        else:
            errinfo = '签名校验失败'
            PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
            TyContext.ftlog.error('doMaopaoCallback->ERROR, failDesc', errinfo,
                                  'rparam', rparam)
        return 'result=0'
Пример #9
0
    def doMomoCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        momo_paykeys = TyContext.Configure.get_global_item_json(
            'momo_paykeys', {})
        TyContext.ftlog.debug('doMomoCallback->rparam=', rparam)
        try:
            orderPlatformId = rparam['app_trade_no']
            trade_no = rparam['trade_no']
            appid = rparam['appid']
            postparams = {}
            postparams['appid'] = appid
            postparams['sign'] = rparam['sign']
            postparams['trade_no'] = trade_no
            postparams['app_secret'] = momo_paykeys[str(appid)]
            response, _ = TyContext.WebPage.webget(cls.checkorder_url,
                                                   postdata_=postparams)
            response = json.loads(response)
            if int(response['ec']) != 0:
                TyContext.ftlog.error(
                    'doMomoCallback->ERROR, check momo order fail, response=',
                    response)
                return 'fail'
        except:
            TyContext.ftlog.exception()
            TyContext.ftlog.error('doMomoCallback->ERROR, rparam=', rparam)
            return 'fail'

        if int(rparam['currency_type']) == 0:
            total_fee = float(rparam['total_fee'])
        else:
            total_fee = float(rparam['total_fee']) / 10
        rparam['third_orderid'] = trade_no
        rparam['chargeType'] = 'momo'
        # channel_type   string 支付渠道 0-苹果 1-支付宝 2-短信 3-陌陌币 4-网页版
        rparam['sub_paytype'] = rparam['channel_type']
        try:
            chargeKey = 'sdk.charge:' + orderPlatformId
            chargeInfo = TyContext.RedisPayData.execute(
                'HGET', chargeKey, 'charge')
            if chargeInfo == None:
                chargeInfo = {}
            else:
                chargeInfo = TyContext.strutil.loads(chargeInfo,
                                                     decodeutf8=True)
            chargeInfo['sub_paytype'] = rparam['channel_type']
            TyContext.RedisPayData.execute('HSET', chargeKey, 'charge',
                                           json.dumps(chargeInfo))
        except:
            TyContext.ftlog.error()

        ChargeModel.save_third_pay_order_id(orderPlatformId, trade_no)
        isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        return 'success'
Пример #10
0
 def save_order(self, chargeInfo, consumeInfo):
     orderId = chargeInfo['platformOrderId']
     datas = [
         'state',
         PayConst.CHARGE_STATE_BEGIN,
         'createTime',
         datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
         'charge',
         json.dumps(chargeInfo),
     ]
     if consumeInfo:
         datas.extend(['consume', json.dumps(consumeInfo)])
     ChargeModel.save_order(orderId, *datas)
Пример #11
0
 def doCallback(cls, rpath):
     data = TyContext.RunHttp.get_body_content()
     rparams = json.loads(data)
     platformOrderId = rparams['orderId']
     TyContext.ftlog.debug('TuYouPayKuaiwan->doCallback, rparams=', rparams)
     if not cls.check_sign(rparams):
         TyContext.ftlog.error('TuYouPayKuaiwan->ERROR, sign error !! rparam=', rparams)
         return 'failure'
     # do charge
     ChargeModel.save_third_pay_order_id(platformOrderId, rparams.get('trade_sn', ''))
     isOk = PayHelperV4.callback_ok(platformOrderId, -1, rparams)
     if isOk:
         return 'success'
     else:
         return 'failure'
Пример #12
0
 def doCallback(cls, rpath):
     rparams = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.debug('TuYouPayLetv->doCallback, rparams=', rparams)
     order_id = rparams['cooperator_order_no']
     if not cls.check_sign(rparams):
         TyContext.ftlog.error('TuYouPayLetv->ERROR, sign error !! rparam=',
                               rparams)
         return 'fail'
     ChargeModel.save_third_pay_order_id(order_id,
                                         rparams.get('lepay_order_no', ''))
     # do charge
     is_ok = PayHelperV4.callback_ok(order_id, -1, rparams)
     if is_ok:
         return 'success'
     else:
         return 'fail'
Пример #13
0
 def doCallback(cls, rpath):
     rparams = TyContext.RunHttp.convertArgsToDict()
     platformOrderId = rparams['app_order_id']
     TyContext.ftlog.debug('TuYouPayPapa->doCallback, rparams=', rparams)
     if not cls.check_sign(rparams):
         TyContext.ftlog.error('TuYouPayPapa->ERROR, sign error !! rparam=',
                               rparams)
         return 'failure'
     # do charge
     ChargeModel.save_third_pay_order_id(
         platformOrderId, rparams.get('pa_open_order_id', ''))
     isOk = PayHelperV4.callback_ok(platformOrderId, -1, rparams)
     if isOk:
         return 'success'
     else:
         return 'failure'
Пример #14
0
    def do360payCallback(cls, rpath):
        TyContext.ftlog.debug('do360payCallback start')
        rparam = TyContext.RunHttp.convertArgsToDict()

        try:
            orderPlatformId = rparam['app_order_id']
            appId = orderid.get_appid_frm_order_id(orderPlatformId)
            sign = rparam['sign']
        except:
            TyContext.ftlog.info(
                'do360payCallback->ERROR, param error !! rparam=', rparam)
            return "error"

        clientId = rparam['app_ext1']
        app_key = rparam['app_key']
        client_ids = TyContext.Configure.get_game_item_json(
            appId, 'account.360.client.version', {})
        clientver = ''
        if clientId in client_ids:
            clientver = str(client_ids[clientId])
        client_secret = TyContext.Configure.get_game_item_str(
            appId, 'account.360.client.secret.' + app_key)
        if not client_secret:
            config = GameItemConfigure.get_game_channel_configure_by_orderId(
                orderPlatformId, "360")
            client_secret = config.get('QHOPENSDK_APPSECRET')
        if not client_secret:
            TyContext.ftlog.error(
                'Account360 the appinfo of QIHOO(appKey:%s)  is not found !' %
                app_key)
            return "error"

        # 签名校验
        if not cls.__verify_sign(rparam, client_secret, sign):
            TyContext.ftlog.error(
                'TuyouPay360pay.do360payCallbacksign verify error !!')
            return "error"

        total_fee = float(rparam['amount']) / 100
        ChargeModel.save_third_pay_order_id(orderPlatformId,
                                            rparam.get('order_id', ''))
        isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return "ok"
        else:
            return "error"
Пример #15
0
 def handle_callback(self, rpath):
     rparams = TyContext.RunHttp.convertArgsToDict()
     platformOrderId = rparams['out_trade_no']
     aliOrder = rparams['trade_no']
     config = GameItemConfigure.get_game_channel_configure_by_orderId(
         platformOrderId, 'alipayapp')
     pubkey = config.get('alipay_publick_key')
     if not self.rsaVerify(self.createLinkString(rparams), rparams['sign'],
                           pubkey):
         return 'failure'
     if rparams['trade_status'] != 'TRADE_SUCCESS' and rparams[
             'trade_status'] != 'TRADE_SUCCESS':
         return 'failure'
     total_fee = rparams['total_amount']
     rparams['third_orderid'] = aliOrder
     ChargeModel.save_third_pay_order_id(platformOrderId, aliOrder)
     PayHelperV4.callback_ok(platformOrderId, total_fee, rparams)
     return 'success'
Пример #16
0
    def doCallback(self, rpath):
        rparams = TyContext.RunHttp.convertArgsToDict()
        order_id = rparams['orderId']
        price_coin = rparams['price']
        config = TyContext.Configure.get_global_item_json('ysdk_keys', {})
        app_id = rparams['ysdk_appid']
        ysdk_model = rparams['ysdk_model']
        ysdk_openId = rparams.get('ysdk_openid', '')
        ChargeModel.save_third_pay_order_id(order_id, 'openId:%s' % ysdk_openId)
        try:
            self.request_url = 'https://' + config['%s_url' % ysdk_model]
            app_key = config[app_id]['%s_appKey' % ysdk_model]
        except:
            config = GameItemConfigure.get_game_channel_configure_by_orderId(order_id, 'ysdk')
            self.request_url = 'https://' + config.get('ysdk_%s_url' % ysdk_model, "")
            app_key = config.get('ysdk_%s_appKey' % ysdk_model, "")
            if not self.request_url or not app_key:
                return 'check sign fail'
        # 验签
        if not self.check_sign(rparams):
            return 'check sign fail'

        # 轮询金币是否到账
        has_balance = self.get_balance_m('/mpay/get_balance_m', app_key, rparams)

        if not has_balance:
            return '充值金币未到账'

        # 尝试扣除金币
        pay_response = self.pay_m('/mpay/pay_m', app_key, rparams)
        if 0 == int(pay_response['ret']) and order_id == pay_response['billno']:
            # 尝试发货
            isOk = PayHelperV4.callback_ok(order_id, -1, rparams)
            if isOk:
                return '发货成功'
            else:
                # 发货失败尝试取消扣费
                return self.cancel_pay_m('/mpay/cancel_pay_m', app_key, rparams)
        elif 1004 == int(pay_response['ret']):
            return '余额不足'
        elif 1018 == int(pay_response['ret']):
            return '登录校验失败'
        else:
            return '扣费失败'
Пример #17
0
    def doDuoKuCallback(cls, rpath):
        TyContext.ftlog.info('doDuoKuCallback start')
        rparam = TyContext.RunHttp.convertArgsToDict()

        try:
            shortOrderPlatformId = rparam['cpdefinepart']
            orderPlatformId = ShortOrderIdMap.get_long_order_id(shortOrderPlatformId)
            appId = rparam['appid']
            sign = rparam['sign']
            unit = rparam['unit']
            amount = rparam['amount']
            status = rparam['status']
            mobileId = rparam.get('phone', '')
        except:
            TyContext.ftlog.info('doDuoKuCallback->ERROR, param error !! rparam=', rparam)
            TyContext.ftlog.exception()
            return 'failure'
        if status != 'success':
            PayHelperV4.callback_error(orderPlatformId, 'pay fail', rparam)
            return 'failure'
        paykey_dict = TyContext.Configure.get_global_item_json('duoku_paykeys', {})
        paykey = paykey_dict.get(appId, "")
        if not paykey:
            config = GameItemConfigure.get_game_channel_configure_by_orderId(orderPlatformId)
            paykey = config.get('dksdk_appsecret', "")
            if not paykey:
                TyContext.ftlog.error("doDuokuCallback", "cannot get %s sdkconfig" % appId)
        # 签名校验
        if not cls.__verify_sign(rparam, paykey, sign):
            return 'failure'

        if unit == 'fen':
            total_fee = float(amount) / 100
        else:
            total_fee = float(amount)
        ChargeModel.save_third_pay_order_id(orderPlatformId, rparam.get('orderid'))
        rparam['chargeType'] = 'duoku'
        rparam['third_orderid'] = rparam['orderid']
        PayHelperV4.set_order_mobile(orderPlatformId, mobileId)
        isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'success'
        else:
            return 'failure'
Пример #18
0
 def doCallback(cls, rpath):
     postData = TyContext.RunHttp.get_body_content()
     TyContext.ftlog.info("postData", postData)
     response = urlparse.parse_qs(postData)
     order = response['order'][0].strip('"')
     sign = response['sign'][0].strip('"')
     jsonData = json.loads(order)
     platformOrderId = jsonData['game_order_id']
     if not rsaVerify(order, sign, 'jolo'):
         TyContext.ftlog.debug('TuYouPayJolo->doCallback',
                               'order=%s' % order, 'sign=%s' % sign)
         return 'sign error'
     ChargeModel.save_third_pay_order_id(platformOrderId,
                                         jsonData.get('jolo_order_id', ''))
     isOk = PayHelperV4.callback_ok(platformOrderId, -1, jsonData)
     if isOk:
         return 'success'
     else:
         return 'error'
Пример #19
0
    def doCallback(cls, rpath):
        rparams = TyContext.RunHttp.convertArgsToDict()

        content = rparams['content']
        content_json = json.loads(content)
        orderId = content_json['out_trade_no']

        if not cls.verify_sign(rparams):
            TyContext.ftlog.info('TuYouPayWandoujiadanji->sign verify ERROR')
            return "fail"

        total_fee = int(float(content_json['money']))
        total_fee = int(total_fee / 100)
        ChargeModel.save_third_pay_order_id(orderId,
                                            content_json.get('orderId', ''))
        is_ok = PayHelperV4.callback_ok(orderId, total_fee, rparams)
        if is_ok:
            return 'success'
        else:
            return 'fail'
Пример #20
0
    def doVivoCallback(cls, rpath):
        rparams = TyContext.RunHttp.convertArgsToDict()
        appId = rparams.get('verdorCode')
        platformOrderId = rparams.get('orderId')
        config = GameItemConfigure.get_game_channel_configure_by_orderId(
            platformOrderId, '16wifi')

        md5key = config.get('16wifi_key')

        signStr = '&'.join(k + '=' + rparams[k] for k in sorted(rparams.keys())
                           if rparams[k] and k != 'sign')

        signStr += '&key=%s' % md5key
        m = md5(signStr)
        if m.hexdigest().upper() != rparams['sign']:
            return {'ReturnCode': 1}
        total_fee = rparams.get('cashAmount')
        ChargeModel.save_third_pay_order_id(platformOrderId,
                                            rparams.get('payCode'))
        PayHelperV4.callback_ok(platformOrderId, total_fee, rparams)
        return {'ReturnCode': 200}
Пример #21
0
    def doTongBuTuiPayCallback(cls, rpath):
        success = json.dumps({'status': 'success'})
        fail = json.dumps({'status': 'fail'})
        params = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('TuYouPayTongBuTui->doPayTongBuTuiCallback Request Params: ', params)
        rparam = OrderedDict()
        try:
            rparam['source'] = params['source']
            rparam['trade_no'] = params['trade_no']
            rparam['amount'] = params['amount']
            rparam['partner'] = params['partner']
            rparam['paydes'] = params['paydes']
            rparam['debug'] = params['debug']
            rparam['tborder'] = params['tborder']
            rparam['sign'] = params['sign']
        except Exception as e:
            TyContext.ftlog.error('TuYouPayTongBuTui->doPayTongBuTuiCallback Get Params ERROR. ', e)
            return fail
        # appid = 150918, appkey = rBODan#VKXuF8He2B4Olyn@KhXu8RG2q
        # 获取key,根据partner
        keyvalue = TyContext.Configure.get_global_item_json('tongbutui_config', {})  # 获取同步推的key
        for value in keyvalue:
            if 0 == cmp(value['appid'], params['partner']):
                appkey = value['appkey']
                break
        else:
            TyContext.ftlog.error('TuYouPayHaiMaWan->doHaiMaWanPayCallback get appkey ERROR')
            return 'fail'
        rparam['key'] = appkey
        sign = cls.generate_verifysign(rparam)
        if 0 != cmp(sign, rparam['sign']):
            TyContext.ftlog.error('TuYouPayHaiMaWan->doHaiMaWanPayCallback verify sign ERROR.'
                                  'sign: [%s], verify_sign: [%s]' % (rparam['sign'], sign))
            return fail

        # 通知游戏服发货
        rparam['third_orderid'] = rparam['tborder']
        ChargeModel.save_third_pay_order_id(rparam['trade_no'], rparam['tborder'])
        PayHelperV4.callback_ok(rparam['trade_no'], float(rparam['amount']) / 100, rparam)
        return success
Пример #22
0
 def handle_callback(self, rpath):
     rparams = TyContext.RunHttp.convertArgsToDict()
     sigStr = '&'.join(k + '=' + rparams[k] for k in sorted(rparams)
                       if k != 'sign' and rparams[k])
     platformOrderId = rparams['cp_order_id']
     config = GameItemConfigure.get_game_channel_configure_by_orderId(
         platformOrderId, 'liebao')
     md5key = config.get('liebao_key', 'kxkSJClvdDidZ7AOc9T1wGfLQiXd6r8P')
     sigStr += md5key
     from hashlib import md5
     m = md5(sigStr)
     if m.hexdigest().lower() != rparams['sign']:
         return 'fail'
     if rparams['status'] != "2":
         TyContext.ftlog.info("liebao callback fail,status error",
                              rparams['status'])
         return 'fail'
     total_fee = rparams['total_price']
     ChargeModel.save_third_pay_order_id(platformOrderId,
                                         rparams['order_id'])
     PayHelperV4.callback_ok(platformOrderId, total_fee, rparams)
     return 'success'
Пример #23
0
 def doHuaWeiCallback(self, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.info('doHuaWeiCallback->rparam=', rparam)
     try:
         orderPlatformId = rparam['requestId']
         clientId = rparam['extReserved']
         huawei_config = TyContext.Configure.get_global_item_json(
             'huawei_config', {})
         try:
             hwapps = huawei_config.get[clientId]
         except KeyError:
             config = GameItemConfigure.get_game_channel_configure_by_orderId(
                 orderPlatformId, 'huawei')
             hwapps = {
                 'pay_ras_pub_key': config.get('huaWei_publicKey'),
                 'pay_ras_privat_key': config.get('huaWei_privateKey'),
             }
         isOk = self.__check_ras_code__(hwapps, rparam, False)
         if isOk:
             total_fee = float(rparam['amount'])
             try:
                 # huawei sdk also use payType, which is tuyou's sub_paytype
                 rparam['sub_paytype'] = rparam['payType']
                 del rparam['payType']
             except:
                 pass
             ChargeModel.save_third_pay_order_id(orderPlatformId,
                                                 rparam.get('orderId', ''))
             isOk = PayHelper.callback_ok(orderPlatformId, total_fee,
                                          rparam)
             if isOk:
                 return '{"result":0}'
             else:
                 return '{"result":3}'
         else:
             return '{"result":1}'
     except:
         TyContext.ftlog.exception()
         return '{"result":94}'
Пример #24
0
 def doWanDouJiaCallback(self, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.info('doWanDouJiaCallback->rparam=', rparam)
     transdata = rparam['content']
     datas = json.loads(transdata)
     appId = datas['appKeyId']
     orderPlatformId = datas['out_trade_no']
     try:
         appkeyconfig = TyContext.Configure.get_global_item_json(
             'wannew_appkeys', {})
         appKey = appkeyconfig[str(appId)]
     except:
         config = GameItemConfigure.get_game_channel_configure_by_orderId(
             orderPlatformId, 'wannew')
         TyContext.ftlog.debug('wandoujia,get sdk config -->', config)
         if not config:
             TyContext.ftlog.exception()
             TyContext.ftlog.info(
                 'doWanDouJiaCallback->ERROR, sign error !! transdata=',
                 transdata)
             return 'Fail'
         appKey = config.get('wannew_secretKey')
         # appKey = self.appkeys[str(appId)]
     sign = rparam['sign']
     if self.verifySign(transdata, sign, appKey) != True:
         TyContext.ftlog.info(
             'doWanDouJiaCallback->ERROR, sign error !! transdata=',
             transdata, 'sign=', sign)
         return 'Fail'
     trade_status = 'TRADE_FINISHED'
     total_fee = int(float(datas['money']))
     total_fee = int(total_fee / 100)
     ChargeModel.save_third_pay_order_id(orderPlatformId,
                                         datas.get('orderId', ''))
     isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
     if isOk:
         return 'Success'
     else:
         return 'Fail'
Пример #25
0
    def doLenovoCallback(self, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()

        TyContext.ftlog.info('doLenovoCallback->rparam=', rparam)
        transdata = rparam['transdata']

        try:
            datas = json.loads(transdata)
            appId = datas['appid']
        except:
            TyContext.ftlog.exception()
            TyContext.ftlog.info(
                'doLenovoCallback->ERROR, sign error !! transdata=', transdata)
            return 'ERROR'
        orderPlatformId = datas['exorderno']
        ChargeModel.save_third_pay_order_id(orderPlatformId,
                                            datas.get('transid', ''))
        appkeyconfig = TyContext.Configure.get_global_item_json(
            'lenovo_appkeys', {})
        try:
            appKey = appkeyconfig[str(appId)]
        except KeyError:
            config = GameItemConfigure.get_game_channel_configure_by_orderId(
                orderPlatformId, 'lenovo')
            appKey = config.get('lenovo_appKey')
        sign = rparam['sign']
        if self.verifySign(transdata, sign, appKey) != True:
            TyContext.ftlog.info(
                'doLenovoCallback->ERROR, sign error !! transdata=', transdata,
                'sign=', sign)
            return 'ERROR'
        total_fee = float(datas['money']) / 100
        isOk = PayHelperV4.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'SUCCESS'
        else:
            return 'ERROR'
Пример #26
0
 def doCallback(self, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     transdata = rparam['transdata']
     transdata = json.loads(transdata)
     sign = rparam['sign']
     appid = transdata['appid']
     signtype = rparam['signtype']
     orderPlatformId = transdata['cporderid']
     try:
         coolpad_keys = TyContext.Configure.get_global_item_json('coolpad_keys', {})
         pubkey = coolpad_keys[appid]['publicKey']
     except:
         config = GameItemConfigure.get_game_channel_configure_by_orderId(orderPlatformId, 'coolpad')
         pubkey = config.get('coolpad_appPubKey', '')
         if not pubkey:
             TyContext.ftlog.debug("doCoolpadCallback,cannot find coolpad sdkconfig for", appid)
             return 'error'
         pubkey = self.loadRsaPublicKey(pubkey)
     try:
         # total_fee = transdata['money']
         result = transdata['result']
     except Exception as e:
         TyContext.ftlog.error('doCoolpadPayCallback->ERROR, exception', e, 'rparam', transdata)
         return 'error'
     if not self._verify_sign(rparam, sign, pubkey):
         errinfo = '支付失败'
         ChargeModel.save_third_pay_order_id(orderPlatformId, transdata.get('transid', ''))
         PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
         return 'failed'
     if result != 0:
         errinfo = '支付失败'
         TyContext.ftlog.error('doCoolpadPayCallback->ERROR, exception, result not 0')
         PayHelperV4.callback_error(orderPlatformId, errinfo, rparam)
         return 'failed'
     PayHelperV4.callback_ok(orderPlatformId, -1, rparam)
     return 'success'
Пример #27
0
    def doUcDjCallback(cls, rpath):
        body = TyContext.RunHttp.get_body_content()
        TyContext.ftlog.debug('TuYouPayUcDj->doUcDjCallback Request data: ',
                              body)
        rparam = TyContext.strutil.loads(body, decodeutf8=True)
        try:
            data = rparam['data']
            orderPlatformId = data['orderId']
            state = data['orderStatus']
            total_fee = data['amount']
            sign = rparam['sign']
            thirdorderid = data['tradeId']
        except:
            TyContext.ftlog.error(
                'TuYouPayUcDj->doUcDjCallback ERROR, param error !! rparam=',
                rparam)
            return 'FAILURE'
        # 签名校验
        if not cls.__verify_sign(data, sign):
            TyContext.ftlog.error(
                'TuYouPayUcDj->doUcDjCallback verify error !!')
            return 'FAILURE'
        # 充值状态校验
        if state != 'S':
            TyContext.ftlog.info(
                'TuYouPayUcDj->doUcDjCallback charge failed. fail reason:',
                data['failedDesc'])
            PayHelperV4.callback_error(orderPlatformId, data['failedDesc'],
                                       rparam)
            return 'SUCCESS'

        data['third_orderid'] = thirdorderid
        total_fee = float(total_fee)
        ChargeModel.save_third_pay_order_id(orderPlatformId, thirdorderid)
        PayHelperV4.callback_ok(orderPlatformId, total_fee, data)
        return 'SUCCESS'
Пример #28
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']
            ChargeModel.save_third_pay_order_id(platformOrderId, thirdId)
            PayHelperV4.callback_ok(platformOrderId, total_fee, rparam)
            return 'success'
        else:
            errinfo = '支付失败'
            PayHelperV4.callback_error(platformOrderId, errinfo, rparam)
            return 'failed'
Пример #29
0
    def doAnZhiCallback(cls, rpath):
        postData = TyContext.RunHttp.get_body_content()
        TyContext.ftlog.debug(
            'TuYouPayAnZhi->doAnZhiCallback original postData is:', postData)

        paramslist = postData.split('&')
        rparam = {}
        for k in paramslist:
            paramdata = k.split('=')
            rparam[paramdata[0]] = paramdata[1]
        TyContext.ftlog.debug(
            'TuYouPayAnZhi->doAnZhiCallback parame list(Before urldecode) is: ',
            rparam)

        for k in rparam.keys():
            rparam[k] = unquote(rparam[k])
        TyContext.ftlog.debug(
            'TuYouPayAnZhi->doAnZhiCallback parame list(After urldecode) is: ',
            rparam)

        if 'data' in rparam and 'appId' in rparam:
            data = rparam['data']
            appId = rparam['appId']
        else:
            TyContext.ftlog.error(
                'TuYouPayAnZhi->doAnZhiCallback ERROR There doesn\'t has data or appId in post data.'
            )
            return 'failed'
        anzhiconfig = TyContext.Configure.get_global_item_json(
            'anzhi_config', {})
        encryptKey = ""
        if anzhiconfig:
            for item in anzhiconfig:
                if 0 == cmp(item['appId'], appId):
                    encryptKey = item['appsecret']
                    break
            else:
                TyContext.ftlog.error(
                    'TuYouPayAnZhi->doAnZhiCallback ERROR Cann\'t find appsecert, appId is: ',
                    appId)
        else:
            TyContext.ftlog.error(
                'TuYouPayAnZhi->doAnZhiCallback ERROR cann\'t find anzhi_config.'
            )
        if not encryptKey:
            charge_key = 'sdk.charge:anzhi:%s' % appId
            encryptKey = TyContext.RedisPayData.execute(
                'HGET', charge_key, 'appSecret')
            TyContext.ftlog.debug('get sdk config from redis,', encryptKey)
        try:
            # 先用base64解码,再采用3des解密
            tripelDes = triple_des(encryptKey.encode('ascii'),
                                   mode=ECB,
                                   padmode=PAD_NORMAL)
            data = tripelDes.decrypt(base64.b64decode(data))
            data = "".join([data.rsplit("}", 1)[0], "}"])
            TyContext.ftlog.debug('TuYouPayAnZhi->doAnZhiCallback Data is: ',
                                  data)
            params = json.loads(data)
            params['third_orderid'] = params['orderId']  # 三方订单号
            orderPlatformId = params['cpInfo']  # 途游订单号
            orderAmount = params['orderAmount']  # 商品金额(分)
            redBagMoney = params['redBagMoney']
            code = int(params['code'])  # 订单状态 成功:1
            ChargeModel.save_third_pay_order_id(orderPlatformId,
                                                params['orderId'])
            TyContext.ftlog.info('TuYouPayAnZhi->doAnZhiCallback params: ',
                                 params, ' orderPlatformId is: ',
                                 orderPlatformId)
        except Exception as e:
            TyContext.ftlog.error('TuYouPayAnZhi->doAnZhiCallback ERROR: ', e)
            return 'success'

        # 安智的同事说,只会出现code==1的情况,这里只是为了以防万一
        if 1 != code:
            TyContext.ftlog.error()
            errinfo = '安智支付失败'
            PayHelperV4.callback_error(orderPlatformId, errinfo, params)

        # 2) orderAmount+redBagMoney 应等于道具金额,金额验证异常请返回”money_error”。
        chargeKey = 'sdk.charge:' + orderPlatformId
        chargeTotal = TyContext.RedisPayData.execute('HGET', chargeKey,
                                                     'chargeTotal')

        anzhiTotal = (float(orderAmount) + float(redBagMoney)) / 100

        if float(chargeTotal) != anzhiTotal:
            return 'money_error'

        PayHelperV4.callback_ok(orderPlatformId, anzhiTotal, params)
        return 'success'