Em 1 de janeiro de 2019, foi aprovada uma lei para quatro entidades constituintes da Federação Russa (regiões de Moscou, Moscou e Kaluga, bem como a República do Tartaristão), introduzindo um novo imposto profissional (NAP) como projeto piloto. Em suma, sua principal tarefa é salvar figuras profissionais de todas as dificuldades das pequenas empresas: imposto de 6% (no caso de empreendedores privados), contribuições obrigatórias para pensões, cujo montante a cada ano apenas para uma pessoa se aproxima da marca de 50 mil rublos, declaração de impostos. Assim, o estado apóia as pequenas empresas fornecendo aos empreendedores iniciantes um imposto baixo (4% para renda de pessoas físicas e 6% para pessoas jurídicas). Se você quiser mais detalhes, poderá ver informações detalhadas na Internet.
Mesmo as pessoas que trabalham na área de TI têm direito a usar NAPs. Como isso pode ajudar? Por exemplo, você desenvolveu um serviço que funciona na Internet e deseja aceitar pagamentos. Você não precisa registrar uma entidade legal para essa atividade empreendedora e resolver vários problemas desde o início. Basta registrar-se como trabalhador por conta própria e, em liberdade condicional, martelar manualmente em cada serviço ou produto. Nesse exato momento, o desenvolvedor do serviço pensa: "Esse processo pode ser automatizado?" E a resposta aqui é "Claro que você pode!" O artigo, na verdade, é para lhe dizer como fazê-lo.
Nota importante: o autor do artigo utiliza o conhecimento adquirido como resultado do estudo do aplicativo apenas para uma boa automação da rotina. Ele quer os mesmos motivos para você.
Etapa 1. Identifique o tráfego HTTP
Aqui você precisará do pedido de contribuinte oficial "Meu imposto". Você pode baixá-lo via Google Play.
Para este artigo, será suficiente determinar o sourceDeviceId (suspeito que seja o mesmo que o id do android) e o refreshToken, no entanto, você poderá explorar absolutamente todos os métodos de API propostos pelo aplicativo de estudo. Para determiná-lo, você precisa receber solicitações HTTPS do smartphone. Para um dispositivo de estoque sem direitos de root, você pode usar um computador, o programa gratuito Fiddler. Para entender o trabalho do programa, usei um
guia não muito atualizado, mas foi suficiente para interceptar o tráfego https do smartphone e exibir o aplicativo na tela do computador.
Depois de instalar tudo, você precisa se registrar como contribuinte e fechar o aplicativo. Em seguida, ative o programa Fiddler, estabeleça uma conexão proxy no seu smartphone e inicie o aplicativo novamente. O aplicativo fará uma solicitação de autorização com um token de atualização, que no momento deste artigo é criado com uma duração ilimitada:

Como você pode ver na captura de tela, o aplicativo possui o domínio base lknpd.nalog.ru (subdomínio do site de serviço fiscal russo) e a versão 1. da API. A autorização para os métodos é usada pelo Bearer, o token é gerado pelo método / auth / token. Os dados dos campos de solicitação sourceDeviceId e refreshToken são extremamente necessários para você. Eu verifiquei o trabalho refreshToken 3 dias após o experimento - funciona, portanto, você pode levar o token com segurança por 1 hora, obviamente tendo um refreshToken real.
O próprio método de envio de encomendas se parece com isso e possui todos os campos necessários:

Observe que todos os campos são obrigatórios. O campo de serviços pode fazer com que você deseje enviar vários serviços na matriz; no entanto, apenas o primeiro serviço será exibido na verificação, embora o custo final esteja cheio. Ainda assim, o serviço é bastante úmido, e foi lançado recentemente, não vamos insistir nisso (embora seja uma pena, de fato, algumas posições serem necessárias).
Você também deve prestar atenção à resposta: allowedReceiptUuid: o campo contém um código de verificação exclusivo, que sem dificuldades pode ser obtido pelo seu NIF e UUID da verificação.
Etapa 2. Desenvolvimento de Script
Para demonstrar rapidamente o conceito de automação, o Python 3.7.2 é usado com a biblioteca de solicitações:
import requests import datetime import shutil TIME_OFFSET = '+03:00' DEVICE_ID = '' REFRESH_TOKEN = '' API_PROVIDER = 'https://lknpd.nalog.ru/api/v1/' TOKEN = '' INN = '' def DO(method, params): headers = {"Authorization":"Bearer "+TOKEN} if TOKEN != '' else {} r = requests.post(API_PROVIDER+method, json=params, headers=headers) print(r.text) return r.json() def get_token(): reqparam = { "deviceInfo": { "appVersion": "1.0.0", "metaDetails": { "browser": "", "browserVersion": "", "os": "android" }, "sourceDeviceId": DEVICE_ID, "sourceType": "android" }, "refreshToken": REFRESH_TOKEN } res = DO('auth/token', reqparam)
Substitua os valores necessários - o script funcionará como deveria. Você pode adicionar manipuladores de erros e melhorar a entrega - o script acima mostra apenas o princípio do trabalho com a NAP da API de impostos.
Nota Talvez no futuro o imposto publique a API, mas agora não faz isso apenas porque poucas pessoas precisam. Portanto, este negócio é adiado para mais tarde. No entanto, apresso-me a notar que, se o guia oficial for publicado, ele terá informações semelhantes ou um pouco melhor, em termos de autorização, com certeza.
UPD: Encontrei documentação sobre automação, que está escrita ... parece um assistente à mão: muito sofisticado e não estruturado. Haverá tempo - escreverei um artigo valioso sobre automação por meio da API oficial. Spoiler: tudo é quase o mesmo que aprendemos no tráfego, apenas os métodos oficiais com solicitações de email e outras dificuldades são descritos.
Conclusão
Concluindo, quero observar:
não repita isso em casa, não há nada impossível. Mesmo uma coisa de rotina pode ser facilmente automatizada. Copie o código, modifique-o à sua maneira. Talvez então eu implemente a biblioteca para que a automação seja muito mais acessível a todos. Aguardo suas críticas objetivas e continuo buscando a API. Meu próximo objetivo é idealizar o princípio de autorização e criar uma biblioteca para Python.