Shop Review B I-1: Eingangsmail G15 bei SEPA, G09 nimmt die Bestellung ausdruecklich an

G15 "Wir haben Ihre Bestellung erhalten" geht einmal raus, sobald Stripe die Sitzung
abgeschlossen, die Zahlung aber noch nicht gemeldet hat (meldeEingang, Marker mailsEingangAt,
aus dem Webhook und aus pruefeOffene). G09 sagt ausdruecklich, dass der Kaufvertrag mit der
Mail geschlossen ist, trennt Bestell- und Zahlungsdatum und nennt die Telefonnummer des
Anbieters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-05 09:44:48 +00:00
1 parent 1b7aa9ebe3
commit 77fb8c8f44
11 files changed
+238 -27

No files matched your search

+6 -2
View File
@@ -233,7 +233,7 @@ test('checkout.session.completed (bezahlt) ⇒ bezahlt, Bestand, Mails; Wiederho
assert.equal(daten(b.orderId).verlauf.filter((v) => v.was === 'bezahlt').length, 1)
})
test('SEPA: completed unbezahlt ändert nichts, async_payment_succeeded bucht', async () => {
test('SEPA: completed unbezahlt lässt die Bestellung offen und schickt einmal die Eingangsmail G15, async_payment_succeeded bucht', async () => {
await aufbau()
const b = await bestelle()
const unbezahlt = zahle(b, { payment_status: 'unpaid', payment_method_types: ['sepa_debit'] })
@@ -241,7 +241,11 @@ test('SEPA: completed unbezahlt ändert nichts, async_payment_succeeded bucht',
assert.equal(order(b.orderId).status, 'offen')
assert.equal(produkt('a1').bestand, 5)
await warteAufVersand()
assert.equal(sink.sent.length, 0)
assert.deepEqual(sink.sent.map((m) => [m.to[0].address, m.subject.startsWith('Wir haben Ihre Bestellung')]), [['max@example.com', true]], 'nur die Eingangsmail an den Käufer')
assert.ok(daten(b.orderId).mailsEingangAt, 'Marker gesetzt')
assert.equal((await sende(ereignis('checkout.session.completed', unbezahlt))).status, 200)
await warteAufVersand()
assert.equal(sink.sent.length, 1, 'Wiederholung des Ereignisses: keine zweite Eingangsmail')
const bezahlt = { ...unbezahlt, payment_status: 'paid' }
assert.equal((await sende(ereignis('checkout.session.async_payment_succeeded', bezahlt))).status, 200)
assert.equal(order(b.orderId).status, 'bezahlt')