Samstag, 26. März 2011

PayPal in die eigene Webseite integrieren


PayPal ist ein Finanzdienstleister im Internet, der auch Betreibern von Webseiten gängige Online-Zahlungsmöglichkeiten wie Kreditkartenzahlung oder Bankeinzug anbietet. In den letzten Wochen habe ich mich mit dem Produkt "PayPal Website Payments Standard" auseinandergesetzt, da dies keine PCI-DSS Erfüllung verlangt (Sicherheitsstandard der Kreditkartenindustrie).

Zum Einrichten eines solchen Systems benötigt man einen PayPal Geschäftskonto. Hat man dieses erstellt und verifiziert kann man sich einen PayPal Button unter "Mein Profil", "mehr ...", "Verkäufer/Händler", "PayPal Buttons" erstellen.

Um das System aber erstmal zu testen und nicht gleich echtes Geld zu transfieren, sollte man sich bei der PayPal Sandbox registrieren. Innerhalb dieser Sandbox kann man dann weitere Privat- und Geschäftskonten erstellen. Legt man sich z.B. ein Privatkonto an, kann man mit diesem seine Testbestellungen bezahlen. Mit einem entsprechendem Geschäftskonto kann man sich einen PayPal Test Button zum Testen einrichten.

Hat man sich also in der Sandbox mit dem Geschäftskonto einen Button angelegt und in seine Webseite eingebaut, kann man mit dem Privatkonto der Sandbox bezahlen. Um die Konten innerhalb der Sandbox bei der Bezahlung zu nutzen, muss man in der Sandbox eingeloggt sein.

