Exemple #1
0
    def doSztyPayH5Callback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.info('doSztyPayH5Callback', rparam)
        clientip = TyContext.RunHttp.get_client_ip()
        szty_config = TyContext.Configure.get_global_item_json('shuzitianyu_h5_config', {})
        callback_ip = str(szty_config['callback_ip'])
        if clientip != callback_ip:
            TyContext.ftlog.error('doSztyPayH5Callback->ip auth failed. '
                                  'callback ip', clientip, 'expected', callback_ip)
            return 'error'

        try:
            orderPlatformId = rparam['orderid']
            mobileId = rparam.get('mob', '')
            state = int(rparam['state'])
            price = int(rparam['price'])
        except Exception as e:
            TyContext.ftlog.error('doSztyPayH5Callback->param error !! rparam=',
                                  rparam, 'Exception:', e)
            return 'error'

        TyContext.ftlog.debug('doSztyPayH5Callback orderId', orderPlatformId)
        if state == 0:
            PayHelper.set_order_mobile(orderPlatformId, mobileId)
            isOk = PayHelper.callback_ok(orderPlatformId, price / 100.0, rparam)
            return 'ok'
        else:
            PayHelper.callback_error(orderPlatformId, '支付失败', rparam)
            return 'error'
Exemple #2
0
    def doMingTianDongLiApiCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.info('doMingTianDongLiApiCallback rparam', rparam)
        '''strSoureSign = md.encode(channelNum + appId + price + cpparams + 
        subChannelNum + imei + provider + province + mobile + number'''

        strSoureSign = rparam['channelNum'] + rparam['appId'] + rparam['price'] + \
                       rparam['cpparams'] + rparam['subChannelNum'] + rparam['imei'] + \
                       rparam['provider'] + rparam['province'] + rparam['mobile'] + \
                       rparam['number']

        if not cls._verify_sign(strSoureSign, rparam['sign']):
            TyContext.ftlog.error(
                'doMingTianDongLiApiCallback->ERROR  invalid strSoureSign',
                strSoureSign, 'rparam[sign]', rparam['sign'])
            return 'error'

        orderPlatformId = rparam['cpparams']
        total_fee = float(rparam['price']) / 100

        if rparam['mobile']:
            mobileId = rparam['mobile']
            PayHelper.set_order_mobile(orderPlatformId, mobileId)

        PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        return 0
Exemple #3
0
    def doLinkYunApiCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.info('doLinkYunApiCallback rparam', rparam)

        try:
            shortOrderPlatformId = rparam['cpparam'][2:]
            mobile = rparam['mobile']
            orderPlatformId = ShortOrderIdMap.get_long_order_id(
                shortOrderPlatformId)
            sign = rparam['sign']
        except:
            TyContext.ftlog.error(
                'doLinkYunApiCallback->ERROR, param error !! rparam=', rparam)
            return 'error'

        # 签名校验
        if not cls.__verify_sign(rparam, sign):
            TyContext.ftlog.error(
                'TuYouPayLinkYunApi.doLinkYunApiCallback verify error !!')
            return 'error'

        rparam['chargeType'] = 'linkyun.api'
        rparam['third_orderid'] = rparam['orderId']
        total_fee = float(rparam['price']) / 100
        PayHelper.set_order_mobile(orderPlatformId, mobile)
        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return '0||'
        else:
            return 'error'
Exemple #4
0
    def doLangtianCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('doLangtianCallback start, rparam=', rparam)

        try:
            msg = rparam['msg']
            mobileId = rparam.get('mobile', '')
            msgList = msg.split('#')
            orderPlatformId = msgList[-1]
            sign = rparam['mac']
        except:
            TyContext.ftlog.error(
                'doLangtianCallback->ERROR, param error !! rparam=', rparam)
            return 'error'

        # 签名校验
        if not cls.__verify_sign(rparam, sign):
            TyContext.ftlog.error(
                'TuyouPayLangtian.doLangtianCallback sign verify error !!')
            return 'error'

        total_fee = float(rparam['fee'])
        PayHelper.set_order_mobile(orderPlatformId, mobileId)
        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'success'
        else:
            return 'error'
