Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
upay:start [2010/07/17 09:17] – refactoring bsx | upay:start [2021/04/18 12:35] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== uPay: Bargeldloses Bezahlen im Club ====== | ====== uPay: Bargeldloses Bezahlen im Club ====== | ||
- | ===== Angepeiltes System | + | ===== Uebersicht |
- | Das System basiert auf einzelnen Tokens, die einen bestimmten Wert haben. | + | Das System basiert auf einzelnen Tokens, die einen bestimmten Wert haben. |
- | Werden die Tokens an den dafuer vorgesehenen Stellen (Matemat, RepRap, ...) verwendet werden sie in der (zentralen) Datenbank als benutzt markiert und nichtmehr akzeptiert. Ferner | + | Ein Token besteht aus einer Zufallszahl, |
+ | |||
+ | Werden die Tokens an den dafuer vorgesehenen Stellen (Matemat, RepRap, ...) verwendet werden sie in der (zentralen) Datenbank als benutzt markiert und ein neues Token generiert. Dieses Token wird vom Empfaenger (Matemat) gespeichert und einbehalten. | ||
===== Entwicklung ===== | ===== Entwicklung ===== | ||
- | Mailingliste: | + | * Mailingliste: |
- | [[upay_evolution]] | + | |
- | + | * upay Library: https:// | |
+ | * Fnordload: https:// | ||
+ | * Matemat: https:// | ||
+ | * Laser: https:// | ||
===== Aktueller Stand ===== | ===== Aktueller Stand ===== | ||
* System befindet sich im **Testbetrieb** | * System befindet sich im **Testbetrieb** | ||
- | * Tokens koennen | + | * Tokens koennen |
* Bezahlung nur mit USB-Stick | * Bezahlung nur mit USB-Stick | ||
* Getraenketaste so lange druecken bis die Motoren im Matematen anlaufen! | * Getraenketaste so lange druecken bis die Motoren im Matematen anlaufen! | ||
* wird mittelfristig durch Zusatzhardware fuer Matematen behoben | * wird mittelfristig durch Zusatzhardware fuer Matematen behoben | ||
+ | * API zu erreichen unter https:// | ||
+ | * Taeglicher Datenbank-Dump unter https:// | ||
+ | * Matemat-Tokens unter https:// | ||
- | ===== Technische Infos ===== | + | ===== Aktueller Technischer Stand ===== |
+ | In einer Datenbank werden die Hashes der ausgegeben Tokens (SHA-512) sowie das Ausstelldatum gespeichert und bei Verwendung als benutzt markiert. Die Datenbank enthaelt so keine Informationen, | ||
- | [[tech_status]] | + | Die Tokens werden per USB-Stick vom Matesuechtigen an das System herangetragen. Das System sucht dann nach einer " |
- | Momentan befindet sich auf dem Embeddedrechner im Matemat ein Prototyp des Systems: https:// | + | |
- | In einer Datenbank | + | Die API laeuft auf dem selben Server, der auch die Datenbank |
- | Die Tokens werden per USB-Stick vom Matesuechtigen an das System herangetragen. Das System sucht dann per udev-rule nach einer " | ||
- | Ausserdem befindet sich auf <fill me in> ein HTTP-Server, | + | ===== Technische Infos ===== |
- | + | * [[api|API]] | |
- | Das Datenbanklayout ist zur Zeit noch stark an den Matematen (pricelines) gekoppelt. Logging findet statt (Invalidation der Tokens sowie separat die Priceline-Ausgabe). | + | |
- | + | ||
- | [[api]] | + | |
- | + | ||
- | Grundsaetzliches: | + | |
- | * Token-Listen sind **immer** \n-delimited! | + | |
- | * Bei allen intern Token-Checks (z.B. auch bei /// | + | |
- | * Nur 1 Connection pro IP! | + | |
- | + | ||
- | === Bezahlen | + | |
- | + | ||
- | Die Bezahl-API funktioniert grundsaetzlich in 3 Schritten: **Sessionerstellung**, | + | |
- | + | ||
- | ^ Schritt | + | |
- | | (1) Sessionerstellung | /pay/create | | sessionid | + | |
- | | (2) Tokenuebertragung | / | + | |
- | | (3) Sessionabschluss | + | |
- | | Abbruch | + | |
- | + | ||
- | === Token-Management | + | |
- | + | ||
- | ^ Aktion | + | |
- | | Tokens auf Gueltigkeit ueberpruefen | / | + | |
- | | Neue Tokens generieren | + | |
- | | Tokens auf Server ablegen (neu generierte mit PIN) | / | + | |
- | | Neue Tokens holen (mit PIN) | / | + | |
- | + | ||
- | === Fehlercodes === | + | |
- | + | ||
- | Falls ein HTTP Code != 200 (OK) zurueckgeliefert wird, ist ein Fehler aufgetreten. Die Fehler koennen wie folgt interpretiert werden: | + | |
- | + | ||
- | ^ HTTP Error Code ^ Fehler | + | |
- | | 400 Bad Request | + | |
- | | 401 Unauthorized | + | |
- | | 402 Payment Required | + | |
- | | 404 Not Found | Bei /// | + | |
- | | 503 Service Unavailable | Bei /// | + | |
- | + | ||
- | [[zukunft]] | + | |
- | ===== Planung | + | |
- | + | ||
- | {{ https:// | + | |
- | + | ||
- | Es sollen mehrere Postgresql-Datenbanken aufgesetzt werden, die sich untereinander syncen. Ein Datenbank soll auf Zonk liegen. Diese dient der Synchronisation und zur Erstellung von Backups. | + | |
- | + | ||
- | In den Clubraeumen befindet sich auf auf zwei Rechnen ebenfalls jeweils eine Datenbank mit Frontend auf die ein dort lokal laufender Checkoutserver zugreift. | + | |
- | + | ||
- | Dieser Server bietet den verschiedenen Geraeten im Club die Moeglichkeit Tokens einzureichen und zu nutzen. | + | |
- | + | ||
- | Die Kommunikation zwischen dem Client (Cashier) und Server (Checkout) soll durch gegenseitige Autentifizierung sowie Verschluesselung abgesichert werden. Diese soll allerding auch von einem einfachen 8 oder 32Bit Mikrocontroller handlebar sein, um nicht unbedingt einen kompletten Rechner fuer den Client verwenden zu muessen. | + | |
- | + | ||
- | ===== Zukunft/ | + | |
- | + | ||
- | * Tokens mit festen Wert von 50 Cent? | + | |
- | * Dies mag fuer Getraenke funktionieren, | + | |
- | * Tokens sollte optional mit Verfallsdatum | + | |
- | * < | + | |
- | * Schatzmeister benoetigt eine Verwaltung fuer das System | + | |
- | * Datenbank soll ueber mehrere Rechner innerhalb und auserhalb der Clubraeume verteilt sein | + | |
- | * API ueber Tor Hidden Service zugaenglich | + | |
- | * Anonymitaet, | + | |
- | * sonst: Zuordnung ueber MAC-Adresse bzw. Korrelation mit DHCP-Hostname moeglich | + | |
- | * Mehr Auflademöglichkeiten wagen: | + | |
- | * Geldscheinleser? | + | |
- | * PayPal? (wurde von einigen Members gewünscht, bsx ist noch skeptisch ob der potentiellen Nebenwirkungen) | + | |
- | * Überweisung? | + | |
- | * Mobile-App | + | |
- | * Token-Transfer-Möglichkeit (Member2Member-Payment) | + | |
- | + | ||
- | ===== interne Weiterentwicklung ===== | + | |