Exemple #1
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 #2
0
    def doCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        transdata = rparam['transdata']
        transdata = json.loads(transdata)
        sign = rparam['sign']
        appid = transdata['appid']
        signtype = rparam['signtype']
        coolpad_keys = TyContext.Configure.get_global_item_json(
            'coolpad_keys', {})
        pubkey = coolpad_keys[appid]['publicKey']
        try:
            orderPlatformId = transdata['cporderid']
            # total_fee = transdata['money']
            result = transdata['result']
        except Exception as e:
            TyContext.ftlog.error('doCoolpadPayCallback->ERROR, exception', e,
                                  'rparam', transdata)
            return 'error'
        if not cls._verify_sign(rparam, sign, pubkey):
            errinfo = '支付失败'
            PayHelper.callback_error(orderPlatformId, errinfo, rparam)
            return 'failed'

        if result != 0:
            errinfo = '支付失败'
            TyContext.ftlog.error(
                'doCoolpadPayCallback->ERROR, exception, result not 0')
            PayHelper.callback_error(orderPlatformId, errinfo, rparam)
            return 'failed'
        PayHelper.callback_ok(orderPlatformId, -1, rparam)
        return 'success'
Exemple #3
0
    def doMiDaShiPayCallback(cls, rpath):
        # 由于设计到路径和请求方法,验签放到httpgateway里做了,这里只负责发货
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('TuYouPayMiDaShi->doMiDaShiPayCallback rparam: ',
                              rparam)
        if 'payitem' in rparam:
            payitem = rparam['payitem']
            appmeta = payitem.split('*')[0]
            platformOrderId = appmeta
        else:
            return cls.getReturnContent(4, 'payitem')

        if 'appmeta' in rparam:
            appmeta = rparam['appmeta']
            if '*' in appmeta:
                appmeta = appmeta.split('*')[1]
            thirdPayType = appmeta
        else:
            return cls.getReturnContent(4, 'appmeta')

        if 'amt' in rparam:
            total_fee = float(rparam['amt'])
        else:
            return cls.getReturnContent(4, 'amt')

        rparam['sub_paytype'] = thirdPayType
        PayHelper.callback_ok(platformOrderId, -1, rparam)
        return cls.getReturnContent(0)
Exemple #4
0
    def _docallback(cls, appkey, paykey):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('TuYouPayXYZS->_docallback rparam is : ', rparam)

        # 验签
        safeSign = cls._gen_safe_sign(rparam, appkey)
        if safeSign != rparam['sign']:
            TyContext.ftlog.error(
                'TuYouPayXYZS->_docallback sign verify failed, '
                'sign is [', safeSign, '],  rparam["sign"] is [',
                rparam['sign'], ']')
            return cls._response_result(6)
        if rparam['sig']:
            safeSign = cls._gen_safe_sign(rparam, paykey)
            if safeSign != rparam['sig']:
                TyContext.ftlog.error(
                    'TuYouPayXYZS->_docallback sign verify failed.'
                    'sig is [', safeSign, '],  rparam["sig"] is [',
                    rparam['sig'], ']')
                return cls._response_result(6)

        # 开始发货
        orderPlatformId = rparam["extra"]
        total_fee = float(rparam["amount"])
        PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        TyContext.ftlog.debug(
            'TuYouPayXYZS->_docallback deliver goods successed.')

        return cls._response_result(0)
Exemple #5
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'])
            PayHelper.callback_error(orderPlatformId, data['failedDesc'],
                                     rparam)
            return 'SUCCESS'

        data['third_orderid'] = thirdorderid
        total_fee = float(total_fee)
        PayHelper.callback_ok(orderPlatformId, total_fee, data)
        return 'SUCCESS'
Exemple #6
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:
            PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
            return 'success'
        elif status == 1:
            return 'success'
        else:
            errinfo = '支付失败'
            PayHelper.callback_error(orderPlatformId, errinfo, rparam)
            return 'fail'
Exemple #7
0
 def doDaodaoCallback(cls, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.info('doDaodaoCallback', rparam)
     try:
         orderPlatformId = rparam['cpparam']
         total_fee = rparam['successMoney']
     except Exception as e:
         TyContext.ftlog.error('doDaodaoCallback ,param err,exception ', e)
     PayHelper.callback_ok(orderPlatformId, float(total_fee), rparam)
Exemple #8
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']
     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':
         PayHelper.callback_ok(cp_order_id, total_price, rparam)
         return json.dumps({
             'code': 200,
             'message': '充值成功',
             'redirect': '',
             'value': None
         })
     elif trade_status == '4':
         PayHelper.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
         })