Exemple #5
0
    def doSztyPayCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        clientip = TyContext.RunHttp.get_client_ip()
        sztyconfig = TyContext.Configure.get_global_item_json(
            'shuzitianyu_config', {})
        callback_ip = str(sztyconfig['callback_ip'])
        if clientip != callback_ip:
            TyContext.ftlog.error('doSztyPayCallback->ERROR, ip error !! ip =',
                                  clientip)
            return 'error'

        try:
            shortorderPlatformId = rparam['linkid'][7:]
            mobileId = rparam.get('mobile', '')
            status = int(rparam['status'])
        except:
            TyContext.ftlog.error(
                'doSztyPayCallback->ERROR, param error !! rparam=', rparam)
            return 'error'

        orderPlatformId = ShortOrderIdMap.get_long_order_id(
            shortorderPlatformId)
        rparam['chargeType'] = 'shuzitianyu'
        if status == 1:
            PayHelper.set_order_mobile(orderPlatformId, mobileId)
            isOk = PayHelper.callback_ok(orderPlatformId, -1, rparam)
            # Youyifu will resend the callback if the response is NOT 'success'
            return 'success'
        else:
            PayHelper.callback_error(orderPlatformId, '支付失败', rparam)
            return 'success'
Exemple #6
0
    def doMsgDxCallback(self, rpath):

        MchNo = TyContext.RunHttp.getRequestParam('MchNo', '')
        Phone = TyContext.RunHttp.getRequestParam('Phone', '')
        Fee = TyContext.RunHttp.getRequestParam('Fee', '')  # 单位:元
        OrderId = TyContext.RunHttp.getRequestParam('OrderId', '')
        MobileType = TyContext.RunHttp.getRequestParam('MobileType', '')
        Sign = TyContext.RunHttp.getRequestParam('Sign', '')
        if MchNo == '' or Phone == '' or Fee == '' or OrderId == '' or Sign == '':
            return '401~参数错误~'

        eft_skey = ''
        try:
            eft_appid = OrderId[0:2]
            eft_skey = TuYouPayEftUnion.appkeys.get(eft_appid, None)
        except:
            TyContext.ftlog.exception()
        tSign = MchNo + Phone + Fee + OrderId + eft_skey
        m = md5()
        m.update(tSign)
        vSign = m.hexdigest()
        if Sign != vSign:
            TyContext.ftlog.info('doMsgDxCallback->ERROR, sign error !! sign=',
                                 Sign, 'vSign=', vSign, 'eft_skey=', eft_skey)
            return '555~数字签名错误~'

        # 解密得到原始游戏订单号
        orderPlatformId = ''
        try:
            orderPlatformId = OrderId[2:]
            Fee = float(Fee)
        except:
            TyContext.ftlog.exception()
        TyContext.ftlog.info(
            'TuYouPayEftUnion.doMsgDxCallback orderPlatformId=',
            orderPlatformId)

        notifys = {
            'MchNo': MchNo,
            'Phone': Phone,
            'OrderId': OrderId,
            'third_orderid': MchNo
        }
        if MobileType == 'LT':
            notifys['chargeType'] = 'EFTChinaUnion.msg'
        elif MobileType == 'DX':
            notifys['chargeType'] = 'EFTChinaTelecom.msg'
        PayHelper.set_order_mobile(orderPlatformId, Phone)
        isOk = PayHelper.callback_ok(orderPlatformId, Fee, notifys)
        if isOk:
            return '000~成功~'
        else:
            return '111~失败~'
Exemple #7
0
    def doGeFuPayCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.info('doGeFuPayCallback->rparam', rparam)
        try:
            orderPlatformId = rparam['orderno']
            total_fee = float(rparam['fee']) / 100
            reqTime = rparam['reqtime']
            status = rparam['status']
            mobileId = rparam.get('mobilenum')
            sign = rparam['sign']

        except Exception as e:
            TyContext.ftlog.error('doGeFuPayCallback->ERROR, exception', e,
                                  'rparam', rparam)
            return 'error'

        pathType = TyContext.RunHttp.get_request_path()
        chargeType = pathType.find('gefusdk')
        if chargeType != -1:
            thirdPartyId = '43'
            rparam['chargeType'] = 'gefusdk'
        else:
            thirdPartyId = '32'
            rparam['chargeType'] = 'gefu'

        gefuconfig = TyContext.Configure.get_global_item_json(
            'gefupay_config', {})
        md5key = gefuconfig[thirdPartyId]['md5key']
        paramsIn = rparam['fee'] + rparam['orderno'] + rparam['reqtime']
        if not cls._verify_sign(paramsIn, sign, md5key):
            TyContext.ftlog.error('do_gefupay_callback->ERROR  invalid sign',
                                  sign)
            return 'error'

        PayHelper.set_order_mobile(orderPlatformId, mobileId)
        if status == 'success':
            PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
            return 'success'

        errinfo = '支付失败'
        PayHelper.callback_error(orderPlatformId, errinfo, rparam)
        return 'failed'