Jetzt möchte man noch erfahren, ob eine Bezahlung erfolgreich war. Dazu verwendet man die IPN (Instant Payment Notification) Schnittstelle. Bei der Buttonkonfiguration kann man eine "notify_url" angeben, diese fungiert als Callback. PayPal ruft bei jeder Transaktion oder Statusänderung diese URL auf und gibt eine Menge an Parmetern mit. Jetzt muss man diese gleichen Parameter wieder an PayPal zurücksenden und bekommt dann eine Erfolgs- oder Misserfolgsmeldung. Mehr dazu ist in der Dokumentation beschrieben und Beispielcode gibt es auch. Zu beachten ist, dass im Beispielcode die regulare PayPal URL enthalten ist und nicht die Sandbox URL (https://www.sandbox.paypal.com/cgi-bin/webscr).

Will man die Zahlungsbestätigungen, die über IPN kommen, seinen Kunden zuordnen, kann man die versteckten Inputfelder "custom" (z.B. als Kundennummer) und "invoice" (z.B. als Bestellnummer) in seinem PayPal Button verwenden. Die Inhalte werden dann beim Aufruf der "notify_url" von PayPal mitgeliefert.

Website Payment Standard erlaubt es Kunden sowohl via PayPal-Konto zu zahlen oder ohne PayPal-Konto per Kreditkarte oder Bankeinzug. Allerdings ist die Option zum Zahlen per Kreditkarte oder Bankkonto (also ohne PayPal-Konto) relativ versteckt. Klickt man auf den etwas versteckten Link, kommt man auf eine Seite die links ein Formular zum Bezahlen ohne PayPal-Konto anbietet und rechts ein Login-Formular für PayPal Kunden. Mit dem Produkt Express Checkout kann man auch direkt auf diese zweite Seite verlinken. Dazu muss man den Parameter "&LANDINGPAGE=Billing" an die Variable "nvpstr" in der Datei "paypalfunctions.xxx" anfügen.

Das Setup mit Express Checkout ist wesentlich komplexer, bietet allerdings wesentlich mehr Einstellmöglichkeiten. Leider ist der Java-Beispiel-Code von PayPal ist höchst fehlerhaft. Eventuell lohnt hier ein Blick in das PayPal SDK.

Einfach ist die PayPal Integration keineswegs, die hinzukommende Produktvielfalt macht die Wahl zusätzlich ungemein schwer. Ein klares und einheitliches (PayPal Deutschland vs. PayPal USA) Produktportfolio würde schon viel helfen.

Dienstag, 22. März 2011

iPad 2 - Welches und warum? [Update]



Bei der Kaufentscheidung zum iPad 2 stellen sich mir/uns folgende Fragen:
  • Anwendungsgebiete und -orte:
    • E-Mails lesen und schreiben (Frühstückstisch, Bett)
    • Nachrichten lesen (Frühstückstisch, Bett, Garten)
    • Notizbuch/Gesprächsnotizen/Mindmaps (Webmontag, Uni)
    • Digitalisieren von Tafelbildern/Flipcharts (Uni, Besprechungen)
    • Kalender anschauen und bearbeiten (Frühstückstisch)
    • Surfen (Sofa, Garten)
    • Spielen/Lernspiele (Sofa, Garten)
    • Kochrezepte/Cocktailrezepte anzeigen (Kühlschrank)
    • PDF/E-Books lesen (Zug, Sofa, Garten)
    • Zeichen/Malen (Zug, Sofa, Garten, Schreibtisch)
    • Digitaler Bilderrahmen (Sofa, Küche, zu Besuch)
    • Webradio hören (Küche)
    • Videos/Videopodcasts anschauen (Bett, Zug, Sofa, allein in der Küche)
    • Videotelefonie (zu Hause)
  • Konkurrenzprodukte:
    • Motorola Xoom - noch nicht draußen
    • Samsung Galaxy Tab - 10" Modell noch nicht draußen
    • WeTab - kein Media Tablet sondern Tablet PC, macht weniger Spaß
Konflikte mit Nutzung von Handy, Notebook und MP3-Player
  • Handy weiterhin für:
    • Telefonieren
    • alles was man im Laufen tun kann (SMS, E-Mail, News, Maps, Kalender)
    • alles wo man nicht auffallen will (unterm Tisch versteckt)
  • Notebook weiterhin für:
    • Programmieren
    • größere Texte schreiben
    • Bildbearbeitung
    • Surfen wenn man sowieso am Notebook sitzt
    • Filme / TV schauen
    • Buchhaltung
    • Online Videothek (z.B. ZDF Mediathek) nutzen
  • MP3-Player (iPod Touch) weiterhin für:
    • Musik hören unterwegs im Laufen
    • Podcasts hören unterwegs im Laufen
    • kleine Spiele unterwegs spielen
Es soll also ein iPad 2 sein, aber welches Modell?
  • 3G, GPS und WiFi statt nur WiFi :
    • pro
      • 3G für Zug, Meetings
      • News (RSS) unterwegs lesen (und als gelesen markieren)
    • kontra
      • kaum Einsatz von GPS (kein Auto, Gerät für Stadtnavigation zu Fuß zu groß)
      • meiste Zeit der Nutzung daheim
      • extra Simkarte mit Vertrag (200-500 MB Traffic ca. 8 Euro pro Monat)
      • im Ausland nochmal extra Simkarte nötig wegen teuren Roaming-Gebühren
      • 120 Euro teurer
      • für Ausnahmen ist Handy als WLAN-Hotspot eine Alternative
      • oder die 120 Euro investieren in Huawei E5 (Tragbarer UMTS/WLAN-Router)
  • 32 GB statt 16 GB:
    • pro
      • mehr Platz für Videos (Videopodcasts, selbstgedrehte Filme) und Musik
    • kontra
      • 100 Euro teurer
Kosten der einzelnen iPad 2 Ausstattungen
iPad 2 VersionPreis (Euro)inkl. Zubehör (Euro)
16 GB WiFi480548
32 GB WiFi580648
16 GB WiFi + 3G600668
32 GB WiFi + 3G700768
Zubehör: VGA-Adapter (29 Euro) und das Smart Cover (39 Euro).

Mit einer 8 Euro Datenflat (200-500 MB) kommen bei 24 Monaten Laufzeit noch 217 Euro (inkl. 25 Euro Anschlussgebühr) hinzu.

Also wird es wohl das 32 GB WiFi Modell in schwarz mit grünem Smart Cover und VGA-Adapter. Oder?

[Update: Es ist jetzt doch das 32 GB WiFi + 3G Modell geworden, allerdings ist die Lieferzeit auf 2-3 Wochen angesetzt ;(]

Sonntag, 20. März 2011

Projektmanagement in der Cloud


Für ein Studienprojekt an der Uni Stuttgart war ich auf der Suche nach einem Projektmanagement-Tool für Softwareprojekte. Die Anforderungen waren:
  • Aufgabenverwaltung (Meilensteine, Aufgaben/Arbeitspakete, Gantt-Chart, Zuordnung von verantwortlichen Personen)
  • Zeiterfassung (pro Aufgabe und Person)
  • integrierte Dokumentationsmöglichkeit (Wiki)
  • bevorzugt mit integriertem Bug-Tracker
  • Software as a Service oder sehr einfaches Self-Hosting
  • kostenlos oder sehr günstig
Ich bin relativ schnell auf folgende Anbieter/Produkte gestoßen und habe sie ausprobiert:
  • PHProjekt - schlechte User Experience, Self-Hosting
  • TeamLab - erfüllt nicht alle Anforderungen, SaaS oder Self-Hosting
  • Jira - perfekt auf Softwareentwicklung abgestimmt, SaaS oder Self-Hosting
  • Teambox - sehr ähnlich zu TeamLab aber schneller, SaaS
  • Basecamp / freedcamp - erfüllt bei weitem nicht alle Anforderungen, SaaS
  • Trac / redmine - erfüllt bei weitem nicht alle Anforderungen, Self-Hosting
Da wir allerdings kein Budget und keine großen Server-Ressourcen hatten, fielen Jira (kostet Geld und benötigt Hosting) und PHProject (benötigt Hosting) weg. Trac wird zwar an der Uni als Dienst angeboten, aber das Wiki und die Aufgabenverwaltung ist hier kaum zu gebrauchen und es gibt keine Zeiterfassung.

TeamLab ist leider ab und zu recht langsam, es gibt keine Gantt-Charts, die Aufgabenzuordnung ist nur an eine Person möglich und demnach auch die Zeiterfassung pro Aufgabe nur für eine Person möglich.

Teambox hingegen ist recht flott, bietet Gantt-Charts und wesentlich bessere Terminplanung als TeamLab, aber auch hier ist jede Aufgabe nur einer Person zuordenbar und das wirkt sich auch wieder auf die Zeiterfassung aus.

PHProjekt hätte unsere Anforderungen erfüllt, allerdings ist es nicht allzu leicht zu bedienen und benötigt einen Webserver mit PHP Interpreter und MySQL Datenbank.

Jira hätte auch alle unsere Anforderungen erfüllt und wäre eindeutig von den Funktionen her der Favorit, aber benötigt leider eine noch komplexere Hosting-Umgebung (JEE).

Sonntag, 6. März 2011

Wahlplakate zur Landtagswahl Baden-Württemberg 2011 in Stuttgart

Wahlplakate aus Stuttgart zur Landtagswahl Baden-Württemberg 2011
Die Fotos der Plakate sind alle auf dem Weg von Stuttgart West nach Stuttgart Mitte entstanden. Bei den Plakaten der Linken muss man genau hinschauen, die haben jeweils eine andere Botschaft. Besonders gut gefällt mir der Spruch "Vertrau keinem Plakat - Informier dich!".

Wer sich noch nicht entschieden hat, kann ja den Wahl-o-mat befragen.

Das Design Tagebuch hat auch noch einen guten Artikel zu den Plakaten und auf Flickr sind die Originale, aus denen die Collage entstanden ist.

Hier auch noch ein paar Collagen aus der Vergangenheit:

Wahlplakate zur Bundestagswahl 2009 aus Stuttgart
Wahlplakate zur Europawahl, Regionalwahl und Gemeinderatswahl 2009
aus Stuttgart und Umgebung
Bundestagswahl 2005 (Dresden)
Landtagswahl in Sachsen 2004 (Dresden)