Exemple #9
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']
        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)
            PayHelper.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'
            )
            return 'FAILURE'

        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)
            return 'FAILURE'

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

        transdata['sub_paytype'] = paytype
        PayHelper.callback_ok(orderPlatformId,
                              float(total_fee) / 100, transdata)
        return 'SUCCESS'
Exemple #10
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']

            PayHelper.callback_ok(platformOrderId, total_fee, rparam)
            return 'success'
        else:
            errinfo = '支付失败'
            PayHelper.callback_error(platformOrderId, errinfo, rparam)
            return 'failed'
Exemple #11
0
 def doJinliCallback(cls, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.info('doJinliCallback', rparam)
     try:
         orderPlatformId = rparam['out_order_no']
         total_fee = rparam['deal_price']
     except Exception as e:
         TyContext.ftlog.error('doJinliCallback  ,param err,exception ', e)
         return 'exception in params'
     if not cls._check_sign(rparam):
         TyContext.ftlog.error('doJinliCallback ,check sign error!')
         return 'check sign error!'
     PayHelper.callback_ok(orderPlatformId, float(total_fee), rparam)
     return 'success'
Exemple #12
0
    def notifyGameServerDelivery(cls, rparam):
        TyContext.ftlog.debug('TuYouPayHuiYuanBaoYue->notifyGameServerDelivery User[%s, mobile:%s, orderid:%s] '
                              'subscribe monthly vip!' % (
                              rparam['userId'], rparam['mobile'], rparam['platformOrderId']))
        TyContext.RedisUser.execute(rparam['userId'], 'HMSET', 'user:'******'userId'], 'isYouyifuVipUser', '1',
                                    'youyifuVipMsg', rparam['message'])

        # 这个参数用来告诉游戏服务器,这个商品是一件会员包月商品
        rparam['isYouyifuMonthVip'] = '1'
        PayHelper.callback_ok(rparam['platformOrderId'], rparam['total_fee'], rparam)
        cls.changeUserInfoStatus('vipuser:'******'mobile'], 'success')
        TyContext.ftlog.info(
            'TuYouPayHuiYuanBaoYue->notifyGameServerDelivery %s has subscribed Monthly VIP.' % cls.getLogUserInfo(
                rparam))
Exemple #13
0
    def doAiGameMsgCallback(self, rpath):
        notifys = TyContext.RunHttp.convertArgsToDict()
        cpparam = notifys.get('cpparam', '')
        if not cpparam:
            appkeys = '62d55e5d5d47f5d0121d2049d6893bc1'
            return self._doAiGameMsgCallbackNew(appkeys, rpath)

        resultcode = notifys.get('resultCode', '')
        resultmsg = notifys.get('resultMsg', '')
        try:
            order_paytype = notifys['payType']
            notifys['sub_paytype'] = order_paytype
        except:
            order_paytype = ''
        validatecode = notifys.get('validatecode', '')

        # 限制ip请求
        # clientIp = TyContext.RunHttp.get_client_ip()
        # TyContext.ftlog.info('TuYouPayAiGame.doAiGameMsgCallback in clientIp=', clientIp)
        # iplist = clientIp.split('.')
        # if len(iplist) != 4 or iplist[0] != '202' or iplist[1] != '102' or iplist[2] != '39' :
        #    return cpparam

        if resultcode == '' or resultmsg == '' or cpparam == '' or order_paytype != 'isagSmsPay' or validatecode == '':
            return TuYouPayAiGame.XML_RET % ('1', cpparam)

        tSign = resultcode + cpparam
        m = md5()
        m.update(tSign)
        vSign = m.hexdigest()
        if validatecode != vSign:
            TyContext.ftlog.info(
                'doAiGameMsgCallback->ERROR, sign error !! sign=',
                validatecode, 'vSign=', vSign)
            return TuYouPayAiGame.XML_RET % ('1', cpparam)

        # 解密得到原始游戏订单号
        orderPlatformId = cpparam
        TyContext.ftlog.info('doAiGameMsgCallback orderPlatformId=',
                             orderPlatformId)
        notifys['chargeType'] = 'aigame.msg'
        if resultcode == '00':
            PayHelper.callback_ok(orderPlatformId, -1, notifys)
        else:
            PayHelper.callback_error(orderPlatformId,
                                     'resultCode(%s) not 0' % resultcode,
                                     notifys)
        return TuYouPayAiGame.XML_RET % ('0', cpparam)
