Aufgabe
TON-Zahlungen sollten direkt in Telegram angenommen werden, ohne Überweisungen von Hand abzugleichen. Die Wallet-Schlüssel dürfen nicht auf dem Server liegen, und jede Zahlung muss eindeutig ihre Rechnung finden.
Lösung
Ein Bot mit python-telegram-bot führt den Dialog und schreibt Rechnungen in PostgreSQL. Ein Hintergrundjob im selben Prozess liest alle 20 Sekunden Überweisungen über toncenter, macht bei der letzten verarbeiteten Transaktion weiter und ordnet eine Überweisung per Kommentar der Rechnung zu. Alle Datenbankabfragen sind parametrisiert.
Umgesetzte Aufgaben
- Rechnungen über beliebige Beträge mit eindeutigem Kommentar im Bot-Menü gebaut
- Tonkeeper-Button mit ausgefüllter Adresse, Betrag und Kommentar bereitgestellt
- Beobachter gebaut, der die Händler-Wallet liest und Überweisungen mit Rechnungen abgleicht
- Zahlung nur bei passendem Kommentar und ausreichendem Betrag verbucht
- Unbezahlte Rechnungen nach Ablauf storniert und den Käufer informiert
- Beträge als ganze Nanotons gespeichert, ohne Gleitkomma
- Ohne private Schlüssel ausgekommen: der Dienst nutzt nur die öffentliche Adresse
Ergebnis
Der Käufer zahlt mit zwei Fingertipps und bekommt sofort eine Bestätigung im Chat, der Händler gleicht nichts mehr ab. Der Code ist offen auf GitHub, der Bot lässt sich vorher im TON-Testnetz ausprobieren.
Technologien
Pythonpython-telegram-botasyncioPostgreSQLasyncpgtoncenter API