Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 
number-7
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 7
Dabei seit: 12 / 2011
Betreff:

Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 23.05.2013 - 17:26 Uhr  ·  #1
Hi,

ich baue gerade einen Kontenabgleich vie PHP und Hibiscus Payment-Server 2.4.0 [Build 130]. Abholen und verarbeiten der Umsätze, war mit Hilfe des src vom SOAP-Plugin problemlos machbar.

Wie aber erstelle ich nun Überweisungen ? Ich habe ein Parameter-Array erstellt, mit konto und paymentData. Wollte dieses dann der "store" Methode des Ueberweisungs-Service übergeben. Klappt allerdings nicht. Erhalte den Fehler "no ueberweisung given". Ist der Parameter-Typ hier nicht korrekt ? Muss ich ein Parameter-Objekt erstellen? "new Uberweisung()" funktioniert ja schlecht...

Die Soap-Doku und der Quelltext des Soap Plugin bringen mich hier leider nicht mehr weiter. Kann jemand von euch helfen ?

Besten Gruß!
- lars.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10838
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 24.05.2013 - 00:16 Uhr  ·  #2
Ich weiss ehrlich gesagt nicht, wie man SOAP aus PHP heraus macht. In Java erstellt man aus der WSDL einfach Java-Klassen und kann dann einfach mit denen arbeiten. Poste doch einfach mal den relevanten Code. In Java jedenfalls muss man ein Objekt vom Typ "Ueberweisung" uebergeben, welches von "SinglePayment" abgeleitet ist.
number-7
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 7
Dabei seit: 12 / 2011
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 24.05.2013 - 16:58 Uhr  ·  #3
Danke für deine Antwort. Ein Stück vorwärts gekommen bin ich mit dem Quellcode des SOAP-Plugin noch. Durch das umschließende Array mit dem Key ''payment", scheint es kein Typen Problem mehr zu geben. Allerdings erhalte ich nun die Fehlermeldung:

Zitat
Unmarshalling Error: Unable to create an instance of de.willuhn.jameica.hbci.soap.beans.Payment


Für die Datenabfrage ging das mit Zend und PHP relativ einfach. Für die Umsatzabfrage hatte auch ein Parameter-Array ausgereicht, mit den Keys konto, von, bis. Der Überweisungsauftrag funktioniert aber leider nicht wie folgt...

[php]
$c = new Zend_Soap_Client('http://localhost:8080/Ueberweisung?wsdl');
$data = array(
'payment' => array(
'konto' => $this->_account,
'paymentData' => array(
'betrag' => $this->_activity->getAmount(),
'gegenkontoBlz' => $this->_activity->getReferenceAccountBankCode(),
'gegenkontoName' => $this->_activity->getReferenceAccountName(),
'gegenkontoNummer' => $this->_activity->getReferenceAccountNumber(), )

$c->store( $data );
[/php]

Code

Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Unmarshalling Error: Unable to create an instance of de.willuhn.jameica.hbci.soap.beans.Payment 
  at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:622)
  at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:527)
  at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:114)
  at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:99)
  at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
  at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89)
  at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
  at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:368)
  at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:183)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:163)
  at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:141)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363)
  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
  at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
  at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
  at org.mortbay.jetty.Server.handle(Server.java:324)
  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
  at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879)
  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741)
  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:213)
  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
  at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
Caused by: javax.xml.bind.UnmarshalException
 - with linked exception:
[javax.xml.bind.UnmarshalException: Unable to create an instance of de.willuhn.jameica.hbci.soap.beans.Payment
 - with linked exception:
[java.lang.InstantiationException]]
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)
  at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:607)
  ... 29 more
Caused by: javax.xml.bind.UnmarshalException: Unable to create an instance of de.willuhn.jameica.hbci.soap.beans.Payment
 - with linked exception:
[java.lang.InstantiationException]
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:616)
  at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:244)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:583)
  at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:181)
  at com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.startElement(XsiTypeLoader.java:73)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:455)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:433)
  at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:275)
  at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:209)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
  ... 31 more
Caused by: javax.xml.bind.UnmarshalException: Unable to create an instance of de.willuhn.jameica.hbci.soap.beans.Payment
 - with linked exception:
[java.lang.InstantiationException]
  ... 41 more
Caused by: java.lang.InstantiationException
  at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
  at com.sun.xml.bind.v2.ClassFactory.create0(ClassFactory.java:123)
  at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.createInstance(ClassBeanInfoImpl.java:257)
  at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:577)
  ... 38 more
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10838
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 26.05.2013 - 23:10 Uhr  ·  #4
Wenn du Zend benutzt, dann google doch mal nach "WSDL code generation php" oder "WSDL stub generation php" um dir aus der WSDL-Datei passenden Client-Code zu generieren. Mit dem ist es vielleicht eher moeglich, die Abfrage auszufuehren. Weiter kann ich dir da leider auch nicht helfen - ich benutze hier nur Java.

