Am 1. Januar 2019 wurde ein Gesetz für vier Mitgliedsgruppen der Russischen Föderation (Moskau, Moskau und Kaluga sowie die Republik Tatarstan) verabschiedet, mit dem eine neue Gewerbesteuer (NAP) als Pilotprojekt eingeführt wurde. Kurz gesagt, seine Hauptaufgabe ist es, Fachleute vor allen Schwierigkeiten von Kleinunternehmen zu bewahren: 6% Steuern (bei Privatunternehmern), obligatorische Rentenbeiträge, deren Höhe jedes Jahr nur für eine Person die Marke von 50.000 Rubel erreicht, Steuererklärung. So unterstützt der Staat Kleinunternehmen, indem er Start-up-Unternehmern eine niedrige Steuer gewährt (4% für Einkünfte von Einzelpersonen und 6% für juristische Personen). Wenn Sie weitere Informationen wünschen, können Sie detaillierte Informationen im Internet anzeigen.
Sogar Personen, die im IT-Bereich arbeiten, sind berechtigt, NAPs zu verwenden. Wie kann das helfen? Sie haben beispielsweise einen Dienst entwickelt, der im Internet funktioniert und Zahlungen akzeptieren möchte. Sie müssen keine juristische Person für eine solche unternehmerische Tätigkeit registrieren und von Anfang an eine Reihe von Problemen lösen. Es reicht aus, sich als Selbständiger zu registrieren und auf Bewährung jede Dienstleistung oder jedes Produkt manuell einzuschlagen. In diesem Moment denkt der Serviceentwickler: "Kann dieser Prozess automatisiert werden?" Und die Antwort hier ist "Natürlich können Sie!" Der Artikel soll Ihnen tatsächlich sagen, wie es geht.
Wichtiger Hinweis: Der Autor des Artikels nutzt die durch das Studium der Anwendung gewonnenen Erkenntnisse nur zur guten Automatisierung der Routine. Er will die gleichen Motive für dich.
Schritt 1. Identifizieren Sie den HTTP-Verkehr
Hier benötigen Sie den offiziellen Steuerantrag „Meine Steuer“. Sie können es über Google Play herunterladen.
Für diesen Artikel reicht es aus, sourceDeviceId (ich vermute, dass dies mit der Android-ID identisch ist) und refreshToken zu bestimmen. Sie können jedoch absolut alle von der Studienanwendung vorgeschlagenen API-Methoden untersuchen. Um dies festzustellen, müssen Sie HTTPS-Anforderungen vom Smartphone empfangen. Für ein Standardgerät ohne Root-Rechte können Sie einen Computer verwenden, das kostenlose Programm Fiddler. Um die Arbeit des Programms zu verstehen, habe ich eine nicht ganz aktuelle
Anleitung verwendet , die jedoch ausreichte, um den https-Verkehr des Smartphones abzufangen und die Anwendung auf dem Computerbildschirm anzuzeigen.
Nachdem Sie alles installiert haben, müssen Sie sich als Steuerzahler registrieren und die Anwendung schließen. Aktivieren Sie dann das Fiddler-Programm, stellen Sie eine Proxy-Verbindung auf Ihrem Smartphone her und starten Sie die Anwendung erneut. Die Anwendung stellt eine Autorisierungsanforderung mit einem Aktualisierungstoken, das zum Zeitpunkt dieses Artikels mit unbegrenzter Dauer erstellt wird:

Wie Sie im Screenshot sehen können, verfügt die Anwendung über die Basisdomäne lknpd.nalog.ru (Subdomain der russischen Steuerdienst-Website) und die API-Version 1. Die Autorisierung für die Methoden wird von Bearer verwendet, das Token dafür wird über die Methode / auth / token generiert. Die Daten aus den Anforderungsfeldern sourceDeviceId und refreshToken sind für Sie äußerst wichtig. Ich habe die refreshToken-Arbeit 3 Tage nach dem Experiment überprüft - es funktioniert, daher können Sie Token sicher 1 Stunde lang nehmen, wobei Sie offensichtlich ein tatsächliches refreshToken haben.
Die Paketversandmethode selbst sieht folgendermaßen aus und verfügt über alle erforderlichen Felder:

Bitte beachten Sie, dass alle Felder erforderlich sind. Das Feld Dienste kann dazu führen, dass Sie mehrere Dienste im Array senden möchten. Auf dem Scheck wird jedoch nur der erste Dienst angezeigt, obwohl die endgültigen Kosten voll sind. Trotzdem ist der Dienst ziemlich feucht und wurde erst kürzlich gestartet. Wir werden nicht weiter darauf eingehen (obwohl es eine Schande ist, dass manchmal mehrere Positionen erforderlich sind).
Sie sollten auch auf die Antwort achten: acceptReceiptUuid: Das Feld enthält einen eindeutigen Prüfcode, der ohne Schwierigkeiten von Ihrer TIN und UUID des Schecks abgerufen werden kann.
Schritt 2. Skriptentwicklung
Um das Automatisierungskonzept schnell zu demonstrieren, wird Python 3.7.2 mit der Anforderungsbibliothek verwendet:
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)
Ersetzen Sie die erforderlichen Werte - das Skript funktioniert wie es sollte. Sie können Fehlerbehandlungsroutinen hinzufügen und die Zustellung verbessern. Das obige Skript zeigt nur das Prinzip der Arbeit mit der Steuer-API NAP.
Hinweis Vielleicht wird die Steuer in Zukunft die API veröffentlichen, aber jetzt tut sie dies nicht mehr, nur weil nur wenige Leute sie brauchen. Daher wird dieses Geschäft auf später verschoben. Ich beeile mich jedoch zu bemerken, dass der offizielle Leitfaden, wenn er veröffentlicht wird, entweder ähnliche Informationen enthält oder in Bezug auf die Autorisierung mit Sicherheit leicht verbessert wird.
UPD: Ich habe eine Dokumentation zur Automatisierung gefunden, die geschrieben ist ... es fühlt sich an wie ein Stellvertreter von Hand: sehr raffiniert und nicht strukturiert. Es wird Zeit geben - ich werde über die offizielle API einen würdigen Artikel über Automatisierung schreiben. Spoiler: Dort ist alles ungefähr gleich, was wir durch den Verkehr gelernt haben. Es werden nur offizielle Methoden mit E-Mail-Anfragen und anderen Schwierigkeiten beschrieben.
Fazit
Abschließend möchte ich festhalten:
Wiederholen Sie dies nicht zu Hause, es ist nichts unmöglich. Selbst eine solche Routine kann leicht automatisiert werden. Kopieren Sie den Code und ändern Sie ihn auf Ihre eigene Weise. Vielleicht werde ich dann die Bibliothek implementieren, damit die Automatisierung für alle viel zugänglicher ist. Ich freue mich auf Ihre objektive Kritik und beschäftige mich weiterhin mit der API. Mein nächstes Ziel ist es, das Prinzip der Autorisierung zu idealisieren und eine Bibliothek für Python zu erstellen.