Jede Krise bringt etwas gutes mit sich. So brachte uns die Deutsche Post in Bedrängnis, als sie den StampIt-Service einstellte. Als Alternative bietet sie nun die Online-Lösung Internetmarke. Allerdings ist dies mit einem erheblichen manuellen Aufwand verbunden, die Adressen unserer Kunden in das Portal zu übertragen und die Postmarken auszudrucken.

Grund genug, sich über ein neues Konzept Gedanken zu machen. Schnell stießen wir auf die DHL-Geschäftskunden-Lösung, die ein ansprechendes Abrechnungsmodell anbietet. Dieses muss individuell eingefordert werden. Allein das spart uns zwar ein paar Cents mit den Versandkosten, aber der eigentliche Clou bringt ein Webservice mit sich.

Mittels SOAP-Webservice können die Adressdaten an den DHL-Server geschickt werden, welcher eine PDF-Datei als Portomarke zurückliefert. Ruby benötigt für die technische Umsetzung nur noch etwas Schützenhilfe - das Gem Savon. Der Programmcode hierfür sieht in groben Zügen folgendermaßen aus:

Savon.configure do |config|
  config.soap_version = 2 # use SOAP 1.2
end

client = Savon::Client.new do
  wsdl.document = wsdl_path
  wsdl.endpoint = endpoint_path
end

response = client.request :createShipment do |soap|
  soap.xml = soap_xml
end

Danach folgt nur noch die Auswertung der Antwort mittels XPath von REXML, womit die Portomarke direkt ausgedruckt werden kann, ohne dass noch ein händisches Öffnen von PDF-Dateien vorgenommen werden muss.

comments powered by Disqus