Para quem não leu as partes anteriores:
Por que você precisa de pagamento?
Na vida de todo desenvolvedor de bot de telegrama, chega um momento em que você precisa implementar o pagamento em seu bot. E aqui você tem duas maneiras. O primeiro é registrar uma entidade TIN, IP / Legal e conectar o pagamento oficial de um telegrama ou apenas usar um serviço de terceiros como Free-Kassa, QIWI, etc. Eu acho que a escolha é óbvia, neste artigo vou usar o QIWI, porque eu quero.
Para começar, vamos pensar em como o bot verificará o que veio, de quem e quanto. O capitão de provas me diz que será necessário levar todo o histórico de transferências para uma conta, que usaremos como nossa conta para aceitar pagamentos. Vamos fazer isso:
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)
Na constante
QIWI_TOKEN, escrevemos a chave da API para trabalhar com o QIWI, você pode obtê-lo
aqui . E em
QIWI_ACCOUNT , registramos o número de telefone da sua conta principal. Se você fez tudo corretamente, não haverá erros. Os dados estão no dicionário
req , que inclui listas de dados. Mais especificamente
(não leia) a variável req que inclui o dicionário de dados, que contém uma lista de dicionários numerados que incluem listas.
Aqui devemos obter um número de telefone, um comentário (mais tarde você entenderá o porquê) e o valor da transação. Para continuar escrevendo o código, você precisará usar bancos de dados, se você não sabe nada ou nem sabe o que é -
aqui está um link para um artigo que descreve o trabalho com o
Sqlite3 com bastante clareza. Agora vamos pensar no algoritmo que será usado em nosso bot.
- Geramos um número aleatório de 100.000 a 999999.
- Inserir temporariamente os dados na tabela (ID do usuário, número de telefone, quantidade gerada pelo número aleatório anterior)
- Verificamos o comentário, a conta e o valor no dicionário req .
- Se a quantia, o telefone e o comentário concordarem, contamos o pagamento.
- Adicione sua funcionalidade após o pagamento ...
Agora você provavelmente está pensando: por que precisa verificar este comentário e gerar um número aleatório? E tudo engenhoso é simples. O fato é que, se apenas verificarmos a quantidade e o telefone, o bot poderá encontrar a transação enviada anteriormente e contá-la. Simplificando, isso é feito para segurança e minimização de erros. Vamos continuar escrevendo o código:
Crie uma tabela:
import sqlite3 c.execute("CREATE TABLE IF NOT EXISTS payment_query(user_id INTEGER, phone TEXT, sum INTEGER, code INTEGER)")
Nós inserimos os dados na tabela assim que o usuário quiser pagar algo no seu bot.
from random import randint
Em seguida, você precisa fazer algum tipo de verificação de pagamento; no meu caso, será um teclado embutido:
Aqui está um exemplo do meu bot recente.
Assim que o usuário clicar no botão de pagamento, o bot receberá um histórico de tradução com o QIWI. Agora precisamos fazer a coisa mais importante - a verificação do pagamento.
result = c.execute(f"SELECT * FROM payment_query WHERE user_id = {call.message.chat.id}").fetchone()
Só isso, espero ter ajudado você a resolver outro problema! Clientes, onde vocês estão? Escreva-me em telegramas:
dimagorovtsov , esperando por todos!