Programmierung Downloadportal - wie anfangen?

Magical

Angesehenes Mitglied
Hallo,

ich würde gern ein Download-Portal für verschiedene Dateien programmieren. Dabei soll nach erfolgreicher Bezahlung (vorerst Paypal, später auch weitere Bezahloptionen) direkt ein Downloadlink zur Verfügung gestellt werden, welcher zusätzlich auch im Kundenkonto für einen gewissen Zeitraum abrufbar ist.

Mein Problem hierbei ist jedoch der grundlegende Anfang. Wie programmiert man einen Download, welcher erst nach Bezahlung verfügbar ist?Wie sichere ich ab, dass ein Download erst nach Bezahlung und nur für eine gewisse Zeit möglich ist? Eventuell optional auch ohne Login, wobei der Download in diesem Fall nur direkt nach der Bezahlung zur Verfügung steht (oder eventuell zusätzlich noch der Link per Email).
(Bisher habe ich nur eine normale Bezahlfunktion programmiert für zu versendende Güter, nicht jedoch für Downloads...)

Kennt irgendjemand hier gute Quellen/Tutorials/Hinweise? (irgendwie finde ich bei der Suche nur Portale, in denen man selbst Dateien runterladen kann, aber nicht wie man sowas selbst programmiert...)

Bin für jeden Tipp dankbar.

Magical
 
mit der Paypal API hab ich auch schon entsprechend gearbeitet, indem die Bestellung nach erfolgreicehr Zahlung bestätigt wird und auch eine Email generiert wird.
Werd nochmal schauen, ob es da auch etwas für download-Sales gibt oder etwas was sich dafür modifizieren lässt.

Womit müsste man denn anfangen, um die Downloadurl nur nach Bezahlung anzuzeigen bzw. individuell für den jeweiligen Besteller zu erstellen? Irgendwie fehlt mir hierzu der richtige Einstieg...
 
QUOTE (Magical @ Mi 7.11.2007, 22:31)Womit müsste man denn anfangen, um die Downloadurl nur nach Bezahlung anzuzeigen bzw. individuell für den jeweiligen Besteller zu erstellen? Irgendwie fehlt mir hierzu der richtige Einstieg...

Das hängt am Sicherheitskonzept und läßt sich deshalb im allgemeinen nicht beantworten.

Im speziellen kann ich ein paar Varianten von server-daten erläutern, von denen sich womöglich Anregungen übernehmen lassen.

Variante 1: http://beispiel.server-daten.de/tables/Artikel/data.xml

Da hat Anonymous die Berechtigung zum Zugriff auf die Tabelle 'Artikel', die Tabelle ist für den Xml-Download freigeschaltet, man kann das auch als Download-Link anbieten.

Dahinter steckt Code, der ausgeführt wird, die Berechtigung überprüft und die Daten als Stream zurückschickt.

Variante 2: Dieser Code stellt fest, daß Anonymous nicht zugreifen darf. Dann wird geguckt, ob eine Session existiert, daraus werden die Logininformationen geholt (eigentlich bloß ein Zufallsschlüssel) und damit wird versucht, die Daten zu laden. Entweder liefert die Datenbank oder sie verweigert.

Variante 3: Aufrufpfad: subdomain.server-daten.de/elements/Tabellenname/Spaltenname/ZeilenId/Dateiname

Der Code prüft, ob der ausführende Nutzer die Berechtigung hat, in 'Tabellenname' die ZeilenId zu lesen, ob es in der entsprechenden Tabelle eine passende Spalte und in der Zelle den korrekten Dateinamen gibt. Falls ja, wird die Ressource von irgendwoher geholt (kann sogar per FTP von einem anderen Server sein) und wird binär ausgeliefert. Das setzt allerdings ein allgemeines Berechtigungskonzept voraus (Berechtigung pro Tabelle oder für selbst erzeugte Zeilen).

Problem bei dieser Lösung ist noch, daß der Nutzer mindestens die Berechtigung für das Lesen einer Zeile haben muß, so daß man bei einer Bezahlung eine Berechtigung setzen müßte.

Deshalb Variante 4: subdomain.server-daten.de/elements/queries/Abfragename/id/5

Nach dem Bezahlen wird bsp. ein Eintrag in eine Tabelle geschrieben (Nutzer-Id, Artikel, Datum/Uhrzeit). Die Abfrage kann nun (1) nur von angemeldeten Nutzern ausführbar sein, (2) überprüfen, ob es eine solche Zeile gibt und ob das Datum bsp. höchstens 48 Stunden alt ist - falls ja, wird von der Abfrage irgendeine Rahmeninformation zurückgegeben, die den per Url übergebenen Informationen im Fall 3 entspricht, so daß der Code die Ressource findet und ausliefert. Der direkte Aufruf würde natürlich scheitern (da das eine Konfiguration wie in (3) voraussetzt).

Logik (2) wird von Kunden genutzt, wo die Mitarbeiter ohnehin Berechtigungen für ganze Tabellen haben. Die laden sich so bsp. eine ganze oder gefilterte Tabelle als Access-Datenbank mit einem Klick runter.
Mit Logik (3) lassen sich Masken für Selbstregistrierer bsp. individuell mit einem Firmenlogo gestalten.
Logik (4) wird verwendet, um authentifizierten Nutzern bsp. das Freischalten eigener Daten mit Bildern zu ermöglichen: Daten sollen 4 Wochen gegen Bezahlung anonym lesbar sein. Da muß das System natürlich sicherstellen, daß nach 4 Wochen die Ressource zwar noch da ist, aber nicht mehr abgefragt werden kann, auch wenn sich jemand den Link gemerkt hat.

Wichtig ist immer: Eine Url wird über Code umgeleitet, der zusätzliche Dinge überprüft und dann - falls alle Bedingungen erfüllt sind - eine Ressource mit passendem Mime-Typ ausliefert.
 
Die Meisten eCommerce Module für OpenSurce CMS (Joomla VirtueMart, Drupal eCommerce,..) bieten eine Möglichkeit bezahlte Downloads anzubieten, meist über Paypal. Eventuell kannst du dir diese ja mal genauer ansehen und dir "was abgucken".
 
QUOTE (jAuer @ Do 8.11.2007, 00:11)
QUOTE (Magical @ Mi 7.11.2007, 22:31)Womit müsste man denn anfangen, um die Downloadurl nur nach Bezahlung anzuzeigen bzw. individuell für den jeweiligen Besteller zu erstellen? Irgendwie fehlt mir hierzu der richtige Einstieg...

Das hängt am Sicherheitskonzept und läßt sich deshalb im allgemeinen nicht beantworten.

Im speziellen kann ich ein paar Varianten von server-daten erläutern, von denen sich womöglich Anregungen übernehmen lassen.

...

Wichtig ist immer: Eine Url wird über Code umgeleitet, der zusätzliche Dinge überprüft und dann - falls alle Bedingungen erfüllt sind - eine Ressource mit passendem Mime-Typ ausliefert.


die wohl beste Lösung.
Dem ist nichts hinzuzufügen.
 
vielen Dank für die Tipps...wird einiges an Lesestoff vor Umsetzung ;-)

Hab jetzt dadurch auch herausgefunden, wonach ich suchen muss um vernünftige Suchergebnisse zur weiteren Recherche zu finden :) (wenn es downloadable goods sind kommt man mit nur downloads, file download etc nicht wirklich weiter, sondern findet damit nur Quellen, wo man Dinge selbst runterladen kann...lol)

Dann mach ich mich mal ans lesen, lesen und weiterlesen...damit es nicht zulange dauert bis zur Umsetzung :)
 
Zurück
Oben