入门项目 A5-1 interface-bank 第三方接口1
from db import db_handler
# 提现接口
def withdraw_interface(name, money): # 定义提现接口,传入name与money参数
user_dic = db_handler.select(name)
# 从数据库模块下面提取查找文件函数功能,传入name
# 拿到返回值赋值给便连忙user_dic
money2 = money * 1.05
# 钱2 = 提取的钱x1.05 (加了手续费)
money3 = money * 0.05
if user_dic['balance'] >= money2:
# 如果用户信息字典中的额度 大于 提现与手续费之和
user_dic['balance'] -= money2
# 把用户信息字典中的额度 减去 提现与手续费之和的结果赋值给用户信息字典
info = '用户:[%s] 提现:[%s¥],手续费:[%s]!' % (name, money, money3) # info接收要打印出去的用户提现信息
user_dic['flow'].append(info) # 在用户流水列表中添加流水信息
db_handler.save(user_dic)
# 在数据库模块下面的保存功能函数中,存入最新的字典信息
return True, info # 返回 info接收要打印出去的用户提现信息
else:
return False, '尊敬的用户,您的余额不足,请充值!'
# 转账接口
def transfer_interface(from_name, to_name, money):
# (传入来自用户,给谁,钱数的整型)
# 1.先查找给谁的用户名是否存在
to_user_dic = db_handler.select(to_name)
# 查找给谁的用户名是否存在 将返回结果(用户信息字典/None)给变量名to_user_dic
if not to_user_dic:
# 如果to_user_dic接收到的返回值是None,说明目标用户信息不存在
# if not to_user_dic等同于if true,执行后续代码
return False, '目标用户不存在!'
# 返回False给前端flag,打印'目标用户不存在!'
# 2.查找给谁的用户名是否存在,并拿到返回值,用户信息字典中的余额
from_user_dic = db_handler.select(from_name)
# 查找给谁的用户名是否存在,并拿到返回值,
if from_user_dic['balance'] >= money:
# 如果用户信息字典中的balance作为K对应的值 大于等于 输入的money整型
from_user_dic['balance'] -= money
# 将来自用户的信息字典中 balance作为K对应的值 减去 money整型,重新赋值给from_user_dic['balance']的值
to_user_dic['balance'] += money
# 将目标用户的信息字典中 balance作为K对应的值 加上 money整型,重新赋值给to_user_dic['balance']的值
# 添加流水
info_from_user = '转账成功,用户[%s]转账给用户[%s] %s $!' % (from_name, to_name, money) # info接收要打印出去的用户提现信息
info_to_user = '接收转账,用户[%s]转账给用户[%s] %s $!' % (from_name, to_name, money) # info接收要打印出去的用户提现信息
from_user_dic['flow'].append(info_from_user) # 在用户流水列表中添加流水信息
to_user_dic['flow'].append(info_from_user) # 在用户流水列表中添加流水信息
db_handler.save(from_user_dic)
# 调用数据模块下面的save保存功能函数,存入修改过balance值的 来源 用户信息字典
db_handler.save(to_user_dic)
# 调用数据模块下面的save保存功能函数,存入修改过balance值的 目标 用户信息字典
return True, info_from_user
else:
return False, '尊敬的用户,您的余额不足,请充值!'
# 如果用户信息字典中的balance作为K对应的值 (没有)大于等于 输入的money整型
# 说明来源用户的余额不足,无法完成转账
# 还款接口
def repay_interface(name, money): # 定义还款接口
user_dic = db_handler.select(name) # 在数据模块中调出name的路径,拿到返回值用户信息字典
user_dic['balance'] += money # 用户信息字典中的余额 = 用户信息字典中的余额 + money整型还款金额
db_handler.save(user_dic) # 调用数据模块下面的保存功能函数,保存更新的用户信息字典
return '还款[%s]成功!' % money # 返回还款额数
# 流水接口
def check_flow_interface(name): # 定义查看流水接口功能函数
user_dic = db_handler.select(name) # 使用数据库模块里面的查找用户名路径函数
# 拿到返回值 用户信息字典 赋值给变量名 user_dic
return user_dic['flow']
# 返回用户信息字典中以flow(流水)作为K的值
# 查询余额接口
def check_balance_interface(name):
user_dic = db_handler.select(name)
return user_dic['balance']
# 支付接口
def pay_interface(name, cost): # 定义支付功能函数,传参(用户姓名,商品总额)
user_dic = db_handler.select(name) # 调用db数据模块下面的查询路径函数,得到返回值(用户信息字典)
if user_dic['balance'] >= cost: # 如果用户信息字典中的余额 大于等于 商品总额
user_dic['balance'] -= cost # 用户信息字典中的余额 减去 商品总额 再赋值给 用户信息字典中的余额
user_dic['shopping_cart'] = {} # 支付过后,清空购物车
db_handler.save(user_dic) # 调用db数据模块的保存功能函数,存入用户更新了余额的信息字典
return True, '支付成功!' # 返回给外界 True,'支付成功!'
else: # 其他情况,即余额小于商品总额的情况
return False, '消费失败!' # 返回给外界 False,'消费失败!'
入门项目 A5-1 interface-bank 第三方接口1的更多相关文章
- JavaSE入门学习21:Java面向对象之接口(interface)(二)
一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...
- android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类 ...
- Java Web系统经常使用的第三方接口
1. Web Service 接口 1.1 接口方式说明和长处 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为client去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- Java Web系统常用的第三方接口
1. Web Service 接口 1.1 接口方式说明和优点 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为客户端去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- 使用HttpClient调用第三方接口
最近项目中需要调用第三方的Http接口,这里我用到了HttpClient. 首先我们要搞明白第三方接口中需要我们传递哪些参数.数据,搞明白参数以后我们就可以使用HttpClient调用接口了. 1.调 ...
- SpringMVC 结合HttpClient调用第三方接口实现
使用HttpClient 依赖jar包 1:commons-httpclient-3.0.jar 2:commons-logging-1.1.1.jar 3:commons-codec-1.6.jar ...
- 30分钟入门Java8之默认方法和静态接口方法
30分钟入门Java8之默认方法和静态接口方法 前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方 ...
- 根据ip地址从第三方接口获取详细的地理位置
最近项目某个功能需要根据ip地址从第三方接口获取详细的地理位置,从网上找了很多例子,主要接口有新浪的,淘宝的,腾讯的.试了淘宝的,如果是数量级小的还可以,如果数量级达到上十万级就速度慢了,会导致系统崩 ...
- ASP.NET和支付宝合作开发第三方接口的注意事项
最近公司和支付宝合作开发第三方接口的项目,这里把过程中需要注意的地方说明一下: 前提:一般来说单个银行不接收个人或私企开通支付接口.因此,和第三方支付公司合作,签订合约开放接口就是通行的做法. 流程: ...
- 调用支付宝第三方接口(沙箱环境) SpringMVC+Maven
一.蚂蚁金服开放平台的操作 网址:https://open.alipay.com/platform/home.htm 支付宝扫码登陆
随机推荐
- Beautiful Soup 学习手册
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式 快速开始 下面的一段HTML代码将作为例 ...
- 【题解】Luogu P3931 SAC E#1 - 一道难题 Tree
原题传送门 题目几乎告诉你要用最大流 先进行搜索,将树的叶子节点都连到一个虚拟点T上,流量为inf(这样不会干扰到前面部分的最大流) 其他边按树的形态连边,以根节点为S,跑一变最大流即可求出答案 #i ...
- Servlet运行原理以及生命周期
一.Servlet生命周期: Servlet加载.实例化.初始化.服务.销毁. 1.初始化init(): 当服务启动时,Servlet被装入tomcat或者其他服务器容器时执行(服务器容器从启动到停止 ...
- JavaScript-DOM(1)
DOM简介 DOM 节点分类 DOM 节点层级关系 1.文档节点 1.父节点 2.标签(元素)节点 2.子节点 3.属性节点 3.兄弟节点 4.注释节点 4.根节点 5.文本节点 DOM节点分类 DO ...
- 两个JS的不好设计
1.相等判断 if(a){} 相当于 if(a == ture){} 然而下面的相等判断都为true 0 == false "" == false "false" ...
- burpsuit 无法导入证书,抓取https的解决办法
想用burpsuit中转https流量,需要安装证书: 确保浏览器能访问http 后,访问:http://burp/ 点击右上角下载证书. 然后导入,这些网上都有方法. 但如果你试了后: ①提示导入失 ...
- php向mariaDB插入数据时乱码问题解决 --- mysqli_set_charset(设置默认字符编码)
参考文章: https://www.w3schools.com/php/func_mysqli_set_charset.asp http://php.net/manual/zh/mysqli.set- ...
- ionic 解决APP安装到android上 状态栏显示黑色
首先移除原本的 cordova-plugin-statusbar 运行命令: cordova plugin rm cordova-plugin-statusbar 最后需要重新安装: cordova ...
- pipenv使用总结
一.pipenv默认虚拟环境路径在用户目录下的.\virtualenvs下,不同虚拟环境目录不同,如果要更改为在当前项目根目录下,可以在项目根目录下手动创建.venv目录. 1.linux环境下设置环 ...
- Django框架简介-开头
一.MVC框架和MTV框架(了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制 ...