Kontocheck via BAV ... einbauen.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kontocheck via BAV ... einbauen.

    Hi @all,


    ich möchte überprüfen lassen, ob die eingegebene Kontonummer und die dazugehörige Bankleitzahl theoretisch möglich wären, um unnötige fehleingaben / zahlendreher abzustellen.

    Aktuell wird nur nachgeschaut ob das Feld überhaupt beschrieben wurde oder nicht:

    PHP-Code:
      <?php if ($allowed['lastschrift']): ?>
      <form method="post" class="paymentform" action="/<?php echo $lang ?>/order/lastschrift.php">
        <fieldset>
          <h2>Zahlung per Lastschrift</h2>
            <input type="hidden" name="chorizo" value="<?php echo $csrf ?>">
            <dl>
              <dt><label for="Bankverbindung">Bankverbindung</label></dt>
              <dd><input type="text" name="Bankverbindung" id="Bankverbindung" value="<?php if (!empty($form['Bankverbindung'])): ?><?php echo $form['Bankverbindung'?><?php endif ?>" /></dd>
              <dt><label for="Kontoinhaber">Kontoinhaber</label></dt>
              <dd><input type="text" name="Kontoinhaber" id="Kontoinhaber" value="<?php if (!empty($form['Kontoinhaber'])): ?><?php echo $form['Kontoinhaber'?><?php endif ?>" /></dd>
              <dt><label for="BLZ">Bankleitzahl</label></dt>
              <dd><input type="text" name="BLZ" id="BLZ" value="<?php if (!empty($form['BLZ'])): ?><?php echo $form['BLZ'?><?php endif ?>" /></dd>
              <dt><label for="Konto">Kontonummer</label></dt>
              <dd><input type="text" name="Konto" id="Konto" value="<?php if (!empty($form['Konto'])): ?><?php echo $form['Konto'?><?php endif ?>" /></dd>
          </dl>
            <input type="submit" name="submit" value="per Lastschrift bezahlen">
          </fieldset>
        </form>
      <?php endif ?>
    Ist ein Feld leer wird eine Fehlermeldung ausgegeben:


    PHP-Code:
    case 'lastschrift':
        
        if (empty(
    $sess['uid'])) redirect('home''Ihr Auftrag wurde schon übermittelt. Vielen Dank!');
        
    $cart cache('fetch''cart_'.sID);
        if (empty(
    $cart)) redirect('home.html');
        
        list(
    $warengruppen$seiten) = getMenu();
        
    $form['Bankverbindung'] = isset($_POST['Bankverbindung']) ? $db -> real_escape_string($_POST['Bankverbindung']) : '';
        
    $form['Kontoinhaber']   = isset($_POST['Kontoinhaber']) ? $db -> real_escape_string($_POST['Kontoinhaber']) : '';
        
    $form['Bankleitzahl']   = isset($_POST['BLZ']) ? $db -> real_escape_string($_POST['BLZ']) : '';
        
    $form['Konto']          = isset($_POST['Konto']) ? $db -> real_escape_string($_POST['Konto']) : '';
        
        if (empty(
    $form['Bankverbindung'])) redirect_ssl('order/payment''Bitte Feld Bankverbindung ausfüllen');
        if (empty(
    $form['Kontoinhaber'])) redirect_ssl('order/payment''Bitte Feld Kontoinhaber ausfüllen');
        if (empty(
    $form['Bankleitzahl'])) redirect_ssl('order/payment''Bitte Feld Bankleitzahl ausfüllen');
        if (empty(
    $form['Konto'])) redirect_ssl('order/payment''Bitte Feld Konto ausfüllen');
        
        if (
    ifcsrf()) {
            
            
    $bonitaet_status get_bonitaet_status(array('CustomerID'=>$sess['uid']));
            
            if (
    HAENDLER_ID <> 3) {
                
                if (empty(
    $bonitaet_status)) {
                        
                    
    $bonitaet checkBonitaet($sess['oid']);
                    
                    if (empty(
    $bonitaet['RC'])) {
                        
                        
    save_bonitaet_status($sess['uid'], $bonitaet);
                        
    $bonitaet_status $bonitaet['eScoreValue'];
                    } else 
    $bonitaet_status 'failed';
                }
                
                if ((
    $bonitaet_status == 'R')) 
                    
    redirect_ssl('order/payment''Es tut uns leid, aber aus Sicherheitsgründen wurden Sie nicht für das Lastschriftverfahren zugelassen. Bitte wählen Sie erneut!');
                
                if ((
    $bonitaet_status == 'Y') && get_Umsatz($sess['uid']) < 100
                    
    redirect_ssl('order/payment''Es tut uns leid, aber aus Sicherheitsgründen wurden Sie nicht für das Lastschriftverfahren zugelassen. Bitte wählen Sie erneut!');

            }
            
    order_per_lastschrift(array('auftrag_id'=>$sess['oid'], 'customer_id'=>$sess['uid'], 'bank'=>$form'partner_id'=>$partner_id));
            
            
    redirect_ssl('order/lastschrift_success');
        }
        
    $layout 'checkout_layout';
        break; 
    Nun möchte ich eben die zwei Felder ( BLZ / Kontonummer ) so belegen das nicht geschaut wird ob etwas drin steht sondern eben geschaut wird das die eingegebenen Daten entsprechend der BundesbankFile auch möglich sind.

    Dazu hab ich eben BAV gefunden und zumindest laut Beschreibung soll es ausreichen wenn man die TxT File der Bundesbank heranzieht, also das ganze ohne Datenbank laufen lassen kann. [ No DBS - Because BAV may use a text file as data source no DBS is necessary. ]


    Kann mir da einer weiterhelfen ? oder gibt es alternativ ein Kontocheck Script ?

  • #2
    Ich habe mir mal eben die txt- und xslx-Datei angeschaut. Mein Tipp, nimm die Excel-Datei und speicher sie als .csv ab. Dann kanst du die problemlos mit den entsprechenden PHP-Funktionen in eine Datenbank einlesen. Das txt-File ist nicht zu gebrauchen, da die Anordnung nicht sauber ist und du mit regulären Ausdrücken jedesmal die komplette Datei durchlaufen müsstest.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo,

      ich sehen das anders. Die Textdatei ist eine Festbreitentabelle und kann mit substr() zerlegt werden. Dadurch könnte man live auf die Datei zugreifen, ohne sich Gedanken darüber machen zu müssen, ob sie noch aktuell ist und wenn nicht, sie wieder von Hand mit Excel befummeln zu müssen.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Zitat von AmicaNoctis Beitrag anzeigen
        ich sehen das anders. Die Textdatei ist eine Festbreitentabelle und kann mit substr() zerlegt werden. Dadurch könnte man live auf die Datei zugreifen, ohne sich Gedanken darüber machen zu müssen, ob sie noch aktuell ist und wenn nicht, sie wieder von Hand mit Excel befummeln zu müssen.
        OK, das mit dem substr stimmt, auch wenn es auf den ersten Blick etwas seltsam aussah (nicht substr, sondern die txt-Datei). Aber jedes mal (fast) die komplette Datei bei einem Request zu durchlaufen, ist imho nicht sehr performant. Vor allem bei vielen Zugriffen. Und wie oft ändert sich da was. Notfalls lässt man Nachts einen cronjob laufen, der sich die aktuellen Daten holt.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Zitat von Kropff Beitrag anzeigen
          Notfalls lässt man Nachts einen cronjob laufen, der sich die aktuellen Daten holt.
          So in der Art meinte ich es eigentlich. Das „live“ war wohl etwas übertrieben.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Zitat von Kropff Beitrag anzeigen
            Ich habe mir mal eben die txt- und xslx-Datei angeschaut. Mein Tipp, nimm die Excel-Datei und speicher sie als .csv ab. Dann kanst du die problemlos mit den entsprechenden PHP-Funktionen in eine Datenbank einlesen. Das txt-File ist nicht zu gebrauchen, da die Anordnung nicht sauber ist und du mit regulären Ausdrücken jedesmal die komplette Datei durchlaufen müsstest.
            Die Datei ist nach Bankleitzahlen sortiert. Um eine BLZ zu verifizieren, genügt bei Datensätzen gleicher Bytegröße binäre Suche. Für (derzeit) 19575 Einträge benötigt die maximal 15 Lesezugriffe, mit bspw. fseek() und fread(), (2 ^15 = 32768 > 19575). Schneller durchkämmt auch eine Datenbank ihren Index nicht.

            Zitat von stefrohn01 Beitrag anzeigen
            Hi @all,


            ich möchte überprüfen lassen, ob die eingegebene Kontonummer und die dazugehörige Bankleitzahl theoretisch möglich wären, um unnötige fehleingaben / zahlendreher abzustellen.
            Was soll das bringen? Du könntest allenfalls Zuordnungsprobleme der Paarung Bankleitzahl (oder IBAN) und "Name der Bank" aufspüren. Letzteres ist aber auch problematisch. Meine lokale Sparkasse hat sich kürzlich mit ein paar Nachbarsparkassen zusammengeschlossen. Sie firmieren derzeit sowohl unter ihren alten Namen als auch unter dem neuen Verbund-Namen. Natürlich gibts auch eine neue gemeinsame Bankleitzahl und die alten bleiben noch eine Weile bestehen. Dummerweise kennt die aktuelle BLZ-Datei von zwar die alten BLZ und Filialnamen, von den neuen aber nur eingeschränkt (obwohl diese schon ein paar Monate gültig sind). Meine Spaßkasse akzeptiert sowohl neue als auch alte BLZ und Filialnamen -- ein von der BLZ-Datei gesteuertes PHP-Script aber nicht. Das dürfte zur Verwirrung beim (zahlungswilligen) Kunden führen.

            Ich verstehe nicht, was eine Prüfung auf die BLZ überhaupt bringen soll. Absichtliche Falscheingaben kann man damit nicht erkennen. Und ob man von einem Konto überhaupt etwas abbuchen kann, muss man anders ermitteln. Dazu benötigt man Zugriff auf eine entsprechende Abfrage-Schnittstelle von Zahlungsdienstleistern oder Banken. Vermutlich wird der weder kostenlos noch ohne vorherige Registrierung zu haben sein.

            Nun möchte ich eben die zwei Felder ( BLZ / Kontonummer ) so belegen das nicht geschaut wird ob etwas drin steht sondern eben geschaut wird das die eingegebenen Daten entsprechend der BundesbankFile auch möglich sind.
            (Alle) Kontonummern kennt die Bundesbank-Datei nicht. Das wären wohl auch etwas zu viel. Und wer von einem Konto abbuchen kann (oder ob das überhaupt möglich ist), bestimmt die Bank und manchmal auch der Kontoinhaber. Mein DiBA-Extrakonto hat sowohl eine gültige BLZ als auch Kontonummer. Trotzdem darfst du (oder dein Brötchengeber) davon nichts abbuchen. Gleiches gilt für "Sparbücher", Pfändungsichere Konten u.s.w.
            Zuletzt geändert von fireweasel; 14.04.2012, 13:26.
            Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

            Kommentar


            • #7
              Hi stefrohn01,
              Banken generieren Kontonummern nach Berechnungsmethoden.
              Heißt z.B., eine Kontonummer besteht aus 10 Ziffern, die letzte Ziffer ist eine Prüfsumme.
              Diese Prüfsumme wird/kann mit versch. Verfahren errechnet (werden), wobei jede Bank ihr eigenes Verfahren benutzt.
              Dabei wird eine Berechnungsmethode gewählt, z.B. MODULO 10, und eine Gewichtung.
              Dazu mehr unter http://www.bundesbank.de/download/za...v_pz200909.pdf
              Die Bankleitzahlen unterliegen einem ähnlichem Kontext.
              Hier: Deutsche Bundesbank - Browser-Empfehlung

              Gruß
              Günni

              Kommentar


              • #8
                Hi stefrohn01,
                Banken generieren Kontonummern nach Berechnungsmethoden.
                Heißt z.B., eine Kontonummer besteht aus 10 Ziffern, die letzte Ziffer ist eine Prüfsumme.
                Diese Prüfsumme wird/kann mit versch. Verfahren errechnet (werden), wobei jede Bank ihr eigenes Verfahren benutzt.
                Dabei wird eine Berechnungsmethode gewählt, z.B. MODULO 10, und eine Gewichtung.
                Dazu mehr unter http://www.bundesbank.de/download/za...v_pz200909.pdf
                Die Bankleitzahlen unterliegen einem ähnlichem Kontext.
                Hier: Deutsche Bundesbank - Browser-Empfehlung

                Gruß
                Günni

                Kommentar

                Lädt...
                X