对于那些没有阅读前面部分的人:
为什么需要付款?
在每个电报机器人开发人员的生活中,都有一段时间需要在您的机器人中实现付款。 在这里,您有两种方法。 首先是注册TIN,IP /法人实体并连接电报的官方付款,或者仅使用Free-Kassa,QIWI等第三方服务。 我认为选择是显而易见的,在本文中,我将使用QIWI,因为我希望如此。
首先,让我们考虑一下该机器人将如何检查结果,来自谁以及多少。 证据负责人告诉我,有必要将整个转账历史记录到一个帐户中,我们将其用作接受付款的帐户。 让我们做吧:
import requests import json QIWI_TOKEN = '' QIWI_ACCOUNT = '' s = requests.Session() s.headers['authorization'] = 'Bearer ' + QIWI_TOKEN parameters = {'rows': '50'} h = s.get('https://edge.qiwi.com/payment-history/v1/persons/'+ QIWI_ACCOUNT +'/payments', params = parameters) req = json.loads(h.text)
在
QIWI_TOKEN常量中
,我们编写了用于QIWI的api密钥,您可以
在此处获取。 然后在
QIWI_ACCOUNT中记录您的主要帐户的电话号码。 如果您正确执行了所有操作,则不会出现任何错误。 数据在
req词典中,其中包括数据列表。 更具体地说
(不读取) 包括数据字典 的 req变量,该数据字典包含一个包含列表的带编号字典的列表。
在这里,我们应该获得一个电话号码,一个注释(稍后您将了解原因)和交易金额。 为了继续编写代码,如果您
一无所知甚至不知道它是什么,则需要能够使用数据库-
这是指向一篇文章的链接,该链接非常清楚地描述了使用
Sqlite3 。 现在,让我们考虑一下将在我们的机器人中使用的算法。
- 我们生成一个从100,000到999999的随机数。
- 暂时将数据输入到表中(用户ID,电话号码,生成的金额较早的随机数)
- 我们在req词典中检查注释,科目和金额。
- 如果金额,电话和评论同意,我们将计算付款。
- 付款后添加您的功能...
现在您可能正在思考,为什么需要检查此注释并生成一个随机数? 而且所有的创意都很简单。 事实是,如果我们仅检查金额和电话,那么该漫游器将能够找到先前发送的交易并对其进行计数。 简而言之,这样做是为了提高安全性并最大程度地减少错误。 让我们继续编写代码:
创建一个表:
import sqlite3 c.execute("CREATE TABLE IF NOT EXISTS payment_query(user_id INTEGER, phone TEXT, sum INTEGER, code INTEGER)")
一旦用户想在您的漫游器中付款,我们就会在表中输入数据。
from random import randint
接下来,您需要进行某种付款验证,在我的情况下,它将是嵌入式键盘:
这是我最近的机器人的一个例子。
一旦用户单击付款按钮,该机器人将收到QIWI的翻译历史记录。 现在,我们需要做最重要的事情-付款验证。
result = c.execute(f"SELECT * FROM payment_query WHERE user_id = {call.message.chat.id}").fetchone()
就这样,我希望我能帮助您解决另一个问题! 客户,你在哪里? 用电报给我写信:
dimagorovtsov ,等着大家!