Exemplo n.º 1
0
def one_detail():
    try:
        context = dict()
        card_number = request.args.get('card_number')
        card_status = SqlData.search_one_card_status(card_number)
        if card_status:
            card_id = SqlData.search_card_field('card_id', card_number)
            card_detail = svb.card_detail(card_id)
            available_balance = card_detail.get('data').get(
                'available_balance')
            context['available_balance'] = available_balance / 100
            context['card_status'] = "正常"
        else:
            context['available_balance'] = 0
            context['card_status'] = "已注销"
        # for td in []:
        #     info_list.append({
        #         "status": td.get("status"),
        #         "amount": td.get("amount"),
        #         "description": td.get("description"),
        #         "date": td.get("date"),
        #         "cardTransactionId": td.get("cardTransactionId"),
        #         "lastFour": td.get("lastFour"),
        #         "alias": td.get("alias"),
        #         "originalCurrency": td.get("originalCurrency"),
        #     })
        # context['pay_list'] = info_list
        return render_template('user/card_detail.html', **context)
    except Exception as e:
        logging.error((str(e)))
        return render_template('user/404.html')
Exemplo n.º 2
0
def handing_fee():
    # 收取交易币种不是USD的手续费
    res = SqlData.search_settle_trans()
    for i in res:
        merchant_currency = i.get('merchant_currency')
        info_id = i.get('info_id')
        if merchant_currency == 'USD':
            SqlData.update_settle_handing(0, info_id)
        else:
            card_number = i.get('card_number')
            billing_amount = i.get('billing_amount')
            # 计算手续费
            hand_money = round(billing_amount * 0.02, 2)
            # 查询卡的归属客户
            user_id = SqlData.search_card_field('user_id', card_number)
            # 查询扣费前的账户余额
            before_balance = SqlData.search_user_field('balance', user_id)
            # 扣除手续费
            SqlData.update_balance(-hand_money, user_id)
            # 扣费后的余额
            balance = SqlData.search_user_field('balance', user_id)
            # 插入扣费记录
            n_time = xianzai_time()
            SqlData.insert_account_trans(n_time, '支出', '手续费', card_number,
                                         hand_money, before_balance, balance,
                                         user_id)

            # 更新扣费金额,表示该交易已扣费
            SqlData.update_settle_handing(hand_money, info_id)
Exemplo n.º 3
0
def card_delete():
    if request.method == "DELETE":

        # 判断是否是子账号用户
        vice_id = g.vice_id
        if vice_id:
            auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
            if auth_dict is None:
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '抱歉您没有权限执行此操作!'
                })
            c_card = auth_dict.get('refund')
            if c_card == 'F':
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '抱歉您没有权限执行此操作!'
                })

        card_number = request.args.get('card_number')
        card_status = SqlData.search_one_card_status(card_number)
        if card_status:
            card_id = SqlData.search_card_field('card_id', card_number)
            card_detail = svb.card_detail(card_id)
            if not card_detail:
                return jsonify({'code': RET.SERVERERROR, 'msg': '网络繁忙,请稍后重试!'})
            available_balance = card_detail.get('data').get(
                'available_balance')
            res = svb.delete_card(card_id)
            if res:
                user_id = g.user_id
                before_balance = SqlData.search_user_field('balance', user_id)
                update_balance = float(available_balance / 100)
                SqlData.update_balance(update_balance, user_id)
                balance = SqlData.search_user_field("balance", user_id)
                SqlData.update_card_info_card_no('status', 'F', card_number)
                n_time = xianzai_time()
                SqlData.insert_account_trans(n_time, TRANS_TYPE.IN, "注销",
                                             card_number, update_balance,
                                             before_balance, balance, user_id)

                return jsonify({
                    "code": RET.OK,
                    "msg": '注销成功!退回金额:$' + str(update_balance)
                })

        else:
            return jsonify({'code': RET.SERVERERROR, 'msg': '该卡已注销!'})
