Hi,
Danke nochmal [I]markus26[/I] für den Hinweis, so konnte ich die nötigen Anpassungen durchführen.
Für alle, die die Angabe der Bankverbindung schon mal SEPA-“tauglich” machen wollen, poste ich hier mal, was ich gemacht habe:
Datei: [I]core/oxinputvalidator.php[/I]
Methode: [I]validatePaymentInputData[/I]
Zeile: [I]ab 186[/I] (sofern sich die Datei im Originalzustand befindet!)
[U]Diesen Teil:[/U]
// cleaning up spaces
$aDynvalue['lsblz'] = str_replace( ' ', '', $aDynvalue['lsblz'] );
$aDynvalue['lsktonr'] = str_replace( ' ', '', $aDynvalue['lsktonr'] );
//if konto number is shorter than 10, add zeros in front of number
if ( $oStr->strlen( $aDynvalue['lsktonr'] ) < 10 ) {
$sNewNum = str_repeat( '0', 10 - $oStr->strlen( $aDynvalue['lsktonr'] ) ).$aDynvalue['lsktonr'];
$aDynvalue['lsktonr'] = $sNewNum;
}
if ( $oStr->preg_match( "/^\d{5,8}$/", $aDynvalue['lsblz'] ) && $oStr->preg_match( "/\d{10}/", $aDynvalue['lsktonr'] ) ) {
$blOK = true;
}
[U]ersetzen durch diesen:[/U]
// cleaning up spaces
list( $aDynvalue['lsblz'], $aDynvalue['lsktonr'] ) = str_replace( ' ', '', array($aDynvalue['lsblz'], $aDynvalue['lsktonr']) );
// checking on classic lsblz
if ( !$oStr->preg_match('/^\d{5,8}$/', $aDynvalue['lsblz']) ) {
// transform lsblz and lsktonr to uppercase like swift/bic and iban codes
list( $aDynvalue['lsblz'], $aDynvalue['lsktonr'] ) = array_map( 'strtoupper', array($aDynvalue['lsblz'], $aDynvalue['lsktonr']) );
// checking layout of swift/bic and iban code
$blIsSwiftBIC = ( $oStr->preg_match('/^[\dA-Z]{8}$|^[\dA-Z]{11}$/', $aDynvalue['lsblz']) );
$blIsIBAN = ( $oStr->preg_match('/^[A-Z]{2}\d{2}[\dA-Z]{18,30}$/', $aDynvalue['lsktonr']) );
$blOK = ( $blIsIBAN && $blIsSwiftBIC );
} else {
//if konto number is shorter than 10, add zeros in front of number
$aDynvalue['lsktonr'] = ( $oStr->strlen($aDynvalue['lsktonr']) < 10 )?
str_repeat( '0', 10 - (integer)$oStr->strlen($aDynvalue['lsktonr']) ) . $aDynvalue['lsktonr']:
$aDynvalue['lsktonr'];
$blOK = $oStr->preg_match( '/\d{10}/', $aDynvalue['lsktonr'] );
}
Solltet ihr nur auf deutsche IBAN´s testen wollen, könnt ihr ne kürzere Variante der Prüfung dafür wählen:
$blIsIBAN = $oStr->preg_match( '/^[A-Z]{2}\d{20}$/', $aDynvalue['lsktonr'] );
Damit bestehen die Felder für die Bankleitzahl und Kontonummer auch die Eingabe von Swift/BIC bzw. IBAN.
Ihr solltet zusätzlich noch die Labels der Felder ändern, so daß der Kunde weiß, daß er die Daten dort eintragen kann.
[B][I]Bitte denkt dran, daß ihr euch eine Kopie der “oxinputvalidator.php” macht, damit ihr im Zweifelsfall jederzeit wieder zurücksetzen könnt![/I][/B]
Grüße
Arne