Modify

Opened 12 years ago

Closed 11 years ago

#35 closed Neues Feature (fixed)

Zahlungsmodule für Überweisung für SEPA vorbereiten

Reported by: Torsten Riemer Owned by: Volker Rehn
Priority: normal Milestone: modified-shop-2.0.0.0
Component: Shop Version: 1.06
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by Volker Rehn)

Wir müssen die Zahlungsmodule für Überweisung für SEPA vorbereiten zwecks Bankdatenvaldierung, siehe: http://www.iban.de/iban-pruefsumme.html. Betroffen ist das Modul banktransfer, evtl weitere, die mit Bankdaten hantieren.

Änderungen/Vorschläge:

  • Prüflib http://code.google.com/p/php-iban/ nach includes/external/php-iban übernehmen
  • im modul banktransfer.php einige Stellen
  • 2 weitere Eingabefelder IBAN / BIC bei den Bankdaten
  • zwei weitere Felder banktransfer_iban varchar(50), banktransfer_bic varchar(11) in Tabelle banktransfer
  • Prüfroutine analog zur bisherigen Bankdatenprüfung, dh neue class ibanktransfer_validation.php, oder eher direkt aus der externen Prüflib
  • Daten normalisieren vor dem Speichern, also Zusatz "iban" und Leer- oder andere Trennzeichen etc entfernen

Normalisierung wird auch von der Prüf-lib gemacht, den Code können wir übernehmen/nutzen. Für die Prüfung durch den shop ist das egal, die varchar(50) lassen Platz für allerhand Schnörkel, aber nachgeschaltete Wawis erwarten uU standardisierte ibans.

Vorrangregelung: Wenn beide Bankdatenarten (national/international) angegeben werden, beide nehmen? Beide prüfen?
-> Steuerung der Pflichtfelder anpassen

lang/<language>/modules/payment

  • Erweiterung admin/orders um die neuen Felder

Schnittstellen

Amicron

Das Amicron Shopschnittstellenskript export/af_xtscript<nr>.php übernimmt bankdaten aus banktransfer, kennt aber natürlich die neuen Felder nicht. Es funktioniert weiterhin, nur die neuen Daten werden nicht transportiert. Sollen wir Amicron das mitteilen? Hinweis an Anwender, dass die selber anpassen müssen?

export/xml_export.php ist auch betroffen.

Attachments (3)

sepa.php (19.0 KB ) - added by Volker Rehn 12 years ago.
banktransfer_sepa_trunk.rar (16.6 KB ) - added by Simon Heinrich 12 years ago.
banktransfer_validation.zip (20.1 KB ) - added by Torsten Riemer 12 years ago.
Datei von Christian Rothe

Download all attachments as: .zip

Change History (13)

comment:1 by Torsten Riemer, 12 years ago

Description: modified (diff)

comment:2 by Simon Heinrich, 12 years ago

SEPA Überweisung ist bereits mit dem Modul "EUSTANDARDTRANSFER" möglich.

Für SEPA Lastschrift(!) existieren noch keine Anpassungen.

comment:3 by Volker Rehn, 12 years ago

Description: modified (diff)

comment:4 by Volker Rehn, 12 years ago

Description: modified (diff)

comment:5 by Gerhard Waldemair, 12 years ago

Owner: changed from somebody to Volker Rehn
Status: newassigned

by Volker Rehn, 12 years ago

Attachment: sepa.php added

comment:6 by Volker Rehn, 12 years ago

habe sepa.php angehängt, dort sind die Änderungen fürs modul banktransfer und für die zuhehörigen Einträge unter lang/german/modules/payment/banktransfer.php drin. In der DB sind außerdem folgende statements auszuführen:

alter table banktransfer add banktransfer_iban varchar(50) DEFAULT NULL;
alter table banktransfer add banktransfer_bic varchar(11) DEFAULT NULL;

Die prüflib http://code.google.com/p/php-iban/ bzw drei Dateien daraus (oophp-iban.php, php-iban.php und registry.txt) müssen nach includes/external/php-iban kopiert werden.

Bitte testen.

Last edited 12 years ago by Volker Rehn (previous) (diff)

comment:7 by Simon Heinrich, 12 years ago

Ich habs in meinem lokalen Trunk integriert und mal getestet.

include(DIR_WS_EXTERNAL . 'php-iban/php-iban.php');

sollte

include(DIR_FS_EXTERNAL . 'php-iban/php-iban.php');

Im Moment scheinen die beiden Felder IBAN & BIC keine "Mussfelder" zu sein.
Ich kann bei beiden eingeben was ich will und bekomme intern zwar "$banktransfer_result = 12", aber es kommt keine Fehlermeldung via javascript_validation() hoch...

siehe folgendes Attachment