Exemplo n.º 4
0
def top_up():
    # 判断是否是子账号用户
    vice_id = g.vice_id
    if vice_id:
        auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
        if auth_dict is None:
            return render_template('user/no_auth.html')
        c_card = auth_dict.get('top_up')
        if c_card == 'F':
            return render_template('user/no_auth.html')
    if request.method == 'GET':
        card_number = request.args.get('card_number')
        context = dict()
        context['card_number'] = card_number
        return render_template('user/card_top.html', **context)
    if request.method == 'POST':
        data = json.loads(request.form.get('data'))
        user_id = g.user_id
        card_number = request.args.get('card_number')
        top_money = data.get('top_money')
        user_data = SqlData.search_user_index(user_id)
        before_balance = user_data.get('balance')
        if not check_float(top_money):
            results = {"code": RET.SERVERERROR, "msg": "充值金额不能为小数!"}
            return jsonify(results)
        if int(top_money) > before_balance:
            results = {
                "code": RET.SERVERERROR,
                "msg": "本次消费金额:" + str(top_money) + ",账号余额不足!"
            }
            return jsonify(results)
        card_status = SqlData.search_one_card_status(card_number)
        if not card_status:
            return jsonify({'code': RET.SERVERERROR, 'msg': "该卡已注销,不支持此操作!"})
        card_id = SqlData.search_card_field('card_id', card_number)
        card_detail = svb.card_detail(card_id)
        if card_detail:
            available_balance = card_detail.get('data').get(
                'available_balance')
            now_balance = available_balance + int(top_money) * 100
            res = svb.update_card(card_id, now_balance)
            if res:
                top_money = int(top_money)
                top_money_do_money = top_money - top_money * 2
                SqlData.update_balance(top_money_do_money, user_id)
                n_time = xianzai_time()
                balance = SqlData.search_user_field('balance', user_id)
                SqlData.insert_account_trans(n_time, TRANS_TYPE.OUT,
                                             DO_TYPE.TOP_UP, card_number,
                                             top_money, before_balance,
                                             balance, user_id)
                return jsonify({
                    'code':
                    RET.OK,
                    'msg':
                    '充值成功!账户余额:$ ' + str(balance) + ",卡余额:$ " +
                    str(now_balance / 100)
                })
            return jsonify({'code': RET.SERVERERROR, 'msg': '网络繁忙,请稍后重试!'})
        else:
            return jsonify({'code': RET.SERVERERROR, 'msg': '网络繁忙,请稍后重试!'})
Exemplo n.º 5
0
def bento_refund():
    # 判断是否是子账号用户
    vice_id = g.vice_id
    if vice_id:
        auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
        if auth_dict is None:
            return jsonify({'code': RET.SERVERERROR, 'msg': '抱歉您没有权限执行此操作!'})
        c_card = auth_dict.get('refund')
        if c_card == 'F':
            return jsonify({'code': RET.SERVERERROR, 'msg': '抱歉您没有权限执行此操作!'})

    # 参数获取
    data = request.form.get("data")
    card_number = request.form.get("card_number").strip()
    user_id = g.user_id

    # 金额的校验
    if "-" in str(data):
        return jsonify({"code": RET.SERVERERROR, 'msg': "请输入正确金额!"})
    if "." in str(data):
        if len(str(data).split(".")[1]) > 2:
            return jsonify({"code": RET.SERVERERROR, 'msg': "精度不大于两位小数!"})

    # 校验卡状态(注销无法更新)
    card_status = SqlData.search_one_card_status(card_number)
    if not card_status:
        return jsonify({'code': RET.SERVERERROR, 'msg': "该卡已注销,不支持此操作!"})

    # 查询卡余额,校验退款金额大小
    card_id = SqlData.search_card_field('card_id', card_number)
    card_detail = svb.card_detail(card_id)
    if not card_detail:
        return jsonify({"code": RET.SERVERERROR, 'msg': "网络繁忙,请稍后重试!"})
    available_balance = card_detail.get('data').get('available_balance')
    refund_money = float(data) * 100
    if refund_money >= available_balance:
        return jsonify({
            "code": RET.SERVERERROR,
            'msg': "卡余额不足!当前卡余额:$" + str(available_balance / 100)
        })

    # 更新卡余额
    update_money = int(available_balance - refund_money)
    res = svb.update_card(card_id, update_money)

    # 成功则更新账户余额
    if res:
        before_balance = SqlData.search_user_field('balance', user_id)
        SqlData.update_balance(float(data), user_id)
        balance = SqlData.search_user_field("balance", user_id)
        n_time = xianzai_time()
        SqlData.insert_account_trans(n_time, TRANS_TYPE.IN, "退款", card_number,
                                     float(data), before_balance, balance,
                                     user_id)

        return jsonify({
            "code": RET.OK,
            "msg": '退款成功!当前卡余额:$' + str(update_money / 100)
        })
    else:
        return jsonify({"code": RET.SERVERERROR, 'msg': "网络繁忙,请稍后重试!"})