Templateshop - Eine große Auswahl an neuen und 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: ANLEITUNG: PayPal ab 200 EUR ausblenden

    ponyhof

    • Mitglied
    • Beiträge: 147
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    am: 30. Juli 2009, 20:25:26
    Hallo ! Wir würden gerne die Zahlart Paypal ab 200 EUR Warenwert ausblenden. Wo setzt man an ? Denke da an eine if Abfrage in der checkout_payment ?

    Leider ist PHP an mir vorüber gegangen. :-)

    Kann einer helfen ?

    Grüße

    [EDIT Tomcraft 14.12.2010: Hier geht es direkt zur Anleitung von Ralf2209 und elainy.]



    Linkback: https://www.modified-shop.org/forum/index.php?topic=1521.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    Ralf2209

    • Neu im Forum
    • Beiträge: 26
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #1 am: 10. Dezember 2010, 05:03:24
    Etwas spät aber vielleicht kann das ja doch noch jemand brauchen.

    In /includes/modules/payment/paypal.php folgendes IN die Funktion (function paypal() ) am Ende einfügen:

    Code: PHP  [Auswählen]
    //  Paypal nur bis Warenwert 200 Euro akzeptieren:
                    if( $_SESSION['cart']->show_total()> 200){
                            $this->enabled = false;
                    }
    Leider funktioniert das bei mir nicht währungsabhängig, d.h. Paypal wird bei 200 Euro, 200 Dollar, 200 CHF usw. ausgeblendet. Vielleicht hat ja jemand dafür eine Lösung.

    elainy

    • Fördermitglied
    • Beiträge: 78
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #2 am: 10. Dezember 2010, 12:21:36
    Hallo ihr beiden,

    eigentlich gibt es in jedem Payment-Modul die Funktion update_status()
    Die würde ich für sowas benutzen. Da ist auch das Abschalten drin, für den Fall, dass das Zahlungsmodul für eine bestimmte Zone nicht zugelassen ist.

    Folgender Snippet müsste dir als $amount den Wert in EUR umrechnen:

    Code: PHP  [Auswählen]
                    if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
                            $total = $order->info['total'] + $order->info['tax'];
                    } else {
                            $total = $order->info['total'];
                    }
                    if ($_SESSION['currency'] == 'EUR') {
                            $amount = round($total, $xtPrice->get_decimal_places('EUR'));
                    } else {
                            $amount = round($xtPrice->xtcCalculateCurrEx($total, 'EUR'), $xtPrice->get_decimal_places('EUR'));
                    }
     
    Der Snippet verwendet xtPrice, deshalb müsstest du am Anfang der update_status() noch xtPrice global setzen (leider  :| ). So in der Art:

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

    Ralf2209

    • Neu im Forum
    • Beiträge: 26
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #3 am: 12. Dezember 2010, 06:09:59
    @elainy
    Danke für Deine Antwort.
    Leider habe ich ein Problem bei dem Einbau des Codes:

    Code: PHP  [Auswählen]
            function update_status() {
                    // Stand: 29.04.2009
                    global $order, $xtPrice;
                    if(($this->enabled == true) && ((int) MODULE_PAYMENT_PAYPAL_ZONE> 0)) {
                            $check_flag = false;
                            $check_query = xtc_db_query("select zone_id from ".TABLE_ZONES_TO_GEO_ZONES." where geo_zone_id = '".MODULE_PAYMENT_PAYPAL_ZONE."' and zone_country_id = '".$order->billing['country']['id']."' order by zone_id");
                            while($check = xtc_db_fetch_array($check_query)) {
                                    if($check['zone_id'] <1) {
                                            $check_flag = true;
                                            break;
                                    } elseif($check['zone_id'] == $order->billing['zone_id']) {
                                            $check_flag = true;
                                            break;
                                    }
                            }
                            if($check_flag == false) {
                                    $this->enabled = false;
                            }
                    }

                    if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
                            $total = $order->info['total'] + $order->info['tax'];
                    } else {
                            $total = $order->info['total'];
                    }
                    if ($_SESSION['currency'] == 'EUR') {
                            $amount = round($total, $xtPrice->get_decimal_places('EUR'));
                    } else {
                            $amount = round($xtPrice->xtcCalculateCurrEx($total, 'EUR'), $xtPrice->get_decimal_places('EUR'));
                    }

            }
    Wo und wie muss die Abfrage für die 200 Euro jetzt eingebaut werden?

    h-h-h

    • modified Team
    • Beiträge: 4.562
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #4 am: 12. Dezember 2010, 06:33:07
    Hallo Ralf,
    teste mal das von Dir oben angewendete wie folgt:

    Code: PHP  [Auswählen]
    //  Paypal nur bis Warenwert 200 Euro akzeptieren:
            if( $_SESSION['cart']->show_total()> 200 && $_SESSION['languages_id'] = 2){
                $this->enabled = false;
            }
    Gruß

    h-h-h

    elainy

    • Fördermitglied
    • Beiträge: 78
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #5 am: 13. Dezember 2010, 11:00:25
    Hallo Ralf,

    unter

    Code: PHP  [Auswählen]
        if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
            $total = $order->info['total'] + $order->info['tax'];
        } else {
            $total = $order->info['total'];
        }
        if ($_SESSION['currency'] == 'EUR') {
            $amount = round($total, $xtPrice->get_decimal_places('EUR'));
        } else {
            $amount = round($xtPrice->xtcCalculateCurrEx($total, 'EUR'), $xtPrice->get_decimal_places('EUR'));
        }

    und vor der schließenden Klammer:

    Code: PHP  [Auswählen]
    if($amount>=200) {
      $this->enabled = false;
    }

    Gruß,
    elainy

    PS: @ h-h-h: Das würde am Ursprungscode lediglich ändern, dass er nur ausgeführt wird, wenn der Kunde auf dem deutschen Shop surft. D.h. aber dass der Fehler bei einem Schweizer-Deutschen immernoch auftreten würde z.B.

    Ralf2209

    • Neu im Forum
    • Beiträge: 26
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #6 am: 14. Dezember 2010, 03:00:07
    Hallo elainy,

    Deine Lösung funktioniert perfekt! Vielen Dank dafür...
    Hier noch einmal die komplette Funktion update_status() aus der paypal.php:

    Code: PHP  [Auswählen]
            function update_status() {
                    // Stand: 29.04.2009
                    global $order, $xtPrice;
                    if(($this->enabled == true) && ((int) MODULE_PAYMENT_PAYPAL_ZONE> 0)) {
                            $check_flag = false;
                            $check_query = xtc_db_query("select zone_id from ".TABLE_ZONES_TO_GEO_ZONES." where geo_zone_id = '".MODULE_PAYMENT_PAYPAL_ZONE."' and zone_country_id = '".$order->billing['country']['id']."' order by zone_id");
                            while($check = xtc_db_fetch_array($check_query)) {
                                    if($check['zone_id'] <1) {
                                            $check_flag = true;
                                            break;
                                    } elseif($check['zone_id'] == $order->billing['zone_id']) {
                                            $check_flag = true;
                                            break;
                                    }
                            }
                            if($check_flag == false) {
                                    $this->enabled = false;
                            }
                    }

                    if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
                            $total = $order->info['total'] + $order->info['tax'];
                    } else {
                            $total = $order->info['total'];
                    }
                    if ($_SESSION['currency'] == 'EUR') {
                            $amount = round($total, $xtPrice->get_decimal_places('EUR'));
                    } else {
                            $amount = round($xtPrice->xtcCalculateCurrEx($total, 'EUR'), $xtPrice->get_decimal_places('EUR'));
                    }

                    if($amount>=200) {
                            $this->enabled = false;
                    }

            }

    elainy

    • Fördermitglied
    • Beiträge: 78
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #7 am: 14. Dezember 2010, 11:52:35
    Danke für die Blumen Ralf. Gern geschehen. :thumbs:

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #8 am: 14. Dezember 2010, 12:11:09
    Damit das nicht verloren geht, schiebe ich die tolle Anleitung mal in die Modulecke. ;-)

    Mit sowas könnt ihr auch immer gerne das Wiki befüllen! :B

    Grüße

    Torsten

    morpheus010100

    • Neu im Forum
    • Beiträge: 1
    Re: ANLEITUNG: PayPal ab 200 EUR ausblenden
    Antwort #9 am: 28. Februar 2015, 20:33:49
    Hallo an alle,

    möchte mich hier auch für dieses tolle Änderung im Zahlmodul bedanken, welches nach etwas Anpassarbeit für eine andere Zahlart erfolgreich angewendet werden konnte.

    Shopversion ist hier der  xt:Commerce v3.04 SP2.1, dort funktioniert es in Verbindung mit einem Skrill/monebookers Modul in Vebindung mit moneybookers Lastschrift.

    Folgendes Problem: Der Warenwert wurde hier auf 150 Euro Gesamtwert beschränkt. Kauft man beispielsweiße im Shop für 149,99 inkl. Versandkosten ein, dann wird das Modul brav angezeigt. Geht man über den Wert dann wird es nicht angezeigt.

    Bei jedem "braven" Kunden funktioniert das auch so wie gewünscht. Nun wurde dies aufgrund von missbräuchlicher Nutzung des Moduls mit entwendeten Bankdaten immer gerne bei Artikeln mit höheren Preisen genutzt, aus diesem Grund die Einschränkung des Gesamtbetrags.

    Folgendes Szenario, was auch im modified shop so reproduzierbar sein sollte:
    Kunde kauft ein und legt Artikel unterhalb des Wertes in den Warenkorb, z.B. Artikel für 100 Euro wechselt bis zur checkout_payment.php und öffnet den Shop in einem neuen Tab und legt hier weiter Artikel in den Warenkorb, also auch weit über dem Wert von 150 Euro, wo das Modul ausgeblendet werden soll, im alten Tab im Checkout ist es aber noch vorhanden.

    Hat der Kunde also genug Artikel in den Warenkorb gelegt um über den Wert zu kommen, dann klickt er im alten Tab der checkout_payment.php auf weiter und anschließend auf bestellen und hat das System überrumpelt.

    Wie kann man das lösen das auf diesem Weg nicht das System ausgetrickst wird?

    Das Thema ist zwar gute 5 Jahre alt, freue mich aber wenn jemand seine Unterstützung anbieten kann!

    Vielen Dank für jede Hilfe im Voraus!

    Gruß

    Dirk
    2 Antworten
    1606 Aufrufe
    18. August 2017, 13:32:28 von sb_cbo-do
    1 Antworten
    2772 Aufrufe
    01. März 2012, 18:05:27 von DokuMan
    54 Antworten
    24088 Aufrufe
    16. Juni 2017, 19:09:55 von Herr_Bert
    78 Antworten
    52525 Aufrufe
    20. April 2015, 21:43:17 von moscbabe