Sepa Klasse gesucht



  • Moin,

    bisher habe ich für unseren gemeinnützigen Verein eine webbasierte PHP Lösung, die für die Mitglieder Zahlungen XML Dateien generiert, welches dann für die Abbuchungen bei der Bank hochgeladen werden.

    Für PHP gibt es Klassen und nun wundere ich mich, dass ich für c++ nichts finde. libsepa ist wohl in C programmiert, aber laut denen nur für PHP und Java. Sepatools DLL ist wohl etwas, was mit einer externen Software arbeitet, aber preislich für den Verein etwas viel ist und Folgekosten hat. Wenn es nur kostenpflichtige Klassen gibt, zahlen wir auch gerne.

    Klar könnte ich auch PHP auf den Server ansteuern und das XML via Script generieren. Das wäre eine Notlösung. Schöner wäre es jedoch wenn es eine Klasse gibt. Falls es relevant ist, programmiert wird in QT5.

    Kennt hier jemand was?



  • @phili Hast du auch einen Link zu libsepa?



  • Ich kann dir keinen konkreten Tip für C oder C++ geben. Ich kann dir nur sagen dass das etwas ist was ich eher nicht mit C++ angehen würde. Ich persönliche würde mich mal im .NET Bereich umsehen weil ich Programmieren in C# recht angenehm finde und vermute dass es für .NET einiges gibt.
    Java wäre sonst auch noch ein Tip - auch wenn ich persönlich es nicht mag 🙂

    Grund: Die Dinge die du dort brauchst, also z.B. vermutlich HTTP(S) Requests machen, mit XML hantieren etc. sind in .NET oder Java viel angenehmer zu machen, weil es viele fertige Komponenten gibt deren Einbindung ziemlich einfach und schnell geht. Ebenso schätze ich dass die Chance fertige SEPA Libraries zu finden für .NET und Java viel höher sein wird als für C oder C++.



  • @DirkB

    Das findet man hier:

    https://libsepa.com/de/

    @hustbaer

    Java mag ich auch nicht 🙂 Bei den Klassen muss man auch nur Funktionen aufrufen und er generiert am Ende ein XML. XML Parser sind da nicht notwendig. Dafür bin ich auch zu sehr Anfänger, um mich mit C++ und XML herumzukämpfen. Okay, Qt5 hat auch hier bestimmt Klassen, aber wird ja nicht benötigt.

    Aber da die Daten eh online in einer MySQL Daten Bank liegen, würde ich notfalls wie gesagt per https Request mir die Datei zurückgeben lassen.



  • Das Problem ist trivial.
    Der Autor liefert dankbarerweise zur sepa.dll/libsepa.a auch die passende Headerdatei sepa.h mit aus
    (libsepa-2.17-64bit.tar/src/include/sepa.h)
    und soviel ist sehe auch den ganzen Sourcecode
    (libsepa-2.17-64bit.tar/src/php/sepa.c).

    Damit hast du eigentlich alles was du brauchst (du hast in der Headerdatei die Konstanten, Typdefinitionen und Funktionsdeklarationen) - zugegebenermaßen ist es aber ziemlich schizophren vom Autor, einerseits auf C-Source hinzuweisen und andererseits nur Schnittstellen für Laienprogrammiersprachen (Java,PHP,Perl) zu dokumentieren.

    Für den Zugriff auf die Lib nimmst du dann einfach einen C-Compiler deiner Wahl (und linkst gegen die .a/.dll) - eine Klasse brauchst du nicht, was sollte die bringen? Da würden eh nur die Funktionen drinstehen, genauso wie sie in sepa.h sowieso schon aufgelistet sind.
    Im Übrigen werden Klassen überschätzt, jeder Laie glaubt, nur weil er unfallfrei ein paar einfache deklarieren/definieren kann, er wüsste was Kapselung und OOP bedeute.

    Und die Beispiele, die der Autor z.B. für PHP zeigt,

    $iban  = SEPA::IBAN_convert("DE", "1234567890", "51010800");
    $bic   = SEPA::IBAN_getBIC($iban);
    $valid = SEPA::IBAN_check($iban);
    

    sind dann trivial in C umzubauen:

    char iban[SEPA_IBAN_MAXLENGTH+1], dummy[1000]="";
    if( SEPA_LOOKUP_OK==sepa_iban_convert("DE", "1234567890", "51010800", iban, dummy) )
    {
       char bic[SEPA_BIC_LENGTH+1];
       puts(iban);
       if( SEPA_LOOKUP_OK==sepa_iban_getBIC(iban, bic) )
       {
         puts(bic);
         if( SEPA_LOOKUP_OK==sepa_iban_check(iban) )
         {
         ... usw.
         }
       }
    }
    else
       puts("Fehler aufgetreten");
    /* alles ungetestet, nur durch Anschauen der Headerdatei und des PHP Beispiels entstanden */
    

    Das ist alles sehr einfach machbar, hier ist ein C Purist am Werke.


Anmelden zum Antworten