fix: Zahlungsmethoden-Text vereinheitlichen, Retry-Button in Zahlungsfehler-Mail
- Apple Pay/Google Pay geprueft (Stripe-Doku via `stripe docs`): bei der hier verwendeten vollstaendig gehosteten Checkout-Seite (kein payment_method_types, kein ui_mode: "embedded") bereits automatisch enthalten, sobald Kartenzahlung aktiv ist - keine Codeaenderung noetig, keine Domain-Registrierung noetig (die betrifft laut Stripe nur Elements/eingebettete Checkout-Seite). Klaerenden Kommentar in api/checkout/route.ts und README-Abschnitt "Stripe" ergaenzt. - versand-zahlung-Seite nannte nur 4 von 6 tatsaechlich akzeptierten Zahlungsmethoden (SEPA-Lastschrift und Klarna fehlten, obwohl sie laut README aktiv unterstuetzt werden und auf der Checkout-Seite selbst bereits korrekt gelistet sind) - Text in beiden Sprachen an die vollstaendige Liste angeglichen. - Transaktions-E-Mails durchgesehen: Layout/Branding/Track-Order-Button bei Bestellbestaetigung und Versand-Mail bereits solide, keine Aenderung noetig. Die Zahlungsfehler-Mail forderte im Fliesstext zur erneuten Bestellung auf, hatte dafuer aber keinen anklickbaren Link - jetzt ein echter Button zum Shop. Verifiziert: tsc --noEmit sauber, pnpm test 151/151 gruen, pnpm build erfolgreich.
This commit is contained in:
1 parent
a579ebabeb
commit
6143e5704d
6 files changed
+21
-3
No files matched your search
@@ -98,6 +98,7 @@ interface EmailStrings {
|
||||
heading: (firstName: string) => string;
|
||||
intro: (orderNumber: string) => string;
|
||||
retryNote: string;
|
||||
button: string;
|
||||
subject: (orderNumber: string) => string;
|
||||
};
|
||||
}
|
||||
@@ -198,6 +199,7 @@ const de: EmailStrings = {
|
||||
intro: (orderNumber) =>
|
||||
`Der Zahlungseinzug für deine Bestellung <strong>${orderNumber}</strong> konnte nicht abgeschlossen werden. Wir haben die Bestellung daher storniert, es sind dir keine Kosten entstanden.`,
|
||||
retryNote: "Du kannst die Bestellung gerne erneut aufgeben, zum Beispiel mit einer anderen Zahlungsmethode.",
|
||||
button: "ERNEUT BESTELLEN",
|
||||
subject: (orderNumber) => `Zahlung zu Bestellung ${orderNumber} fehlgeschlagen — Wabenhain`,
|
||||
},
|
||||
};
|
||||
@@ -298,6 +300,7 @@ const en: EmailStrings = {
|
||||
intro: (orderNumber) =>
|
||||
`The payment for your order <strong>${orderNumber}</strong> could not be completed. We've cancelled the order, so no costs were incurred.`,
|
||||
retryNote: "Feel free to place the order again, for example with a different payment method.",
|
||||
button: "ORDER AGAIN",
|
||||
subject: (orderNumber) => `Payment for order ${orderNumber} failed — Wabenhain`,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -354,6 +354,10 @@ export async function returnRefundedEmail(order: OrderStatusUpdateInput): Promis
|
||||
|
||||
export async function paymentFailedEmail(order: OrderStatusUpdateInput): Promise<EmailContent> {
|
||||
const s = getEmailStrings(order.locale).paymentFailed;
|
||||
// Der Text (retryNote) fordert bereits zur erneuten Bestellung auf — ohne
|
||||
// einen tatsaechlich anklickbaren Button dazu bliebe das ein reiner
|
||||
// Lauftext-Hinweis ohne direkten Weg zurueck in den Shop.
|
||||
const shopUrl = `https://${siteConfig.domain}/shop`;
|
||||
const html = await emailLayout(
|
||||
order.locale,
|
||||
s.preheader(order.orderNumber),
|
||||
@@ -361,11 +365,12 @@ export async function paymentFailedEmail(order: OrderStatusUpdateInput): Promise
|
||||
<h1 style="font-size:20px;color:#24352B;margin:0 0 12px;">${s.heading(order.firstName)}</h1>
|
||||
<p style="margin:0 0 8px;line-height:1.5;">${s.intro(order.orderNumber)}</p>
|
||||
<p style="margin:0;line-height:1.5;">${s.retryNote}</p>
|
||||
<div style="margin-top:20px;">${button(shopUrl, s.button)}</div>
|
||||
`
|
||||
);
|
||||
return {
|
||||
subject: s.subject(order.orderNumber),
|
||||
html,
|
||||
text: `${s.intro(order.orderNumber).replace(/<\/?strong>/g, "")} ${s.retryNote}`,
|
||||
text: `${s.intro(order.orderNumber).replace(/<\/?strong>/g, "")} ${s.retryNote}\n\n${s.button}: ${shopUrl}`,
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user