diff --git a/src/components/profile/CartTab.js b/src/components/profile/CartTab.js index 4cc6f0e..e50c6be 100644 --- a/src/components/profile/CartTab.js +++ b/src/components/profile/CartTab.js @@ -116,7 +116,7 @@ class CartTab extends Component { // Determine payment method - respect constraints let prefillPaymentMethod = template.payment_method || "wire"; const paymentMethodMap = { - "credit_card": "stripe", + "credit_card": "mollie",/*stripe*/ "bank_transfer": "wire", "cash_on_delivery": "onDelivery", "cash": "cash" @@ -363,6 +363,51 @@ class CartTab extends Component { this.orderService.createStripeIntent(totalAmount, this.loadStripeComponent); return; } + // Handle molllie payment differently + if (paymentMethod === "mollie") { + // Store the cart items used for mollie payment in sessionStorage for later reference + try { + sessionStorage.setItem('molliePaymentCart', JSON.stringify(cartItems)); + } catch (error) { + console.error("Failed to store mollie payment cart:", error); + } + + // Calculate total amount for mollie + const subtotal = cartItems.reduce( + (total, item) => total + item.price * item.quantity, + 0 + ); + const totalAmount = Math.round((subtotal + deliveryCost) * 100); // Convert to cents + + if (this.context && this.context.socket && this.context.socket.connected) { + this.context.socket.emit( + "createMollieIntent", + { amount: totalAmount, invoiceId: 'A-34344' }, + (response) => { + if (response.success) { + + localStorage.setItem('pendingPayment', JSON.stringify({ + paymentId: response.paymentId, + amount: totalAmount, + timestamp: Date.now() + })); + window.location.href = response.checkoutUrl; + + } else { + console.error("Error:", response.error); + } + } + ); + } else { + console.error("Socket context not available"); + this.setState({ + isCompletingOrder: false, + completionError: "Cannot connect to server. Please try again later.", + }); + } + + return; + } // Handle regular orders const orderData = { diff --git a/src/components/profile/CheckoutValidation.js b/src/components/profile/CheckoutValidation.js index 51a3a33..6c891aa 100644 --- a/src/components/profile/CheckoutValidation.js +++ b/src/components/profile/CheckoutValidation.js @@ -82,7 +82,7 @@ class CheckoutValidation { // Prefer stripe when available and meets minimum amount if (deliveryMethod === "DHL" || deliveryMethod === "DPD" || deliveryMethod === "Abholung") { - return "stripe"; + return "mollie";/*stripe*/ } // Fall back to wire transfer @@ -106,11 +106,21 @@ class CheckoutValidation { newPaymentMethod = "wire"; } + // Allow mollie for DHL, DPD, and Abholung delivery methods, but check minimum amount + if (deliveryMethod !== "DHL" && deliveryMethod !== "DPD" && deliveryMethod !== "Abholung" && paymentMethod === "mollie") { + newPaymentMethod = "wire"; + } + // Check minimum amount for stripe payments if (paymentMethod === "stripe" && totalAmount < 0.50) { newPaymentMethod = "wire"; } + // Check minimum amount for mollie payments + if (paymentMethod === "mollie" && totalAmount < 0.50) { + newPaymentMethod = "wire"; + } + if (deliveryMethod !== "Abholung" && paymentMethod === "cash") { newPaymentMethod = "wire"; } diff --git a/src/components/profile/PaymentMethodSelector.js b/src/components/profile/PaymentMethodSelector.js index 9987da2..597040b 100644 --- a/src/components/profile/PaymentMethodSelector.js +++ b/src/components/profile/PaymentMethodSelector.js @@ -24,7 +24,7 @@ const PaymentMethodSelector = ({ paymentMethod, onChange, deliveryMethod, onDeli // Handle delivery method changes - auto-switch to stripe when DHL/DPD is selected useEffect(() => { if ((deliveryMethod === "DHL" || deliveryMethod === "DPD") && paymentMethod === "cash") { - handlePaymentMethodChange({ target: { value: "stripe" } }); + handlePaymentMethodChange({ target: { value: "mollie" /*stripe*/ } }); } }, [deliveryMethod, paymentMethod, handlePaymentMethodChange]); @@ -42,7 +42,7 @@ const PaymentMethodSelector = ({ paymentMethod, onChange, deliveryMethod, onDeli description: "Bezahlen Sie per Banküberweisung", disabled: totalAmount === 0, }, - { + /*{ id: "stripe", name: "Karte oder Sofortüberweisung", description: totalAmount < 0.50 && totalAmount > 0 @@ -55,6 +55,20 @@ const PaymentMethodSelector = ({ paymentMethod, onChange, deliveryMethod, onDeli "/assets/images/mastercard.png", "/assets/images/visa_electron.png", ], + },*/ + { + id: "mollie", + name: "Karte oder Sofortüberweisung", + description: totalAmount < 0.50 && totalAmount > 0 + ? "Bezahlen Sie per Karte oder Sofortüberweisung (Mindestbetrag: 0,50 €)" + : "Bezahlen Sie per Karte oder Sofortüberweisung", + disabled: totalAmount < 0.50 || (deliveryMethod !== "DHL" && deliveryMethod !== "DPD" && deliveryMethod !== "Abholung"), + icons: [ + "/assets/images/giropay.png", + "/assets/images/maestro.png", + "/assets/images/mastercard.png", + "/assets/images/visa_electron.png", + ], }, { id: "onDelivery", diff --git a/src/pages/Datenschutz.js b/src/pages/Datenschutz.js index 5887a3a..19aabe4 100644 --- a/src/pages/Datenschutz.js +++ b/src/pages/Datenschutz.js @@ -106,7 +106,7 @@ const Datenschutz = () => { Für andere Zahlungsarten – Lastschrift, Abholung oder Nachnahme – werden keine zusätzlichen Cookies verwendet, sofern Sie nicht die Google-Anmeldung nutzen. - + {/* Stripe (Zahlungsabwicklung) @@ -117,7 +117,21 @@ const Datenschutz = () => { Soweit Stripe personenbezogene Daten außerhalb der EU, insbesondere in den USA, verarbeitet, geschieht dies unter Einhaltung geeigneter Garantien. Stripe setzt hierfür die EU-Standardvertragsklauseln nach Art. 46 DSGVO ein, um ein angemessenes Datenschutzniveau sicherzustellen. Wir weisen jedoch darauf hin, dass die USA datenschutzrechtlich als Drittland mit möglicherweise unzureichendem Datenschutzniveau gelten. Weitere Informationen finden Sie in der Datenschutzerklärung von Stripe unter https://stripe.com/de/privacy. + */} + + + Mollie (Zahlungsabwicklung) + + Wir nutzen auf unserer Website den Zahlungsdienstleister Mollie zur Abwicklung von Zahlungen. Anbieter des Dienstes ist Mollie B.V., Keizersgracht 126, 1015 CW Amsterdam, Niederlande. In diesem Zusammenhang werden personenbezogene Daten, die für die Zahlungsabwicklung erforderlich sind, an Mollie übermittelt - insbesondere Ihr Name, Ihre E-Mail-Adresse, Rechnungsanschrift, Zahlungsinformationen (z. B. Kreditkartendaten) sowie die IP-Adresse. Die Datenverarbeitung erfolgt zum Zweck der Zahlungsabwicklung; Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, da sie der Erfüllung eines Vertrags mit Ihnen dient. + + + Mollie verarbeitet bestimmte Daten außerdem als eigenständig Verantwortlicher, beispielsweise zur Erfüllung gesetzlicher Pflichten (etwa Geldwäsche-Prävention) und zur Betrugsabwehr. Daneben haben wir mit Mollie einen Auftragsverarbeitungsvertrag gemäß Art. 28 DSGVO geschlossen; im Rahmen dieser Vereinbarung handelt Mollie bei der Zahlungsabwicklung ausschließlich nach unserer Weisung. + + + Soweit Mollie personenbezogene Daten außerhalb der EU, insbesondere in den USA, verarbeitet, geschieht dies unter Einhaltung geeigneter Garantien. Mollie setzt hierfür die EU-Standardvertragsklauseln nach Art. 46 DSGVO ein, um ein angemessenes Datenschutzniveau sicherzustellen. Wir weisen jedoch darauf hin, dass die USA datenschutzrechtlich als Drittland mit möglicherweise unzureichendem Datenschutzniveau gelten. Weitere Informationen finden Sie in der Datenschutzerklärung von Mollie unter https://www.mollie.com/de/privacy. + + Dauer der Speicherung