Alternativ koenntest du auch die XML-RPC Schnittstelle verwenden. Da SOAP in PHP in scheinbar bei weitem nicht so komfortabel (mit automatischer Code-Generierung) verwendet werden kann, kannst du auch XML-RPC verwenden. Das ist unter http://www.willuhn.de/wiki/doku.php?id=develop:xmlrpc auch umfangreich - incl. PHP-Beispiel-Code - dokumentiert.
number-7
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 7
Dabei seit: 12 / 2011
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 27.05.2013 - 00:51 Uhr  ·  #5
Besten Dank für die späte Antwort zum Sonntag!

An XML-RPC hatte ich auch schon gedacht als Alternative. SOAP von Java kenne ich, deswegen hatte mich die Zend SOAP Variante schon etwas verwirrt. Ich werde morgen mal noch das hier probieren http://www.urdalen.no/wsdl2php/index.php und dann noch mal berichten.

Das Parameter-Array entspricht aber schon der Struktur eines "Ueberweisungsobjektes", welches an "store" zu übergeben wäre, und der Fehlercode gibt auch keine näheren Auskünfte mit deiner Erfahrung ?
number-7
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 7
Dabei seit: 12 / 2011
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 27.05.2013 - 19:39 Uhr  ·  #6
number-7
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 7
Dabei seit: 12 / 2011
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 29.05.2013 - 12:26 Uhr  ·  #7
... funktioniert leider doch nicht vollständig und ich bin gerade überfragt wieso. das "create" der überweisungen funktioniert. sie sind bspw. auch alle unter http://localhost:8080/webadmin…/list/open zu sehen. allerdings werden sie scheinbar nicht an den bankserver übermittelt und ausgeführt. den einzigen fehler den ich im log finde ist folgender:

Code

[Wed May 29 03:30:10 CEST 2013][INFO][de.willuhn.jameica.hbci.xmlrpc.server.AbstractBaseUeberweisungServiceImpl.createObject] created transfer [ID: 10 (de.willuhn.jameica.hbci.server.Ueb
erweisungImpl)]
[Wed May 29 03:30:12 CEST 2013][ERROR][org.apache.xmlrpc.server.XmlRpcStreamServer.execute] execute: Error while performing request
org.apache.xmlrpc.server.XmlRpcNoSuchHandlerException: No such handler: system.methodSignature
        at org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping.getHandler(AbstractReflectiveHandlerMapping.java:203)
        at de.willuhn.jameica.xmlrpc.server.HandlerMappingImpl.getHandler(HandlerMappingImpl.java:98)
        at org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:42)
        at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:83)
        at org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:191)
        at org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:104)
        at de.willuhn.jameica.xmlrpc.server.XmlRpcServlet.doPost(XmlRpcServlet.java:65)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:213)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)

[Wed May 29 03:30:12 CEST 2013][INFO][de.willuhn.jameica.hbci.xmlrpc.server.AbstractBaseUeberweisungServiceImpl.createObject] created transfer [ID: 11 (de.willuhn.jameica.hbci.server.UeberweisungImpl)]
[Wed May 29 03:30:12 CEST 2013][ERROR][org.apache.xmlrpc.server.XmlRpcStreamServer.execute] execute: Error while performing request
org.apache.xmlrpc.server.XmlRpcNoSuchHandlerException: No such handler: system.methodSignature
        at org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping.getHandler(AbstractReflectiveHandlerMapping.java:203)
        at de.willuhn.jameica.xmlrpc.server.HandlerMappingImpl.getHandler(HandlerMappingImpl.java:98)
        at org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:42)
        at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:83)
        at org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:191)
        at org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:104)
        at de.willuhn.jameica.xmlrpc.server.XmlRpcServlet.doPost(XmlRpcServlet.java:65)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:213)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)

[Wed May 29 03:30:12 CEST 2013][INFO][de.willuhn.jameica.hbci.xmlrpc.server.AbstractBaseUeberweisungServiceImpl.createObject] created transfer [ID: 12 (de.willuhn.jameica.hbci.server.UeberweisungImpl)]
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10838
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 29.05.2013 - 21:17 Uhr  ·  #8
Die Fehlermeldung hat eigentlich nichts damit zu tun und kann ignoriert werden. Da versucht der XML-RPC-Client lediglich, die Namen der verfuegbaren XML-RPC-Funktionen des Servers herauszufinden.

Wenn die Ueberweisungen zwar angelegt wurden, jedoch nicht ausgefuehrt werden, dann liegt das entweder daran, dass sie noch nicht faellig sind oder daran, dass das Ausfuehren faelliger Ueberweisungen in den Synchronisationseinstellungen des Kontos unter https://<server>:8080/hibiscus nicht aktiviert ist. Beachte hierbei jedoch, dass das Ausfuehren von Ueberweisungen ueber den Server nicht moeglich ist, wenn du PIN/TAN verwendest sondern nur bei den Verfahren Schluesseldatei oder Chipkarte.
number-7
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 7
Dabei seit: 12 / 2011
Betreff:

Re: Hibiscus-Server // SOAP // paramenter f. ueberweisung ?

 · 
Gepostet: 30.05.2013 - 12:21 Uhr  ·  #9
Super Danke! Das "Absenden überfälliger Überweisungen" war für das betreffende Konto noch nicht aktiviert.

Danke für deine Mühen! Die Software läuft bis jetzt echt Super.
Gewählte Zitate für Mehrfachzitierung:   0