Webshop: IP-Hash entfällt mit Zahlung oder Storno, keine Käufer-Telefonnummer mehr gespeichert
schliesseAb und verwirf entfernen ipHash aus dem Bestell-JSON, sobald die Bestellung nicht mehr offen ist (Begrenzung offener Bestellungen je IP bleibt). customer_details.phone wird nicht mehr in kaeufer.telefon übernommen; Kundenansicht und Bestelldetail geben auch in alten Datensätzen keine Telefonnummer aus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4ab84e31ac
commit
43473c0879
9 files changed
+79
-19
No files matched your search
@@ -159,7 +159,8 @@ test('schliesseAb: Normalfall - bezahlt, Käuferdaten, Bestand abgezogen, G09 an
|
||||
assert.equal(doc.paymentIntentId, 'pi_test1')
|
||||
assert.equal(doc.kaeuferEmail, 'max@example.com')
|
||||
const daten = JSON.parse(doc.bestellung)
|
||||
assert.deepEqual(daten.kaeufer, { name: 'Max Mustermann', email: 'max@example.com', telefon: '+49 170 1234567' })
|
||||
assert.deepEqual(daten.kaeufer, { name: 'Max Mustermann', email: 'max@example.com' }, 'Stripe liefert eine Telefonnummer, gespeichert wird sie nicht')
|
||||
assert.ok(!doc.bestellung.includes('1234567'), 'keine Telefonnummer irgendwo im Bestell-JSON')
|
||||
assert.deepEqual(daten.lieferadresse, { name: 'Max Mustermann', line1: 'Lieferweg 7', line2: 'Hinterhaus', postal_code: '67655', city: 'Kaiserslautern', country: 'DE' })
|
||||
assert.equal(daten.rechnungsadresse.line1, 'Rechnungsweg 1')
|
||||
assert.equal(daten.zahlungsart, 'card')
|
||||
@@ -397,7 +398,39 @@ test('schliesseAb: Abholung ohne Lieferadresse, Telefon und Namen fehlen', async
|
||||
const daten = JSON.parse(order(b.orderId).bestellung)
|
||||
assert.equal(daten.lieferadresse, undefined)
|
||||
assert.equal(daten.rechnungsadresse, undefined)
|
||||
assert.deepEqual(daten.kaeufer, { name: '', email: 'x@example.com', telefon: '' })
|
||||
assert.deepEqual(daten.kaeufer, { name: '', email: 'x@example.com' })
|
||||
})
|
||||
|
||||
test('IP-Hash: nach der Zahlung weg (auch bei später Zahlung einer verworfenen Bestellung), vorher da', async () => {
|
||||
await aufbau()
|
||||
const r = await B.legeBestellungAn(ctx, { positionen: [{ produktId: 'a1', menge: 1 }], lieferart: 'versand', land: 'DE' }, { now: T0, ipHash: 'abcdef0123456789' })
|
||||
const b = { ...r, doc: order(r.orderId), sessionId: order(r.orderId).stripeSessionId }
|
||||
assert.equal(JSON.parse(b.doc.bestellung).ipHash, 'abcdef0123456789', 'solange offen, steht der IP-Hash im Datensatz')
|
||||
await B.schliesseAb({ accountId: ACCOUNT, session: zahle(b), now: nach(60) })
|
||||
assert.equal(order(b.orderId).status, 'bezahlt')
|
||||
assert.equal(JSON.parse(order(b.orderId).bestellung).ipHash, undefined, 'bezahlt: kein IP-Hash mehr')
|
||||
assert.ok(!order(b.orderId).bestellung.includes('ipHash'))
|
||||
|
||||
// spaete Zahlung: verworfen (IP-Hash weg), danach bezahlt - bleibt ohne IP-Hash
|
||||
const r2 = await B.legeBestellungAn(ctx, { positionen: [{ produktId: 'a1', menge: 1 }], lieferart: 'versand', land: 'DE' }, { now: T0, ipHash: 'abcdef0123456789' })
|
||||
const b2 = { ...r2, doc: order(r2.orderId), sessionId: order(r2.orderId).stripeSessionId }
|
||||
await B.verwirf(r2.orderId, 'abgelaufen', { now: nach(1900) })
|
||||
await B.schliesseAb({ accountId: ACCOUNT, session: zahle(b2), now: nach(2000) })
|
||||
assert.equal(order(r2.orderId).status, 'bezahlt')
|
||||
assert.ok(!order(r2.orderId).bestellung.includes('ipHash'))
|
||||
})
|
||||
|
||||
test('IP-Hash: verwirf entfernt ihn, Verlauf und übrige Daten bleiben', async () => {
|
||||
await aufbau()
|
||||
const r = await B.legeBestellungAn(ctx, { positionen: [{ produktId: 'a1', menge: 1 }], lieferart: 'versand', land: 'DE' }, { now: T0, ipHash: 'abcdef0123456789' })
|
||||
assert.equal(JSON.parse(order(r.orderId).bestellung).ipHash, 'abcdef0123456789')
|
||||
const erg = await B.verwirf(r.orderId, 'abgelaufen', { now: nach(1900) })
|
||||
assert.equal(erg.verworfen, true)
|
||||
const daten = JSON.parse(order(r.orderId).bestellung)
|
||||
assert.equal(daten.ipHash, undefined)
|
||||
assert.equal(erg.order.daten.ipHash, undefined)
|
||||
assert.deepEqual(daten.verlauf.map((v) => v.was), ['angelegt', 'abgelaufen'])
|
||||
assert.equal(daten.positionen.length, 1)
|
||||
})
|
||||
|
||||
test('verwirf: nur aus offen; Verlauf, Reservierung frei; G14 nur mit mail und bekannter Adresse', async () => {
|
||||
|
||||
Reference in new issue
Block a user