Exemple #14
0
 def doCallback(cls, rpath):
     rparam = TyContext.RunHttp.convertArgsToDict()
     TyContext.ftlog.info('TuYouNow callback with: %s' % rparam)
     payNowAppId = rparam['appId']
     borui_paykeys = TyContext.Configure.get_global_item_json(
         'borui_paykeys', {})
     try:
         payNowInfo = borui_paykeys[payNowAppId]
     except KeyError:
         payNowInfo = borui_paykeys
     appSecret = payNowInfo['appSecret']
     ## check signature
     keys = filter(lambda k: k not in [
         'signType',
         'signature',
     ], rparam.keys())
     keys.sort()
     text = '&'.join(['%s=%s' % (k, rparam[k]) for k in keys])
     text = urllib.unquote(text)  # 转为utf-8编码
     s1 = hashlib.md5(appSecret).hexdigest()
     s2 = hashlib.md5('%s&%s' % (text, s1)).hexdigest()
     if rparam['signature'] != s2:
         TyContext.ftlog.error('TuYouNow->ERROR, sign error !! rparam=',
                               rparam)
         return 'N'
     # do charge
     tradeStatus = rparam['tradeStatus']
     orderPlatformId = rparam['mhtOrderNo']
     if tradeStatus == 'A001':
         if PayHelper.callback_ok(orderPlatformId, -1, rparam):
             return 'Y'
     return 'N'
Exemple #15
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 #16
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 #17
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

        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return '{"errcode":200}'
        else:
            return '{"errcode":1506}'
Exemple #18
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 #19
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 #20
0
    def doYdjdCallback(self, rpath):
        xmldata = TyContext.RunHttp.get_body_content()
        TyContext.ftlog.debug('TuYouPayYdjd.doYdjdCallback in xmldata=',
                              xmldata)
        notifys = {'xml': xmldata, 'chargeType': 'ydjd'}

        try:
            xmlroot = ElementTree.fromstring(xmldata)
            ret = xmlroot.find('hRet').text
            status = xmlroot.find('status').text
            userId = xmlroot.find('userId').text
            contentId = xmlroot.find('contentId').text
            consumeCode = xmlroot.find('consumeCode').text
            orderPlatformId = xmlroot.find('cpparam').text[2:]
        except Exception as e:
            msg = 'failure'
            TyContext.ftlog.error('TuYouPayYdjd.doYdjdCallback:', msg, e)
            return TuYouPayYdjd.XML_RET % (1, msg)

        notifys['pay_appid'] = contentId
        notifys['third_prodid'] = consumeCode
        notifys['third_userid'] = userId

        if ret != '0' or status != '1800':
            msg = 'ret(%s) is not 0 or status(%s) is not 1800' % (ret, status)
            TyContext.ftlog.error('TuYouPayYdjd.doYdjdCallback:', msg)
            PayHelper.callback_error(orderPlatformId, msg, notifys)
            return TuYouPayYdjd.XML_RET % (1, 'failure')

        isOk = PayHelper.callback_ok(orderPlatformId, -1, notifys)
        if isOk:
            return TuYouPayYdjd.XML_RET % (0, 'successful')
        else:
            return TuYouPayYdjd.XML_RET % (1, 'failure')
Exemple #21
0
    def doJiuxiuCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.info('doJiuxiuCallback start rparam=', rparam)

        try:
            orderPlatformId = rparam['orderPlatformId']
            total_fee = rparam['amount']
            sign = rparam['sign']
            thirdorderid = rparam['orderId']
        except:
            TyContext.ftlog.error(
                'doJiuxiuCallback->ERROR, param error !! rparam=', rparam)
            return 'fail'
        # 签名校验
        if not cls.__verify_sign(rparam, sign):
            TyContext.ftlog.error(
                'TuYouPayJiuxiu.doJiuxiuCallback verify error !!')
            return 'fail'

        rparam['chargeType'] = '9xiu'
        rparam['third_orderid'] = thirdorderid
        total_fee = float(total_fee)
        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'success'
        else:
            return 'fail'
