示例#1
0
 def POST(self):
     args = web.input()
     logger.info(u'入参:%s' %args)
     userCode = args.get('usercode')
     result = {}
     try:
         self.db.execute('SELECT flag FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (userCode,))
         userInfo = self.db.fetchone()
         dbFlag = userInfo['flag']
         if dbFlag == 1:
             dbFlag = 0
             result['busStatus'] = '一直可以缴费'
         else:
             dbFlag = 1
             result['busStatus'] = '缴费成功后无欠费'
         self.db.execute('UPDATE %s SET flag = ?, queryresultcode = ?, updatetime = ? WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (dbFlag, '0000000', DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), userCode))
         self.conn.commit()
         result['status'] = 'SUCCESS'
         result['msg'] = '修改成功'
     except Exception, e:
         logger.error(u'切换状态失败')
         result['msg'] = u'修改失败'
示例#2
0
 def POST(self):
     args = web.input()
     logger.info(u'入参:%s' %args)
     amount = args.get('amount')
     result = {}
     if not amount or len(amount) == 0:
         result['status'] = 'FAIL'
         return
     try:
         addbalance = float(amount)
         if addbalance <=0:
             result['status'] = 'FAIL'
             return
         self.db.execute('SELECT balance FROM %s WHERE merchantkey = ? ORDER BY updatetime desc limit 1' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get('lencee'),))
         querybalance = self.db.fetchone()
         balance = querybalance['balance']
         balance = float(format(balance + addbalance, '.2f'))
         self.db.execute('UPDATE %s SET balance = ?, updatetime = ? WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (balance, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), Global.GLOBAL_MERCHANTS.get('lencee')))
         self.conn.commit()
         result['status'] = 'SUCCESS'
         result['balance'] = balance
     except Exception, err:
         result['status'] = 'ABNORMAL'
         logger.error(u'增加商户预存款异常:%s' %err)
示例#3
0
    def POST(self):
        args = web.input()
        logger.info(u'入参:%s' %args)
        userCode = args.get('usercode')
        channelCode = args.get('channelcode')
        result = {}
        try:
            # 修改欠费明细滞纳金
            self.db.execute('UPDATE %s SET breach = ?, updatetime = ? WHERE channelcode = ? AND usercode = ?' %Global.GLOBAL_TABLE_USER_ARREARS, ('0.0', DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), channelCode, userCode))
            self.conn.commit()

            # 查询用户总欠费、滞纳金
            self.db.execute('SELECT sum(itemmoney) paymentmoney, sum(breach) breach FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_USER_ARREARS, (userCode, ))
            newInfo = self.db.fetchone()

            # 返回结果
            result['status'] = 'SUCCESS'
            result['breach'] = '0.0'
            result['totalmoney'] = float(format(newInfo['paymentmoney'], '.2f'))
            result['totalbreach'] = float(format(newInfo['breach'], '.2f'))
            result['msg'] = '修改成功'
        except Exception, e:
            logger.error(u'清空滞纳金失败')
            result['msg'] = u'修改失败'
示例#4
0
    def applyBill(self, args):
        self.db.execute('SELECT * FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (args.get('userCode'),))
        resultInfo = self.db.fetchone()
        if resultInfo == None:
            return None
        # 查询用户欠费信息
        self.db.execute('SELECT * FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_USER_ARREARS, (args.get('userCode'), ))
        userArrears = self.db.fetchall()
        paymentResultInfos = []
        for arrear in userArrears:
            channelCode = arrear['channelcode']
            itemOutSerialNo = ''
            for paymentItem in json.loads(args.get('paymentOrderItemList')):
                if str(channelCode) == str(paymentItem.get('channelCode')):
                    itemOutSerialNo = paymentItem.get('itemOutSerialNo')
            info = {
                'itemOutSerialNo': itemOutSerialNo,
                'agencyCode': args.get('agencyCode'),
                'userCode': args.get('userCode'),
                'charge': arrear['breach'],
                'itemNo': RandomUtil.random20Str(),
                'money': arrear['itemmoney'],
                'month': arrear['month'],
                'count': str(arrear['count']),
                'startCount': str(arrear['startcount']),
                'endCount': str(arrear['endcount']),
                'status': resultInfo['querystatus'],
                'type': resultInfo['paymentType'],
                'memo': resultInfo['memo'],
                'address': resultInfo['address'],
                #'price': resultInfo['price'],
                'username': resultInfo['username']}
            paymentResultInfos.append(info)
        easyLifeOrderNo = RandomUtil.random32Str()
        self.db.execute('SELECT balance FROM %s WHERE merchantkey = ? ORDER BY updatetime desc limit 1' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get('lencee'),))
        querybalance = self.db.fetchone()
        if not querybalance:
            # 商户预存款未找到
            pass
        balance = querybalance['balance']
        if resultInfo['paymentstatus'] == 'SUCCESS':
            orderStatus = 'SUCCESS'
            resultCode = '0000000'
            # 修改商户预存款
            balance = float(format(balance - float(args.get('paymentAmount')), '.2f'))
            self.db.execute('UPDATE %s SET balance = ?, updatetime = ? WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (balance, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), Global.GLOBAL_MERCHANTS.get('lencee')))
            self.conn.commit()
        elif resultInfo['paymentstatus'] == 'FAIL':
            orderStatus = 'FAIL'
            resultCode = resultInfo['paymentresultcode']
        elif resultInfo['paymentstatus'] == 'HANGUP':
            orderStatus = 'PROCESSING'
            resultCode = '0000107'

        # 是否保持挂起状态
        if resultInfo['ishangup']:
            iskeephangup = 1
        else:
            iskeephangup = 0
        self.db.execute('INSERT INTO easylife_payment_order(easylifeorderno, outbizno, status, paymenttype, usercode, resultcode, paymentamount, iskeephangup, addtime, updatetime) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', (easyLifeOrderNo, args.get('outBizNo'), orderStatus, resultInfo['paymenttype'], args.get('userCode'), resultCode, float(args.get('paymentAmount')), iskeephangup, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S')))
        self.conn.commit()

        # 如果用户表flag=1,更新用户查询结果码为:0000121
        if resultInfo['flag'] == 1:
            self.db.execute('UPDATE %s SET queryresultcode = ? WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, ('0000121', args.get('userCode'),))
            self.conn.commit()
            logger.info(u'更新用户%s查询结果码:%s' %(args.get('userCode'), '0000121'))

        result = {
            'success': 'T',
            'signType': 'MD5',
            'outBizNo': args.get('outBizNo'),
            'orderStatus': orderStatus,
            'orderNo': args.get('orderNo'),
            'easyLifeOrderNo': easyLifeOrderNo,
            'channelId': RandomUtil.random6Str(),
            'balance': balance,
            'resultCode': resultInfo['paymentresultcode'],
            'paymentResultInfos': '%s' %json.dumps(paymentResultInfos, ensure_ascii=False)
        }
        from operator import itemgetter
        import urllib
        sortList = sorted(result.iteritems(), key=lambda d:d[0])
        sign = '&'.join(['%s=%s' %(k,v) for k,v in sortList])
        sign += Global.GLOBAL_MERCHANTS.get('lencee')
        result['sign'] = MD5Util.md5(sign)
        return result
示例#5
0
    def init():
        conn = SQLite.conn()
        conn.text_factory = str
        cursor = conn.cursor()
        # 创建缴费信息表
        cursor.execute('''CREATE TABLE IF NOT EXISTS %s(easylifeorderno text, outbizno text, status text, paymenttype text, usercode text, resultcode text, paymentamount real, iskeephangup integer, addtime datetime, updatetime datetime)''' %(Global.GLOBAL_TABLE_PAYMENT))
        # 创建商户预存款表
        cursor.execute('''CREATE TABLE IF NOT EXISTS %s(merchantkey text, balance real, addtime datetime, updatetime datetime)''' %(Global.GLOBAL_TABLE_BALANCE))
        # 创建缴费用户信息表
        cursor.execute('''CREATE TABLE IF NOT EXISTS %s(usercode text, username text, querystatus text, queryresultcode text, address text, memo text, flag INTEGER, paymentstatus text, paymenttype text, paymentresultcode text, ishangup int, rechangestatus text, addtime datetime, updatetime datetime)''' %(Global.GLOBAL_TABLE_PAYMENT_USER))
        # 创建用户欠费信息表
        cursor.execute('''CREATE TABLE IF NOT EXISTS %s(channelcode test, usercode text, count real, startcount real, endcount real, price real, breach text, itemmoney real, month text, addtime datetime, updatetime datetime)''' %Global.GLOBAL_TABLE_USER_ARREARS)

        # 增加商户预存款信息
        for mer in Global.GLOBAL_MERCHANTS:
            cursor.execute('SELECT * FROM %s WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get(mer),))
            if cursor.fetchone():
                continue
            cursor.execute('INSERT INTO %s(merchantkey, balance, addtime, updatetime) VALUES("%s", %.2f, "%s", "%s")' %(Global.GLOBAL_TABLE_BALANCE, Global.GLOBAL_MERCHANTS.get(mer), 10000, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S')))

        cursor.execute('SELECT * FROM %s' %(Global.GLOBAL_TABLE_PAYMENT_USER))
        if not cursor.fetchone():
            for user in Global.GLOBAL_ACCOUNT:
                # 设置用户缴费后是否没有欠费信息标识
                flag = 0
                if user.get('flag'):
                    flag = 1

                # 添加用户数据
                userCode = user.get('userCode')
                cursor.execute('INSERT INTO %s(usercode, username, querystatus, queryresultcode, address, memo, flag, paymentstatus, paymenttype, paymentresultcode, ishangup, rechangestatus, addtime, updatetime) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' %Global.GLOBAL_TABLE_PAYMENT_USER, (userCode, user.get('userName'), user.get('queryStatus'), user.get('queryResultCode'), user.get('address'), user.get('memo'), flag, user.get('paymentStatus'), user.get('paymentType'), user.get('paymentResultCode'), user.get('isHangup'), user.get('rechangeStatus'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S')))
                conn.commit()

                # 增加用户欠费信息
                userArrears = Global.GLOBAL_ACCOUNT_ARREARS.get(userCode)
                index = 0
                if userArrears:
                    for arrear in userArrears:
                        itemMoney = float(format((arrear.get('count') * arrear.get('price')), '.2f'))
                        cursor.execute('INSERT INTO easylife_user_arrears(channelcode, usercode, count, startcount, endcount, price, breach, itemmoney, month, addtime, updatetime) VALUES(?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?)' %Global.GLOBAL_ACCOUNT_ARREARS, (RandomUtil.random9Str(), userCode, arrear.get('count'), arrear.get('startCount'), (arrear.get('count') + arrear.get('startCount')), arrear.get('price'), str(arrear.get('breach')), itemMoney, DateUtil.getCutDate(month=index), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S')))
                        conn.commit()
                        index = index + 1
        SQLite.close(conn)
示例#6
0
    def execute(self):
        self.db.execute('SELECT * FROM easylife_payment_order WHERE status=? AND iskeephangup=?', ('PROCESSING', 0))
        procs = self.db.fetchall()
        account = {}
        for info in procs:
            self.db.execute('SELECT * FROM %s WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, (info['usercode'],))
            account = self.db.fetchone()
            flagNum = 0
            if account['rechangeStatus']:
                if account['rechangeStatus'] == 'SUCCESS':
                    flagNum = 1
                else:
                    flagNum = 2
            res = self.getresult(info['paymentAmount'], flagNum)
            self.db.execute('UPDATE easylife_payment_order SET status = ?, resultcode = ?, updatetime = ? WHERE easylifeorderno = ?', (res.get('status'), res.get('resultCode'), DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), info['easyLifeOrderNo']))
            self.conn.commit()

            # 如果用户表flag=1,更新用户查询结果码为:0000121
            if account['flag'] == 1:
                self.db.execute('UPDATE %s SET queryresultcode = ? WHERE usercode = ?' %Global.GLOBAL_TABLE_PAYMENT_USER, ('0000121', info['usercode']))
                self.conn.commit()
                logger.info(u'更新用户%s查询结果码:%s' %(info['usercode'], '0000121'))
            logger.info(u'修改订单:%s状态为%s,剩余备付金:%s' %(info['easyLifeOrderNo'], res.get('status'), res.get('balance')))
示例#7
0
 def getresult(self, money, flagNum=0):
     result = {}
     if flagNum:
         num = flagNum
     else:
         num = random.randint(1,2)
     self.db.execute('SELECT balance FROM %s WHERE merchantkey = ? ORDER BY updatetime desc limit 1' %Global.GLOBAL_TABLE_BALANCE, (Global.GLOBAL_MERCHANTS.get('lencee'),))
     querybalance = self.db.fetchone()
     if not querybalance:
         # 商户预存款未找到
         pass
     balance = querybalance['balance']
     if num == 1:
         result['status'] = 'SUCCESS'
         result['resultCode'] = '0000000'
         balance = float(format(balance - float(money), '.2f'))
         self.db.execute('UPDATE %s SET balance = ?, updatetime = ? WHERE merchantkey = ?' %Global.GLOBAL_TABLE_BALANCE, (balance, DateUtil.getDate(format='%Y-%m-%d %H:%M:%S'), Global.GLOBAL_MERCHANTS.get('lencee')))
         self.conn.commit()
     else:
         result['status'] = 'FAIL'
         result['resultCode'] = '0000106'
     result['balance'] = balance
     return result