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')
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)
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': '该卡已注销!'})
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': '网络繁忙,请稍后重试!'})
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': "网络繁忙,请稍后重试!"})