Forum Replies Created

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter bennol

    (@bennol)

    Unsere eingetragenen Netto-Preise haben teilweise mehr als zwei Dezimalstellen (intern, im Shop werden Preise mit zwei Dezimalstellen ausgegeben), um bei Mehrwertsteuer-Berechnung „schöne” glatte Brutto-Preise zu ermöglichen, auch wenn z.B. 10 Stück auf einmal gekauft werden.

    Das führt aber hin und wieder zu dem beschriebenen Fehler bei der Bezahlung mit PayPal – es sieht also so aus, als ob wir wieder auf zweistellige Netto-Preise umsteigen und Preise mit XX,99 / XX,01 in Kauf nehmen müssen.

    Thread Starter bennol

    (@bennol)

    Update

    Okay, es scheint so, als ob die PayPal API zwangsläufig die einzelnen Produktpreise auf zwei Dezimalstellen rundet und sich deshalb die Plugin Klassen auch daran halten und den Preis erneut berechnen.
    Da WooCommerce aber Preise mit mehreren Dezimalstellen unterstützt führt das dann zu unterschiedlichen Summen.

    Wenn die gerundeten Summen der einzelnen Produkte einer Zahlung nicht mit dem Gesamtbetrag übereinstimmen lehnt die PayPal API die Zahlung ab.
    In diesem Fall lässt sich das auch nicht durch euer Plugin beheben und Preise mit mehr als zwei Dezimalstellen werden von PayPal nicht unterstützt und sind daher auch mit diesem Plugin unmöglich.

    Trotzdem vielen Dank für die Hilfe und viele Grüße
    Benno L.

    • This reply was modified 7 years, 3 months ago by bennol.
    Thread Starter bennol

    (@bennol)

    Die verlinkte Datei rundet nur die Versandkosten auf die im Shop angezeigten stellen. Wurde getestet und wie erwartet: Keine Änderung der Problematik.

    Das Problem bleibt, dass die vom PayPal Plugin verwendete OrderData Klasse die einzelnen Produktpreise rundet (unabhängig vom Format, das für die Kunden im Shop angezeigt wird). Damit kommt sie auf andere Summen als die WC_Order Klasse nach der sich das Plugin richten sollte.

    Sehr einfach zu sehen im Kontext von PatchProvider::get_payment_amount_patch:

    
    // Korrekte Summe der Bestellung
    // Aus WooCommerce Klasse WC_Order
    $this->order->get_total()
    // -> "1199.98"
    
    // Falsche Summe der Bestellung
    // Aus Plugin Klasse
    // WCPayPalPlus\WC\Payment\OrderData bzw. OrderDataCommon
    $this->order_data->get_total() 
    // -> "1200.04"
    

    Das PayPal Plugin verwendet die letztere, falsch gerundete Summe, während doch die Werte der WooCommerce Klasse WC_Order für die Zahlung benutzt werden sollten und nicht irgendwelche selbst rekonstruierten und gerundeten Werte.

    • This reply was modified 7 years, 3 months ago by bennol.
    • This reply was modified 7 years, 3 months ago by bennol.
    • This reply was modified 7 years, 3 months ago by bennol.
Viewing 3 replies - 1 through 3 (of 3 total)