Last edited 12 years ago by Simon Heinrich (previous) (diff)

by Simon Heinrich, 12 years ago

Attachment: banktransfer_sepa_trunk.rar added

comment:8 by Torsten Riemer, 12 years ago

Folgendes habe ich heute von Christian Rothe erhalten:

Hallo Simon,

die Bundesbank hat ihr Repertoire der Prüfverfahren für Kontonummern wieder einmal erweitert. Ich habe wieder einmal die aktuellen Änderungen und Ergänzungen in das Modul banktransfer_validation.php eingebaut. Es repräsentiert den aktuellen Stand vom 09.12.2013.

Darüber hinaus enthält das Modul eine weitere Ergänzung - nämlich die Möglichkeit, IBAN-Nummern zu prüfen. Dabei ist die Sache so aufgebaut, dass alles voll kompatibel zu bisherigen XTC-Versionen und Derivaten läuft. Deshalb kann man mein Modul 1:1 sofort in bestehende Shops einbauen. Die Kombination Konto-Nr./BLZ kann wie bisher weiter geprüft werden. Wenn man IBANs prüfen möchte, geschieht dies über die Klassenerweiterung IbanAccountCheck, welche die weiter bestehende alte Klasse AccountCheck erweitert.

Hier die alte (weiterhin gültige) Einbindung der Kontonummernprüfung aus dem Zahlungsmodul banktransfer.php:

include(DIR_WS_CLASSES . 'banktransfer_validation.php');
$banktransfer_validation = new AccountCheck;
$banktransfer_result = $banktransfer_validation->CheckAccount(xtc_db_prepare_input($_POST['banktransfer_number']), xtc_db_prepare_input($_POST['banktransfer_blz']));

Will man künftig IBANs prüfen, ginge dies mit einem leicht modifizierten Code:

include(DIR_WS_CLASSES . 'banktransfer_validation.php');
$banktransfer_validation = new IbanAccountCheck;
$banktransfer_result = $banktransfer_validation->IbanCheckAccount(xtc_db_prepare_input($_POST['banktransfer_iban']));

Meine IBAN-Kontonummern-Prüfung prüft im ersten Schritt die IBANs auf Plausibilität. Dies klappt für alle gängigen Länder. Sollte es sich um eine deutsche IBAN-Kontonummer handeln, werden zusätzlich noch die Prüfmethoden der Bundesbank zur Prüfung der BLZ und Kontonummer herangezogen, die bekanntlich in der IBAN enthalten sind.

Ich denke, dass dieses Klassenmodul schon mal die halbe Miete ist, um auch im SEPA-Zeitalter als Shopbetreiber weiter die Möglichkeit zur Lastschriftzahlungen anbieten zu können. Es enthält alle relevanten Prüfmethoden für deutsche Kontonummern. Jetzt muss nur noch jemand das banktransfer.php-Zahlungsmodul anpassen und schon kann der Modified-Shop auch mit SEPA-Lastschriften umgehen.

comment:9 by Torsten Riemer, 12 years ago

Hier eine weitere Mail von Christian Rothe:

Hallo Torsten,

vielen Dank für Deine Antwort. Anbei noch eine erweiterte Version meines aktuellen Moduls banktransfer_validation.php

Es kann jetzt auch noch die BIC Codes auf Plausibilität überprüfen.

Hier der Code zur Einbindung:

include(DIR_WS_CLASSES . 'banktransfer_validation.php');
$banktransfer_validation = new IbanAccountCheck;
$banktransfer_result = $banktransfer_validation->IbanCheckAccount(xtc_db_prepare_input($_POST['banktransfer_iban']), xtc_db_prepare_input($_POST['banktransfer_bic']));

Allerdings ist der BIC-Code als Parameter nur optional. In Zukunft (ab Februar 2014) wird es im innerdeutschen Zahlungsverkher möglich sein, Geld auch ohne BIC zu überweisen bzw. abzubuchen. Deshalb funktioniert die Kontoprüfung auch, wenn man nur die IBAN-Nummer übergibt: $banktransfer_validation->IbanCheckAccount($banktransfer_iban');

Der Charme meines Moduls besteht darin, dass die Plausibiltätsprüfung der deutschen Kontonummern komplett integriert ist und Fehleingaben nun nahezu unmöglich sind.

Die Datei von Christian Rothe (banktransfer_validation.zip) habe ich hier im Ticket mal angehängt.

by Torsten Riemer, 12 years ago

Attachment: banktransfer_validation.zip added

Datei von Christian Rothe

comment:10 by Gerhard Waldemair, 11 years ago

Resolution: fixed
Status: assignedclosed

SEPA wurde bereits komplett integriert. Eine automatische Errechnung von IBAN wird nicht integriert

Modify Ticket

Action
as closed The owner will remain Volker Rehn.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.