Neu Kundendaten extern verschlüsseln (Für den eigenen Shop) und per Import importieren

  • Wichtiger Hinweis Liebe Kunden, solltet Ihr den DATEV Rechnungsdatenservice 2.0 nutzen, dann müsst Ihr bis zum 30.06.2024 JTL-Wawi 1.9 installieren. Danach wird die Schnittstelle für ältere Versionen nicht mehr unterstützt.
  • JTL-Connect 2024: Ihr habt noch kein Ticket? Jetzt Early Bird Ticket zum Vorzugspreis sichern! HIER geht es zum Ticketverkauf

dapole

Aktives Mitglied
27. Oktober 2014
29
6
Ahoi zusammen,

nicht, das ich das schon nicht versucht hätte, mir diese Informationen aus dem SourceFiles des Shops zu holen, aber so richtig hatte ich bislang keinen Erfolg.

Hintergrund: Wir haben in unserem "GeschäftsKunden- Shop" diverse Kunden bei denen wir keine Bankdaten gepflegt haben. Diese sind zum größten Teil in der WaWi verfügbar.

Mein Vorhaben ist :
Ich möchte die IBAN und .. eigentlich alle Daten, die in der tkundenkontodaten Tabelle hinterlegt sind, per Import Nachpflegen.
DAs es geht, da bin ich mir sicher ;D


Ich weiß, dass wenn ich die Daten selbst verschlüsseln möchte:
- 1 der Blowfishkey notwendig ist

Daran soll es ja nicht scheitern. Wenn mir jemand also einen Hinweis geben könnte, wie ich ,meinem Ziel etwas näher komme, dann nehme ich diesen gerne Dankend an....
(Vielleicht ein JS - Codeschnipsel , PHP-Coe Schnipsel ... , .. )

Habe schon überlegt eine eigene Tabelle zu erstellen und diese erstmal 'unverschlüsselt' abzulegen, und später bei jeder ersten (Kunden-) Bestellung die über SEPA läuft, diese Daten dann vom System ins die richtige Tabelle speichern lasse ...
(Temporär aus meiner Tabelle ziehen, in das Formular laden, Kunde muss nur noch 'Weiter' klicken und Daten werden richtig gespeichert... )

Nun; Einen Plan B hab ich schon mal :):)

Freu mich auf antworten

Grüße
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.797
1.646
Berlin
Das ist ein schlechter Plan B, denn die daten da unverschlüsselt abzulegen ist wirklich nicht gut.

JTL hat im Code nur zwei Funktionen zum ver- und entschlüsseln

mehr als das brauchst du nicht

Code:
use JTL\xtea\XTEA;

$xtea  = new XTEA(\BLOWFISH_KEY);
$xtea->encrypt($str);
$xtea->decrypt($str);
 

dapole

Aktives Mitglied
27. Oktober 2014
29
6
Danke!

Umgesetzt hab ich es so, falls jemand auch mal möchte :):):)

PHP:
$this->crypto   = Shop::Container()->getCryptoService();
$originalCsvFile = 'Bankdaten_jtlwawi.csv';

$encryptedCsvFile = 'Bankdaten_jtlwawi_encrypted.csv';
            
           
            // CSV-Datei öffne
if (isset($this->crypto) && !is_null($this->crypto)) {
// CSV-Datei öffnen
if (($handle = fopen($originalCsvFile, "r")) !== FALSE) {
// Neue CSV-Datei zum Schreiben öffnen
$newCsvFile = fopen($encryptedCsvFile, 'w');
            
// Erste Zeile der CSV-Datei lesen und in die neue Datei schreiben (unverschlüsselt)
$firstLine = fgetcsv($handle, 1000, ";");
 fputcsv($newCsvFile, $firstLine);
            
                    // Durch jede weitere Zeile der CSV-Datei iterieren
                    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
                        // Die ersten beiden Spalten unverschlüsselt lassen und die restlichen Spalten verschlüsseln ( Waren bei mir ID Spalten, um den Import wieder durchführen zu können)
                        $encryptedData = array_merge(array_slice($data, 0, 2), array_map(function($value) {
                            if (isset($this->crypto) && !is_null($this->crypto)) {
                                return $this->crypto->encryptXTEA($value);
                            } else {
                                // Wenn $this->crypto nicht definiert ist oder null ist, Rückgabe des unverschlüsselten Werts
                                return $value;
                            }
                        }, array_slice($data, 2)));
                        
                        fputcsv($newCsvFile, $encryptedData); // Verschlüsselte Daten in die neue CSV-Datei schreiben
                    }
            
                    // Dateien schließen
                    fclose($handle);
                    fclose($newCsvFile);
            
                    echo "Verschlüsselung abgeschlossen.";
                } else {
                    echo "Fehler beim Öffnen der CSV-Datei.";
                }
            } else {
                echo "CryptoService nicht initialisiert.";
            }


Also: Das ist definitiv keine Aufgabe für jemanden der nicht halbwegs mit programmieren / Scripten auskennt ....
Ich habe es mit meinem eigenem Plugin durchgeführt (Um den CryptoService aufrufen zu können)

Das ganze im TEstShop. Wichtig: der BlowFish key (steht in der config) muss im TestShop exakt der selbe/gleiche sein, wie in der produktiven Umgebung.
Ansonsten wird es nicht Funktionieren.

Danke & Gruß