Exemple #8
0
    def doLinkYunUnionCallback(cls, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info(cls.__name__, 'doLinkYunUnionCallback->args=',
                             rparam)
        try:
            mobileId = rparam['mobile']
            serviceid = rparam['serviceid']
            orderPlatformId = str(rparam['orderid'])[2:]
            msgcontent = rparam['msgcontent']
            sign = rparam['sign']

            # 效验sign
            isOk = PayHelper.verify_md5(sign, mobileId, '#', serviceid, '#',
                                        msgcontent, '#', cls.sign_skey)
            if isOk:
                # 对凌云充值的订单,把手机号补充到订单信息里
                orderPlatformId = ShortOrderIdMap.get_long_order_id(
                    orderPlatformId)
                TyContext.RunMode.get_server_link(orderPlatformId)
                PayHelper.set_order_mobile(orderPlatformId, mobileId)
                operator = PayHelper.get_mobile_operator(mobileId)
                if operator == 'chinaunicom':
                    rparam['chargeType'] = 'linkyununion'
                elif operator == 'chinatelecom':
                    rparam['chargeType'] = 'linkyundx'
                else:
                    TyContext.ftlog.error(
                        cls.__name__,
                        'doLinkYunUnionCallback->ERROR get_mobile_operator for',
                        mobileId)
                if msgcontent == '0:0':
                    PayHelper.callback_ok(orderPlatformId, -1, rparam)
                    return '0'
                else:
                    PayHelper.callback_error(orderPlatformId, '', rparam)
        except:
            TyContext.ftlog.exception()
        TyContext.ftlog.info(cls.__name__,
                             'doLinkYunUnionCallback->ERROR, rparam=', rparam)
        return '0'
Exemple #9
0
    def doLinkYunCallback(cls, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info('doLinkYunCallback->args=', rparam)
        try:
            orderId = rparam['orderId']
            mobileId = rparam['mobileId']
            price = rparam['price']
            goodsInf = rparam['goodsInf']
            sign = rparam['sign']
            isOk = PayHelper.verify_md5(sign, orderId, mobileId, price, goodsInf, cls.sign_skey)
            # 效验sign
            if not isOk:
                TyContext.ftlog.info('doLinkYunCallback->ERROR, sign error !!')
                return '1||sign error'

            platformOrderId = str(goodsInf)[2:]
            if not platformOrderId:
                TyContext.ftlog.info('doLinkYunCallback->ERROR, platformOrderId error !!')
                return '1||orderPlatformId error'

            # 对凌云充值的订单,把手机号补充到订单信息里
            platformOrderId = ShortOrderIdMap.get_long_order_id(platformOrderId)
            TyContext.RunMode.get_server_link(platformOrderId)
            PayHelper.set_order_mobile(platformOrderId, mobileId)

            rparam['chargeType'] = 'linkyun'
            rparam['third_orderid'] = orderId
            total_fee = float(price) / 100
            isOk = PayHelper.callback_ok(platformOrderId, total_fee, rparam)
            if isOk:
                return '0||'
            else:
                return '1||charge fail'
        except:
            TyContext.ftlog.exception()
            TyContext.ftlog.info('doLinkYunCallback->ERROR, param error !! rparam=', rparam)
            return '1||charge exception'
Exemple #10
0
    def doZhuowangCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('doZhuowangCallback start, rparam=', rparam)

        try:
            sts = rparam['sts']
            shortorderid = rparam['cmd'].split(',')[-1]
        except:
            TyContext.ftlog.error(
                'doZhuowangCallback->ERROR, param error !! rparam=', rparam)
            return 'error'

        orderPlatformId = ShortOrderIdMap.get_long_order_id(shortorderid)
        mobileId = rparam.get('usernumber', 'na')
        PayHelper.set_order_mobile(orderPlatformId, mobileId)
        rparam['third_orderid'] = rparam.get('tnsid', 'na')
        rparam['sub_paytype'] = rparam.get('feetype', 'na')
        if int(sts) != 0:
            errinfo = 'sts(%s) not 0' % sts
            PayHelper.callback_error(orderPlatformId, errinfo, rparam)
        else:
            total_fee = float(rparam['feecode']) / 100
            isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        return '0'  # success
Exemple #11
0
    def do_yipay_callback(cls, paytype):
        rparam = TyContext.RunHttp.convertArgsToDict()
        try:
            orderPlatformId = rparam['app_orderid']
            mobileId = rparam.get('phone', '')
            if not mobileId and 'phone' in rparam.keys():
                del rparam['phone']
            sign = rparam['sign']
            merc_id = rparam['merc_id']
            status = int(rparam['status'])
            user_id = rparam['userid']
            is_monthly = int(rparam['is_monthly'])
        except Exception as e:
            TyContext.ftlog.error('do_yipay_callback->ERROR, exception', e,
                                  'rparam', rparam)
            return 'error'

        # 签名校验
        appkey_config = TyContext.Configure.get_global_item_json(
            'yipay_appkey_config', {})
        try:
            appkey = appkey_config[merc_id]
        except:
            TyContext.ftlog.error(
                'do_yipay_callback appkey not configed'
                ' for merc_id', merc_id)
            return 'error'
        if not cls._verify_sign(rparam, sign, appkey):
            return 'error'

        rec_amount = rparam['rec_amount']
        pay_amount = rparam['pay_amount']
        if rec_amount != pay_amount:
            TyContext.ftlog.error('do_yipay_callback pay_amount', pay_amount,
                                  'not equal to rec_amount', rec_amount)
        total_fee = float(pay_amount) / 100
        rparam['third_orderid'] = rparam['orderid']
        rparam['sub_paytype'] = rparam['ch_type']
        rparam['chargeType'] = paytype
        rparam['mobileId'] = mobileId
        if status == 1:
            PayHelper.set_order_mobile(orderPlatformId, mobileId)
            # 判断用户购买的是不是包月会员
            if 2 == is_monthly:
                TyContext.ftlog.debug(
                    'TuYouPayYi->doYiPayCallback User [%s] buy monthly goods.'
                    % user_id)
                # 修改用户表,将用户状态置为会员状态
                '''
                if 'message' in rparam:
                    message = rparam['message']
                else:
                    TyContext.ftlog.info('TuYouPayYi->doYiPayCallback ERROR, Doesn\'t has message parameter.'
                                          'userid: [%s], platformorderid: [%s], third_id: [%s]'
                                          % (user_id, orderPlatformId, rparam['third_orderid']))
                    message = '退订请联系会员退订专用电话: 4008-098-000'
                '''
                message = '退订请联系会员退订专用电话: 4008-098-000'
                # 记录购买会员的appId、clientId
                chargeKey = 'sdk.charge:' + orderPlatformId
                chargeInfo = TyContext.RedisPayData.execute(
                    'HGET', chargeKey, 'charge')
                if chargeInfo == None:
                    chargeInfo = {}
                else:
                    chargeInfo = TyContext.strutil.loads(chargeInfo,
                                                         decodeutf8=True)

                appId = chargeInfo.get('appId', 9999)
                clientId = chargeInfo.get('clientId', '')
                diamondId = chargeInfo.get('diamondId', '')

                TyContext.RedisUser.execute(
                    user_id, 'HMSET', 'user:'******'isYouyifuVipUser',
                    '1', 'youyifuVipMsg', message, 'bugYouyifuVipAppid', appId,
                    'bugYouyifuVipClientid', clientId,
                    'bugYouyifuVipDiamondid', diamondId)

                # 这个参数用来告诉游戏服务器,这个商品是一件优易付的会员包月商品
                rparam['isYouyifuMonthVip'] = '1'
                PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
                cls.reportBi(Order.SUBSCRIBE, rparam)
                TyContext.ftlog.info(
                    'TuYouPayYi->doYiPayCallback user %s has subscribed Monthly VIP.'
                    % user_id)
            else:
                PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
            return 'success'
        elif status == 3:
            # 包月退订,修改用户表,将用户状态置为非会员状态,并通知游戏服用户退订
            status = cls._NotifyGameServerUnsubscribe(orderPlatformId, user_id)
            if not status:
                TyContext.ftlog.error(
                    'TuYouPayYi->doYiPayCallback Notify Game server user [%s] unsubscribed ERROR!'
                    % user_id)
                return 'success'
            try:
                TyContext.MySqlSwap.checkUserDate(user_id)
            except:
                TyContext.ftlog.error(
                    'TuYouPayYi->doYiPayCallback get cold data')
            TyContext.RedisUser.execute(user_id, 'HSET', 'user:'******'isYouyifuVipUser', '0')
            cls.reportBi(Order.UNSUBSCRIBE, rparam)
            return 'success'
        else:
            errinfo = '支付失败' + str(rparam.get('status_desc', ''))
            PayHelper.callback_error(orderPlatformId, errinfo, rparam)
            return 'success'
Exemple #12
0
    def doAiDongManCallback(cls, rpath):
        xmlData = TyContext.RunHttp.getRequestParam('requestData', '')
        xmlroot = ElementTree.fromstring(xmlData)
        TyContext.ftlog.info('doAiDongManCallback rparam xmlData', xmlData)

        params = OrderedDict()

        params['Behavior'] = xmlroot.find('Behavior').text
        params['Trade_status'] = xmlroot.find('Trade_status').text
        params['Trade_no'] = xmlroot.find('Trade_no').text
        params['Buyer_id'] = xmlroot.find('Buyer_id').text
        params['Extension'] = xmlroot.find('Extension').text

        sign = params['Behavior'] + params['Trade_status'] + params['Trade_no'] + params['Buyer_id'] + params[
            'Extension']

        params['Product_id'] = xmlroot.find('Product_id').text
        params['Product_name'] = xmlroot.find('Product_name').text
        params['Price'] = int(float(xmlroot.find('Price').text))
        params['App_id'] = xmlroot.find('App_id').text
        params['sign'] = xmlroot.find('Sign').text.replace(' ', '+')
        params['sign'] = ''.join(params['sign'].split())

        TyContext.ftlog.info('doAiDongManCallback params', params)

        aidongmanconfig = TyContext.Configure.get_global_item_json('aidongmanpay_config', {})
        if aidongmanconfig:
            cls.encryptKey = aidongmanconfig['3des']['encryptKey']

        # 采用3des加密
        padByte = chr(int(8 - len(sign) % 8))
        ivBytes = ''
        ivSource = aidongmanconfig['3des']['iv']
        for i in ivSource:
            ivBytes = ivBytes + chr(int(i))

        tripelDes = triple_des(unhexlify(cls.encryptKey), mode=CBC, pad=padByte, IV=ivBytes, padmode=PAD_NORMAL)
        sign = tripelDes.encrypt(sign)
        sign = base64.b64encode(sign)

        plantformId = params['Extension'][23:]
        TradeNo = xmlroot.find('Trade_no').text

        params['chargeType'] = 'aidongman'
        params['third_orderid'] = params['Trade_no']

        PayHelper.set_order_mobile(plantformId, params['Buyer_id'])

        TyContext.ftlog.info('doAiDongManCallback sign', sign, 'params[sign]', params['sign'])

        ResponseBody = ElementTree.Element('ResponseBody')
        Trade_no = ElementTree.SubElement(ResponseBody, 'Trade_no')
        Status = ElementTree.SubElement(ResponseBody, 'Status')
        Trade_no.text = str(TradeNo)
        Status.text = '1'
        mo = ElementTree.tostring(ResponseBody)
        if sign == params['sign']:
            if int(params['Trade_status']) == 0 or int(params['Trade_status']) == 1:
                PayHelper.callback_ok(plantformId, float(params['Price']), params)
                Status.text = '0'
                mo = ElementTree.tostring(ResponseBody)
                TyContext.ftlog.info('doAiDongManCallback->SUCCESS rparams', params, 'mo', mo)
                return mo
            else:
                errinfo = '爱动漫支付失败'
                PayHelper.callback_error(plantformId, errinfo, params)
                TyContext.ftlog.error('doAiDongManCallback->ERROR, failDesc', errinfo, 'rparams', params, 'mo', mo)
                return mo
        else:
            errinfo = '签名校验失败'
            PayHelper.callback_error(plantformId, errinfo, params)
            TyContext.ftlog.error('doAiDongManCallback->ERROR, failDesc', errinfo, 'rparams', params)

        return mo