Exemple #22
0
    def doIDOCallback(cls, rpath):
        TyContext.ftlog.info('doIDOCallback start')
        rparam = TyContext.RunHttp.convertArgsToDict()

        try:
            orderidconfig = TyContext.Configure.get_global_item_json(
                'IDO_orderid', {})
            start = orderidconfig.get(str(rparam['price']), None)[0]
            end = orderidconfig.get(str(rparam['price']), None)[1]
            shortOrderPlatformId = rparam['order_code'][start:end]
            orderPlatformId = ShortOrderIdMap.get_long_order_id(
                shortOrderPlatformId)
            sign = rparam['sign']
        except:
            TyContext.ftlog.error(
                'doIDOCallback->ERROR, param error !! rparam=', rparam)
            return 'error'

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

        rparam['chargeType'] = 'linkyun.ido'
        rparam['third_orderid'] = rparam['orderID']
        total_fee = float(rparam['price']) / 100
        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'successful'
        else:
            return 'error'
Exemple #23
0
    def doLenovoCallback(cls, 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'

        appkeyconfig = TyContext.Configure.get_global_item_json(
            'lenovo_appkeys', {})
        appKey = appkeyconfig[str(appId)]
        sign = rparam['sign']
        if cls.verifySign(transdata, sign, appKey) != True:
            TyContext.ftlog.info(
                'doLenovoCallback->ERROR, sign error !! transdata=', transdata,
                'sign=', sign)
            return 'ERROR'

        orderPlatformId = datas['exorderno']

        total_fee = float(datas['money']) / 100
        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)

        if isOk:
            return 'SUCCESS'
        else:
            return 'ERROR'
Exemple #24
0
    def doiToolsPayCallback(cls, rpath):
        postData = TyContext.RunHttp.get_body_content()
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postData: ', postData)
        paramslist = postData.split('&')
        params = {}
        for k in paramslist:
            paramdata = k.split('=')
            params[paramdata[0]] = paramdata[1]
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postParams: ', params)

        for k in params.keys():
            params[k] = urllib.unquote(params[k])
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postParams_urldecode: ', params)

        pristr = params['notify_data']
        sign = params['sign']
        data = rsa_decrypto_with_publickey(pristr, iTools_pubkey_str, 1)
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback iTools callback data: ', data)
        rparam = json.loads(data)
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback notify_data: ', rparam)
        try:
            orderPlatformId = rparam['order_id_com']
            amount = rparam['amount']
            account = rparam['account']
            third_orderid = rparam['order_id']
            result = rparam['result']
            user_id = rparam['user_id']
        except:
            TyContext.ftlog.error('TuYouPayiTools->doiToolsPayCallback Get params in iTools callback ERROR!')
            return 'fail'
        if 0 != cmp('success', result):
            TyContext.ftlog.error('TuYouPayiTools->doiToolsPayCallback Charge failed!')
            errormsg = 'user use ' + account + ' charge ' + result
            PayHelper.callback_error(orderPlatformId, errormsg, rparam)

        # veriry_result = cls.rsa_verify(data, sign, iTools_pubkey_str)
        veriry_result = _verify_with_publickey_pycrypto(data, sign, _iTools_pubkey_py)
        if not veriry_result:
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Verify failed! data: %s, sign: %s, iTools_pubkey_str: %s'
                % (data, sign, iTools_pubkey_str))
            return 'fail'

        rparam['third_orderid'] = third_orderid
        PayHelper.callback_ok(orderPlatformId, amount, rparam)
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback user %s charge % successed! ' % (user_id, amount))
        return 'success'
Exemple #25
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']
        PayHelper.callback_ok(rparam['trade_no'],
                              float(rparam['amount']) / 100, rparam)
        return success
Exemple #26
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:
                PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
                TyContext.ftlog.info('doMaopaoCallback->SUCCESSFUL rparam', rparam)
                return 'result=0'
            else:
                errinfo = '支付失败'
                PayHelper.callback_error(orderPlatformId, errinfo, rparam)
                TyContext.ftlog.error('doMaopaoCallback->ERROR, failDesc', errinfo, 'rparam', rparam)
        else:
            errinfo = '签名校验失败'
            PayHelper.callback_error(orderPlatformId, errinfo, rparam)
            TyContext.ftlog.error('doMaopaoCallback->ERROR, failDesc', errinfo, 'rparam', rparam)
        return 'result=0'
