单行应用

monobank的Python项目详细描述


python monobank

python-monobank

Monobank API的Python客户端(https://api.monobank.ua/docs/

安装

pip install monobank

用法

个人API

  1. https://api.monobank.ua/

  2. 使用该令牌初始化客户端:

importmonobanktoken='xxxxxxxxxxxxxxx'mono=monobank.Client(token)user_info=mono.get_client_info()print(user_info)

方法

获取货币

>>>mono.get_currency()[{'currencyCodeA':840,'currencyCodeB':980,'date':1561686005,'rateBuy':25.911,'rateSell':26.2357},{'currencyCodeA':978,'currencyCodeB':980,'date':1561686005,'rateBuy':29.111,'rateSell':29.7513},...

获取客户信息

>>>mono.get_client_info(){'name':'Dmitriy Dubilet''accounts':[{'id':'accidxxxxx''balance':100000000,'cashbackType':'UAH','creditLimit':100000000,'currencyCode':980,}],}

获取语句

>>>mono.get_statements('accidxxxxx',date(2019,1,1),date(2019,1,30))[{'id':'iZDPhf8v32Qass','amount':-127603,'balance':99872397,'cashbackAmount':2552,'commissionRate':0,'currencyCode':978,'description':'Smartass club','hold':True,'mcc':5411,'operationAmount':4289,'time':1561658263},...]

您还可以传递datetime对象

>>>mono.get_statements('accidxxxxx',datetime(2019,1,1,11,15),datetime(2019,1,2,11,15))

公司API

文档在这里-https://api.monobank.ua/docs/corporate.html

公司api与公共api有相同的方法,但它没有速率限制,如果您处理数据用于商业用途(或只是存储大量个人数据),则建议使用这种方法。

访问

1)生成私钥
openssl ecparam -genkey -name secp256k1 -rand /dev/urandom -out priv.key

这将输出文件priv.key

警告:不要与任何人共享,不要将其存储在公共git存储库中

2)生成公钥
openssl ec -in priv.key  -pubout -out pub.key

这将输出文件pub.key

3)请求API访问

api@monobank.ua发送电子邮件-描述您的项目,并附加pub.key(!!!不是私人钥匙!!!)

请求Monobank用户的许可

一旦Monobank团队批准了您的应用程序,您就可以开始使用公司API:

1)创建Monobank用户访问请求
private_key='/path/to/your/priv.key'request=monobank.access_request('ps',private_key)

如果一切正常,您应该收到以下信息:

print(request){'tokenRequestId':'abcdefg_Wg','acceptUrl':'https://mbnk.app/auth/abcdefg_Wg'}

您应该将tokenrequestid保存到数据库,然后向用户提供链接accepturl

注意:要获得用户接受通知,您可以使用web回调:

monobank.access_request('ps',private_key,callback_url='https://yourserver.com/callback/')

2)检查用户是否接受

您可以检查用户是否接受这样的访问请求:

request_token='abcdefg_Wg'# the token from access_request resultprivate_key='/path/to/your/priv.key'mono=monobank.CorporateClient(request_token,private_key)mono.check()# returns True if user accepted, False if not

3)使用方法

一旦用户接受您的访问请求,您就可以开始使用与公共api相同的所有方法了

mono.get_statements(....)

处理错误

如果使用个人api,可能会遇到“请求过多”错误。要正确捕获并重试,请使用monobank.toomanyrequests异常

try:mono.get_statements(....)exceptmonobank.TooManyRequest:time.sleep(1)# try again:mono.get_statements(....)

您可以使用RateLimitor库(如https://pypi.org/project/ratelimiter/)下载所有事务

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何显示因用户而异的SQLite存储数据?   转换java。sql。将映射传递给Jackon的valueToTree方法时StringNode的时间戳   从java中的列表json获取值   unicode Java字符存储在什么编码中?   java如何让Spring数据存储库中的默认方法命中缓存?   java使用readClassDescriptor()和resolveClass()来允许序列化版本控制   数组通过另一个矩阵的一部分填充矩阵   如果包含使用正则表达式的字符串,则替换父XML标记的java   java清除SharedReference中的单个变量   java将变量值从一个jsp页面传输到另一个jsp页面   java JDBC+SQLite:DriveManager不加载所需的驱动程序   相同源代码的java Kotlin构建生成不同的二进制文件   Java中的元组枚举