WooCommerce: Checkout Gebühren für verschiedene Bezahlmethoden hinzufügen

Julian Lang
Julian Lang

21. Okt, 2022 | 1 Min. Lesezeit

Damit du nicht extra ein Plugin installieren oder kaufen musst, kannst du mit nachfolgendem Snippet deine eigens festgelegten Gebühren in den WooCommerce Checkout Prozess hinzufügen.

Hast du verschiedene externe Paymentanbieter wie PayPal oder Stripe kann es ganz schön ins Geld gehen, wenn deine Kunden vorzugsweise damit bezahlen. Um das zu verhindern und die jeweilige Gebühr der Anbieter auf deinen Kunden abzuwälzen kannst du die Gebühren dynamisch hinzufügen.

Das hier wollen wir erreichen. Dem Kunden wird die PayPal Gebühr aufgebrummt wenn er so einen bequemen Checkout möchte.
add_action( 'woocommerce_cart_calculate_fees', 'jl_add_fee_to_checkout' );
function jl_add_fee_to_checkout ( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
        return;
    }

    $chosen_payment_id = WC()->session->get('chosen_payment_method');

    if ( empty( $chosen_payment_id ) ) {
        return;
    }
        
    $subtotal = $cart->subtotal;
    $subt_1p = $subtotal / 100;

    // Kalkulation SEPA Gebühr
    $sepa_fee = 0.5 * $subt_1p;
    if ( 5 <= round($sepa_fee) ) {
        $sepa_fee = 5;
    }

    // Einstellungen Gebührkalkulation
    $targeted_payment_ids = [
        //'bacs' => 10, // Banküberweisung 10€ Pauschale
        'paypal' => round( (2.49 * $subt_1p) + 0.35, 2), // aktuelle PayPal Gebühren 2,49% + 35 Cent
        'ppcp-gateway' => round( (2.49 * $subt_1p) + 0.35, 2), // aktuelle PayPal Gebühren 2,49% + 35 Cent
        'stripe' => round( (1.4 * $subt_1p) + 0.25, 2), // aktuelle Stripe Gebühren 1,40% + 35 Cent
        'stripe_sepa' => round( $sepa_fee, 2), // aktuelle Stripe Gebühren siehe oben
        'stripe_giropay' => round( (1.4 * $subt_1p) + 0.25, 2), // aktuelle Stripe Gebühren 1,40% + 35 Cent
        'stripe_sofort' => round( (1.4 * $subt_1p) + 0.25, 2) // aktuelle Stripe Gebühren 1,40% + 35 Cent
    ];

    foreach ( $targeted_payment_ids as $payment_id => $fee_cost ) {
        if ( $chosen_payment_id === $payment_id ) {

            $label = '';
            if ( 'bacs' === $payment_id ) {
                $label = '(Kontogebühr)';
            }
            if ( 'paypal' === $payment_id || 'ppcp-gateway' === $payment_id ) {
                $label = '(PayPal)';
            }
            if ( 'stripe' === $payment_id ) {
                $label = '(Stripe Kreditkarten)';
            }
            if ( 'stripe_sepa' === $payment_id ) {
                $label = '(Stripe SEPA)';
            }
            if ( 'stripe_giropay' === $payment_id ) {
                $label = '(Stripe giropay)';
            }
            if ( 'stripe_sofort' === $payment_id ) {
                $label = '(Stripe SOFORT)';
            }

            // am ende false = ohne Steueraufschlag
            $cart->add_fee( 'Bezahlgebühr '.$label, $fee_cost, false );
        }
    }
}

add_action( 'woocommerce_checkout_init', 'jl_refresh_checkout_on_method_selection' );
function jl_refresh_checkout_on_method_selection() {
    wc_enqueue_js( "(function($) {
        $('form.checkout').on('change', 'input[name=payment_method]', function() {
            $(document.body).trigger('update_checkout');
        });
    })(jQuery)");
}

geschrieben von

Autor Avatar
Julian Lang

ist PHP / WordPress Entwickler. Arbeitet außerdem als Allrounder bei docrelations.de und entwickelt zwei coole Projekte: jadento.de | lifeisabinge.com

Schreibe einen Kommentar

© 2015 - 2022 | Julian Lang Webentwickler | WordPress Entwickler | Webdesigner in Bayreuth und Umgebung
Glücksrad drehen
Wait Gif

Das Glücksrad erscheint jetzt nur einmal!

Nutze die Chance und gewinne einen Preis

Neukunden Preise

  • 🏆: kostenlose lokale Google Font Einbindung
  • ⚡: kostenlose Performance Analyse deiner Webseite
  • 🤲: 50% Rabatt auf Stundensatz für eine Programmierstunde
    (30 Minuten kostenlos)