Exemple #27
0
    def doAiGameCallback(self, rpath):
        notifys = TyContext.RunHttp.convertArgsToDict()
        serialno = notifys.get('serialno', '')
        resultcode = notifys.get('resultCode', '')
        resultmsg = notifys.get('resultMsg', '')
        gameUserId = notifys.get('gameUserId', '')
        order_paytype = notifys.get('payType', '')
        validatecode = notifys.get('validatecode', '')

        # 限制ip请求
        # clientIp = TyContext.RunHttp.get_client_ip()
        # TyContext.ftlog.info('TuYouPayAiGame.doAiGameCallback in clientIp=', clientIp)
        # iplist = clientIp.split('.')
        # if len(iplist) != 4 or iplist[0] != '202' or iplist[1] != '102' or iplist[2] != '39' :
        #    return serialno

        if serialno == '' or resultcode == '' or resultmsg == '' or gameUserId == '' or order_paytype == '' or validatecode == '':
            return serialno

        tSign = serialno + gameUserId
        m = md5()
        m.update(tSign)
        vSign = m.hexdigest()
        if validatecode != vSign:
            TyContext.ftlog.info(
                'TuYouPayAiGame.doAiGameCallback->ERROR, sign error !! sign=',
                validatecode, 'vSign=', vSign)
            return serialno

        # 解密得到原始游戏订单号
        orderPlatformId = gameUserId

        TyContext.ftlog.info(
            'TuYouPayAiGame.doAiGameCallback orderPlatformId=',
            orderPlatformId)
        if resultcode == '120':
            #             if int(gameGold) == 0:
            #                 total_fee = -1
            #             else:
            #                 total_fee = int(gameGold)

            notifys['chargeType'] = 'aigame'
            PayHelper.callback_ok(orderPlatformId, -1, notifys)

        return serialno
Exemple #28
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 #29
0
 def doCallback(cls, rpath):
     rparams = TyContext.RunHttp.convertArgsToDict()
     platformOrderId = rparams['extend']
     TyContext.ftlog.debug('TuYouPayLizi->doCallback, rparams=', rparams)
     if not cls.verify_sign(rparams):
         return 'failure'
     isOk = PayHelper.callback_ok(platformOrderId, -1, rparams)
     if isOk:
         return 'success'
     else:
         return 'failure'
Exemple #30
0
    def doCardCallback(cls, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info('cls.doCardCallback->rparam=', rparam)

        version = rparam['version']
        merId = rparam['merId']
        payMoney = rparam['payMoney']
        orderId = rparam['orderId']
        payResult = rparam['payResult']
        privateField = rparam['privateField']
        payDetails = rparam['payDetails']
        md5String = rparam['md5String']
        # signString = rparam['signString']

        if merId != cls.szf_merId:
            TyContext.ftlog.error('cls.doCardCallback-> its not my merId ! merId=', merId, 'my=', cls.szf_merId)
            return 'error'

        cardMoney = rparam.get('cardMoney')
        if cardMoney:
            combineString = version + "|" + merId + "|" + payMoney + "|" + cardMoney + "|" + orderId + "|" + payResult + "|" + privateField + "|" + payDetails + "|" + cls.szf_privateKey
        else:
            combineString = version + merId + payMoney + orderId + payResult + privateField + payDetails + cls.szf_privateKey

        isOk = PayHelper.verify_md5(md5String, combineString)
        if not isOk:
            TyContext.ftlog.error('cls.doCardCallback-> md5 error ! md5String=', md5String, 'combineString=',
                                  combineString)
            return 'error'

        platformOrderId = privateField
        rparam['chargeType'] = 'shenzhoufu.card'

        if payResult != '1':
            # 长连接通知,客户端支付失败
            TyContext.ftlog.error('cls.doCardCallback error, charge return error !!!')
            errcode = 0
            if 'errcode' in rparam:
                errcode = int(rparam['errcode'])
            errorInfo = ''
            if errcode in cls.szf_call_back_code:
                errorInfo = cls.szf_call_back_code[errcode]
            else:
                errorInfo = '神州付-未知错误'
            errorInfo = errorInfo.decode('utf-8')
            PayHelper.callback_error(platformOrderId, errorInfo, rparam)
            return orderId

        total_fee = float(payMoney) / 100
        isOK = PayHelper.callback_ok(platformOrderId, total_fee, rparam)
        if isOK:
            return orderId
        else:
            return 'error'