Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Kontodaten für Lastschrift im Kundenaccount

    tukani

    • Neu im Forum
    • Beiträge: 1
    Kontodaten für Lastschrift im Kundenaccount
    am: 26. Oktober 2010, 11:24:16
    Hallo,

    wenn ein Kunde wiederholt per Lastschrift bestellt, muss er immer wieder manuell seine Kontodaten eingeben, obwohl diese bereits bei uns liegen. Kann XTC diese nicht speichern und bei eine Neubestellung bereithalten ?

    mfg



    Linkback: https://www.modified-shop.org/forum/index.php?topic=8793.0

    COTENA

    • Frisch an Board
    • Beiträge: 63
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #1 am: 26. Oktober 2010, 11:29:15
    Mahlzeit,

    das wäre wirklich etwas sinnvolles. Hab bis jetzt auch nie etwas passendes gefunden.

    Gruß Karsten

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #2 am: 26. Oktober 2010, 12:07:22
    Der Vorschlag kollidiert leider ein wenig mit den Vorschriften zur Datenvermeidung.

    Grüße

    Torsten

    serv-95

    • Neu im Forum
    • Beiträge: 2
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #3 am: 26. Oktober 2010, 12:26:32
    Das mit der Datenvermeidung stimmt zwar, allerdings bieten viele große Versandhändler diesen "Service" an. Wobei mir das Gesetz da noch nach meiner Meinung etwas zu unausgegoren ist. Einerseits sind die Händler verpflichtet so wenig Daten zu erheben und zu speichern, aber bei jeder Bestellung, werden die Lastschriftdaten wieder mit in die Datenbank gespeichert. Da kann also keine rede sein von Datenvermeidung, sondern im Gegenteil es bestehen zum Teil deutlich mehr Daten als wenn man dem Kunden anbietet seine bevorzugte Zahlungsweise einmalig zu speichern. Ich würde bei einer Bestellung per Lastschrift folgendes machen:
    1. Einen Hinweis setzen, den der Kunde per Haken abnicken muss, das die Daten zum Zwecke der Bestellung gespeichert werden und beim nächsten Einkauf wiederverwendet werden dürfen.
    2. Die Kontodaten in die Datenbank speichern und bei der nächsten Bestellung wieder aus der Datenbank auslesen.
    Ob dies rechtlich so umsetzbar ist, sollte man mit dem Anwalt seines Vertrauens besprechen.

    Manni

    Thomas

    • Fördermitglied
    • Beiträge: 1.587
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #4 am: 26. Oktober 2010, 12:29:48
    Sowieso erstaunlich das ganze, bei Amazon kann ich Kreditkarten, Bankeinzugdaten usw. hinterlegen wie ich lustig bin und beim nächsten Einkauf einfach auswählen. Bzw. was heißt hinterlegen, nach dem ersten mal zahlen per Latschrift stehen die Daten zur Verfügung, auch wenn ich mich nicht erinnern kann dafür einen Haken gesetzt zu haben.

    serv-95

    • Neu im Forum
    • Beiträge: 2
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #5 am: 26. Oktober 2010, 12:36:10
    Dass die Daten zu verfügung stehen ist richtig aber man brauch ja die Erlaubnis des Kunden diese auch längerfristig zu speichern. Weil rein theoretisch, kann der Kunde wenn er die Ware erhalten hat, den Händler auffordern seine gespeicherten Kontodaten zu löschen.

    RolandG

    • Fördermitglied
    • Beiträge: 56
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #6 am: 25. November 2010, 10:26:42
    Was haltet ihr von einem Kästchen zum Anhaken und einem Text wie "Bitte die bereits vorliegenden Kontodaten verwenden" oder "Bitte die Kontodaten von meiner letzten Bestellung verwenden"? Denn wenn ein Kunde einmal bestellt und dabei Lastschrift als Zahlungsweise gewählt hat, liegen die Kontodaten ja automatisch irgendwo beim Händler vor.

    RolandG

    • Fördermitglied
    • Beiträge: 56
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #7 am: 30. November 2010, 09:50:51
    Okay, das mit dem Kästchen zum Anhaken ist vielleicht nicht so das Wahre... Deshalb nun was richtig Schönes :-)

    Vorab: Ich fand den nachfolgenden Code bei der "Konkurrenz" unter folgendem Link: Kontodateneingabe Nicht Bei Jeder Lastschriftbestellung. In diesem Thread wird der Code über mehrere Postings hinweg verfeinert. Darüber hinaus findet man Teile dieses Codes mittlerweile auch an anderen Stellen. Alle Veröffentlichungen haben jedoch ein paar Fehler gemeinsam (Leerzeichen in Variablen-Namen, Umbrüche in Code-Zeilen, wo keine sein dürfen) und enthalten Bezeichner, die je nach xtC-Variante angepasst werden müssen.

    Nachdem ich mich durch diese Widrigkeiten gewühlt und alles korrigiert und angepasst habe, findet ihr hier nun den Code, der für modified eCommerce Shopsoftware, Version 1.05 richtig ist.

    Nun zur Sache: Mit der nachfolgenden Änderung wird erreicht, dass ein Kunde, der einmal bestellt und seine Kontodaten zur Zahlung per Lastschrift eingegeben hat, diese Kontodaten ab der nächsten Bestellung nicht erneut eingeben muss. Konkret ist es so, dass die Kontodaten aus der Datenbank ausgelesen und in den Eingabefeldern angezeigt werden (so, wie es jetzt auch schon mit dem Namen des Kunden geschieht). Falls der Kunde eine andere Bankverbindung angeben möchte, kann er die Daten einfach überschreiben. Bei jeder nachfolgenden Bestellung wird jeweils die bei der davor aufgegebenen Bestellung eingegebene Bankverbindung angezeigt.

    Um das zu erreichen, ist die Datei banktransfer.php im Verzeichnis root/includes/modules/payment zu ändern. Konkret ist die Funktion "function selection()" komplett durch folgenden Code zu ersetzen

    Code: PHP  [Auswählen]
      function selection()
        {
            global $order;

            $banktransfer_text='banktransfer_';
            $banktransfer_blz_text=$banktransfer_text. 'blz';
            $banktransfer_number_text=$banktransfer_text.'number';
            $banktransfer_bankname_text=$banktransfer_text.'bankname';
            $banktransfer_owner_text=$banktransfer_text.'owner';

            $blz=$_GET[$banktransfer_blz_text];
            $number=$_GET[$banktransfer_number_text];
            $bankname=$_GET[$banktransfer_bankname_text];
            $owner=$_GET[$banktransfer_owner_text];
            $billing_name=trim($order->billing['firstname'] . ' ' . $order->billing['lastname']);
            if (!$owner)
            {
                $owner=$billing_name;
            }
            if (
                $_SESSION['customers_status']['customers_status_id']<>DEFAULT_CUSTOMERS_STATUS_ID_GUEST &&
                $_SESSION['customer_country_id']==STORE_COUNTRY
                )
            {
                $post_blz=$_POST[$banktransfer_blz_text];
                $post_number=$_POST[$banktransfer_number_text];
                $post_bankname=$_POST[$banktransfer_bankname_text];
                $post_owner=$_POST[$banktransfer_owner_text];
                if (!$post_owner)
                {
                    $post_owner=$billing_name;
                }
                if ($post_blz && $post_number && $post_bankname && $post_owner)
                {
                    //We are here apparently after a payment error => use posted data (if completely available),
                    //as it might differ from last payment data
                    $blz=$post_blz;
                    $number=$post_number;
                    $bankname=$post_bankname;
                    $owner=$post_owner;
                }
                else
                {
                    //Try to find last order for customer with banktransfer payment and fetch bank data from there
                    $banktransfer_query = xtc_db_query("select bt.banktransfer_owner,bt.banktransfer_number, bt.banktransfer_bankname, bt.banktransfer_blz from banktransfer bt, orders o where o.customers_id=".$_SESSION['customer_id']." and o.orders_id=bt.orders_id LIMIT 1");
                    while ($bank_data=xtc_db_fetch_array($banktransfer_query))
                    {
                        $this_blz=$bank_data[$banktransfer_blz_text];
                        if ($this_blz)
                        {
                            $blz=$this_blz;
                            $number=$bank_data[$banktransfer_number_text];
                            $bankname=$bank_data[$banktransfer_bankname_text];
                            $owner=$bank_data[$banktransfer_owner_text];
                        }
                    }
                }
            }
            $title_text='title';
            $field_text='field';
            $selection = array(
            'id' => $this->code,
            'module' => $this->title,
            'description'=>$this->info,
            'fields' => array(array(
            $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE,
            $field_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_INFO),
            array(
            $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_OWNER,
            $field_text => xtc_draw_input_field('banktransfer_owner', $owner,'size="50"')),
            array(
            $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BLZ,
            $field_text => xtc_draw_input_field($banktransfer_blz_text,$blz, 'size="8" maxlength="8"')),
            array(
            $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NUMBER,
            $field_text => xtc_draw_input_field($banktransfer_number_text, $number, 'size="16" maxlength="32"')),
            array(
            $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NAME,
            $field_text => xtc_draw_input_field($banktransfer_bankname_text,$bankname,'size="50"')),
            array(
            $title_text => '',
            $field_text => xtc_draw_hidden_field('recheckok', $_POST['recheckok']))
            ));
            if (MODULE_PAYMENT_BANKTRANSFER_FAX_CONFIRMATION =='true')
            {
                $selection['fields'][] = array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE,
                $field_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE2 . '<a href="' . MODULE_PAYMENT_BANKTRANSFER_URL_NOTE .
                '" target="_blank">' . MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE3 . '</a>' . MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE4);
                $selection['fields'][] = array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_FAX,
                $field_text => xtc_draw_checkbox_field('banktransfer_fax' , 'on'));
            }
            return $selection;
        }
     
    Und wenn ihr schon an der banktransfer.php seid: Immer wieder stört es Kunden, dass die komplette Bankverbindung in de abschließenden Bestätigungsseite im Klartext angezeigt wird. Um das zu vermeiden und jeweils die erste Hälfte der Bankleitzahl und der Kontonummer durch x zu ersetzen, ist die etwas weiter unten in der banktransfer.php stehende Funktion "function confirmation()" komplett durch folgenden Code zu ersetzen

    Code: PHP  [Auswählen]
        function confirmation()
        {
            if ($_POST['banktransfer_owner'])
            {
                $title_text='title';
                $field_text='field';
                $fields_text='fields';

                $blz=$this->banktransfer_blz;
                $len=strlen($blz)/2;
                $blz=str_repeat('x',$len).substr($blz, $len);

                $number=$this->banktransfer_number;
                $len=strlen($number)/2;
                $number=str_repeat('x',$len).substr($number,$len);

                $confirmation = array(
                $title_text => $this->title,
                $fields_text => array(array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_OWNER,
                $field_text => $this->banktransfer_owner),
                array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BLZ,
                $field_text => $blz),
                array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NUMBER,
                $field_text => $number),
                array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NAME,
                $field_text => $this->banktransfer_bankname)
                ));
            }
            if ($_POST['banktransfer_fax'] == "on") {
                $confirmation = array(
                $fields_text => array(array(
                $title_text => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_FAX)));
                $this->banktransfer_fax = "on";
            }
            return $confirmation;
        }
     

    p3e

    • Experte
    • Beiträge: 2.424
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #8 am: 30. November 2010, 12:57:06
    Gute Idee! Hier noch ne kleine Verbesserung, die Du vielleicht noch ergänzt:

    So wird aber die Bankverbindung aus der ersten Bestellung genommen. Du will aber die der letzten Bestellung und musst ORDER BY bt.orders_id DESC nutzen.
    Im oberen Code einfach vor das LIMIT 1 setzen :)

    RolandG

    • Fördermitglied
    • Beiträge: 56
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #9 am: 30. November 2010, 14:28:32
    Das ist das großartige an der Community. :-) Vielen Dank!

    p3e

    • Experte
    • Beiträge: 2.424
    Kontodaten für Lastschrift im Kundenaccount
    Antwort #10 am: 07. Dezember 2010, 15:40:28
    Jetzt noch ne Anregung wegen dem Datenschutz:
    Nach erfolgreichem Versand, sollte man aus Datenvermeidungsgründen ja die Daten löschen. Man hat Sie dann ja eh noch auf der Wawi aber auf dem Server sollten die dann weg. Wie wäre es also, wenn man die letzten vier Stellen nach dem Versand automatisch löscht und durch xxxx ersetzt (also statt KtNr. 123456789 KtNr. 12345XXXX)?
    Die Erweiterung von RolandG holt dann die Daten inkl. xxxx wieder aus der Datenbank und trägt sie so in das Formular ein. Man muss nun nur darauf achten, dass die Bankdaten nicht nochmal überprüft werden, da das inkl. den xxxx ja sicherlich nicht funktioniert ;) aber bei Folgebestellungen weiß man ja eh, ob die Bankdaten stimmen.

    wölfin

    • Neu im Forum
    • Beiträge: 1
    Re: Kontodaten für Lastschrift im Kundenaccount
    Antwort #11 am: 19. Juli 2012, 13:18:47
    Ich bin neu hier im Forum und suchte für eben dieses Problem eine Lösung.

    Habe den Code oben auch ausprobiert - funktioniert super - solange der Kunde nicht die vorbelegten Bankdaten während der Bestellung ändert, anschließend auf "weiter" geht und dann noch mal den "zurück"-Button betätigt. Bei dieser Konstellation, die ja vorkommen könnte, werden wieder die Bankdaten der letzten Bestellung vorbelegt und nicht die soeben korrigierten Daten. Da ich mir vorstellen kann, dass der Kunde die Bankdaten dann nicht unbedingt noch mal überprüft, ist mir das für den scharfen Einsatz zu heikel.

    Hat noch jemand eine Idee, wie man diese an sich gute Lösung so ändern könnte, dass nach der Änderung der Lastschrift-Bankdaten durch den Kunden und anschließender Nutzung des Zurück-Buttons die geänderten Daten und nicht die der letzten Bestellung vorbelegt werden?

    Danke im Voraus!

    keineLustmehr

    • Schreiberling
    • Beiträge: 360
    • Geschlecht:
    Re: Kontodaten für Lastschrift im Kundenaccount
    Antwort #12 am: 19. Juli 2012, 14:38:02
    Ich würde erstmal noch darauf hinweise, dass die Daten unverschlüsselt in der Datenbank liegen. Derzeit wird nur die Kreditkarten-Nr verschlüsselt gespeichert, aber Inhaber, Gültigkeit und CCV stehen unverschlüsselt in der DB. Das gleiche gilt für die kompletten Daten der Bankverbindung bei Lastschriften. Bei einer möglichen mehrfachen Verwendung der Bankdaten sollte hier dringeds nachgebessert werden.

    Volker
    6 Antworten
    3072 Aufrufe
    20. August 2010, 11:21:10 von toddy
    11 Antworten
    9573 Aufrufe
    20. Mai 2011, 08:04:10 von clem
    1 Antworten
    960 Aufrufe
    21. April 2021, 13:39:21 von Tomcraft