Hibiscus-Server: Sammellastschriften per XML-RPC von Python aus

Tschonny_Cache

Betreff:

Hibiscus-Server: Sammellastschriften per XML-RPC von Python aus

 ·  Gepostet: 21.06.2016 - 19:48 Uhr  ·  #125665
Hallo
ich arbeite gerade an einer Hibiscusanbindung in Python, die Einzellastschriften funktionieren problemlos werden aber leider von meiner bank nicht unterstützt.
Hier mal der Code für Einzellastschriften (In einem django manage command, könnte leicht abgewandelt auch in das XML-RPC Tutorial im Wiki übernommen werden):
Code

#!/usr/bin/env python
from django.core.management.base import BaseCommand
from django.db import models
import ssl
import xmlrpclib
import datetime

class HibiscusSocket(object):
    def __init__(self, password, xmlrpc_host="172.30.80.16", xmlrpc_port=8080, proto="https", username="admin"):
        self.proto = proto
        sock = xmlrpclib.ServerProxy('%s://%s:%s@%s:%s/xmlrpc/' % (
            self.proto, username, password, xmlrpc_host, xmlrpc_port,
            ), context=ssl._create_unverified_context())
        self.sock = sock

    def set_sepa_direct_debit(self, data):
        return self.sock.hibiscus.xmlrpc.sepalastschrift.create(data)

class Command(BaseCommand):
    def handle(self, *args, **options):
        currentDate = datetime.datetime.today()
        transactionDate = currentDate + datetime.timedelta(days=2)
        data = {
            'konto': 1,
            'termin': transactionDate,
            'blz': 'GENODEM1GLS',
            'kontonummer': 'DE12500105170648489890',
            'name': 'Max Mustermann',
            'betrag': 10.00,
            'verwendungszweck': 'Test-Lastschrift',
            'ausgefuehrt': False,
            'endtoendid': '',
            'pmtinfid': '',
            'purposecode': '',
            'mandateid': '6696',
            'creditorid': 'Beispielhafte CreditorID',
            'sigdate':  currentDate,      # Signature date of mandate, use subscription date
            'sequencetype': 'OOFF',
            'sepatype': 'COR1',
            'targetdate': transactionDate
        }


        s = HibiscusSocket(password="geheimesPasswort")
        returnvalue = s.set_sepa_direct_debit(data)
        print returnvalue


Hier der Code für Sammellastschriften

Code

#!/usr/bin/env python
from django.core.management.base import BaseCommand
import ssl
import xmlrpclib
import datetime


class HibiscusSocket(object):
    def __init__(self, password, xmlrpc_host="192.168.0.27", xmlrpc_port=8080, proto="https", username="admin"):
        self.proto = proto
        sock = xmlrpclib.ServerProxy('%s://%s:%s@%s:%s/xmlrpc/' % (
            self.proto, username, password, xmlrpc_host, xmlrpc_port,
            ), context=ssl._create_unverified_context())
        self.sock = sock

    
    def send_sepa_direct_debit(self, data):
        return self.sock.hibiscus.xmlrpc.sepasammellastschrift.create(data)


class Command(BaseCommand):
    def handle(self, *args, **options):
        currentDate = datetime.datetime.today()
        targetDate = currentDate + datetime.timedelta(days=2)
        data = {
            'name': 'Collective SEPA Direct Debit from ' + str(currentDate),
            'konto': 1,
            'termin': currentDate, # The day, hibiscus hands in the depit to the bank
            'buchungen': [{
                'blz': 'GENODEM1GLS',
                'kontonummer': 'DE12500105170648489890',
                'name': 'Tschonny Flash',
                'betrag': 5.00,
                'verwendungszweck': 'Test-Lastschrift',
                'ausgefuehrt': False,
                'endtoendid': '',
                'pmtinfid': '',
                'purposecode': '',
                'mandateid': '66963',
                'creditorid': 'creditor ID',
                'sigdate': currentDate,  # Signature date of mandate, use subscription date
                'sequencetype': 'OOFF',
                'sepatype': 'COR1',
                'targetdate': targetDate
            }]
        }


        s = HibiscusSocket(password="geheimesPasswort")
        returnvalue = s.send_sepa_direct_debit(data)
        print returnvalue


Der Code für die Sammellastschrift wirft leider folgenden fehler:
Code

java.lang.NullPointerException: Name is null
  at java.lang.Enum.valueOf(Enum.java:236)
  at de.willuhn.jameica.hbci.rmi.SepaLastSequenceType.valueOf(SepaLastSequenceType.java:18)
  at de.willuhn.jameica.hbci.xmlrpc.server.SepaSammelLastschriftServiceImpl.beforeStore(SepaSammelLastschriftServiceImpl.java:67)
  at de.willuhn.jameica.hbci.xmlrpc.server.SepaSammelLastschriftServiceImpl.beforeStore(SepaSammelLastschriftServiceImpl.java:27)
  at de.willuhn.jameica.hbci.xmlrpc.server.AbstractSepaSammelTransferServiceImpl.create(AbstractSepaSammelTransferServiceImpl.java:126)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:112)
  at org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:103)
  at org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:43)
  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.security.SecurityHandler.handle(SecurityHandler.java:216)
  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.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:635)
  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)



Kann mir jemand helfen? ich kenne mich im code von hibiscus gar nicht aus.

hibiscus

Betreff:

Re: Hibiscus-Server: Sammellastschriften per XML-RPC von Python aus

 ·  Gepostet: 25.06.2016 - 14:21 Uhr  ·  #125710
Ich kann deinem Code nicht entnehmen, welche Auftragseigenschaften du uebergeben hast (dein Code enthaelt ja nur den eigentlichen Verbindungsaufbau aber nicht das Uebergeben der eigentlichen Sammellastschrift).
Die Fehlermeldung sagt jedenfalls, dass das Attribut "sequencetype" (FRST, RCUR,...) nicht angegeben wurde. Eventuell fehlen auch noch weitere Auftragseigenschaften.

Siehe http://www.willuhn.de/wiki/dok…melauftrag

rebeit

Betreff:

Re: Hibiscus-Server: Sammellastschriften per XML-RPC von Python aus

 ·  Gepostet: 06.08.2017 - 16:48 Uhr  ·  #133792
Hallo Tschonny_Cache,

ich versuche ebenfalls eine Sammellastschrift per Python an Hibiscus zu übergeben. Dein Code als Vorlage wäre da hilfreich, allerdings fehlt offenbar noch ein Teil, damit das funktioniert.

Für mich und bestimmt auch für andere, wollte ich darum bitten, dass Du den restlichen Code noch veröffentlichst.

Vielen Dank im Voraus!