Tom Bartelt
40b4774f0d
fix(kundencenter): SQL-Fatal beim Adresse speichern (leerer parent_id)
...
- main_widget_menu_2: !empty statt isset, sonst 'parent_id in(10636,)'
- add_address: exit nach dem Location-Header
- get_this_url: leere Parameter nicht anhaengen
2026-09-22 20:45:53 +02:00
Tom Bartelt
85bc1d8c9a
feat(payments): Block Zahlungsvorgang im Bestell-Editor, Storno-Felder bei automatischem Storno
...
- Bestell-Editor rechts: Zahlungsvorgang (Status, Grund, Transaktions-ID,
Referenz, Betraege, Zeiten, Verlauf aus PG payment_log), anbieterneutral
ueber payment_transactions (Payments\Overview, Log::forOrder)
- markCancelled() fuellt Stornodatum, Stornostatus, Stornogrund und
Storno-Nachricht der Bestellung (nur leere Felder)
- neuer Stornogrund 'Zahlung beim Anbieter nicht abgeschlossen' (install.sql)
- reconcile: 404-Grund lesbar mit Alter des Vorgangs
2026-09-22 09:30:52 +02:00
Thomas Bartelt
6361249fd0
feat(warenkorb-neu, kasse-neu): ohne Navigation (site_type full_width), breiterer Kasten ab 900px Spalte
2026-09-18 20:17:19 +02:00
Thomas Bartelt
49ac0f7e35
feat(kasse): Entwurf neue Kassenansicht content_cash_desk_neu.tpl (Schritte links, Bestellkasten rechts, Feldmarkierung statt Alert), Weiche ?ansicht=neu
...
Feldnamen, IDs und content_cash_desk.js unveraendert; nur Markup, CSS und Absende-Pruefung neu.
2026-09-18 20:09:05 +02:00
Thomas Bartelt
94b924fa46
fix(warenkorb-neu): Scrollposition ueber den Submit retten, Post-Redirect-Get nach Mengenaenderung
2026-09-18 19:59:04 +02:00
Thomas Bartelt
ae7e400645
feat(warenkorb): Entwurf neue Ansicht content_shoppingcart_neu.tpl (Zeilen statt Tabelle, Stepper, Summenkasten), Weiche ?ansicht=neu; Alt-Text am Thumbnail entfernt
2026-09-18 19:44:08 +02:00
Thomas Bartelt
dc57c725f6
feat(warenkorb): ein Formular fuer Mengen, Anmerkung und Weiterleitung; Anmerkung in der Kasse editierbar
...
Vorher: Anmerkung in eigenem Formular mit 'Text speichern', 'Zur Kasse' als reiner Link
(ungespeicherte Mengen/Anmerkung gingen verloren), in der Kasse readonly mit dem Hinweis
'kann nur im Warenkorb bearbeitet werden' -- ohne technischen Grund, die Kasse postete das
Feld ohnehin mit. Jetzt: cart_goto ('kasse' | 'express:<modul>') im Warenkorb-Modul,
Kasse uebernimmt POST customer_info in die Session, Texte auf Deutsch geglaettet.
2026-09-18 19:38:02 +02:00
Thomas Bartelt
dec101f0cb
fix(kasse): Express-Hinweis nennt den Anzeigenamen des Anbieters statt 'Paypal v2'
2026-09-18 07:53:29 +02:00
Thomas Bartelt
f65901060f
feat(payments): Express-Start mit Versand und Zahlartaufschlag, PATCH nur bei Abweichung
...
PayPal Live verlangt nach jeder Betragsaenderung eine zweite Freigabe (422
PAYER_ACTION_REQUIRED). Die Kasse rechnet den Endbetrag jetzt beim Express-Start vor
(erste aktive Versandart des Gebiets, Gast = Gebiet 1, eingeloggt = Land/Gruppe), der
Provider vergleicht vor dem PATCH mit dem Stand bei PayPal und laesst ihn bei Gleichstand
aus. Webhooks ordnen ohne custom_id ueber die PayPal-Order-ID zu.
2026-09-18 07:40:27 +02:00
Thomas Bartelt
c8fc7fba2f
fix(payments): Express-Rueckkehr nach zweiter PayPal-Freigabe nimmt den normalen Rueckweg mit Capture
...
PayPal Live antwortet auf den Capture nach dem Betrags-PATCH mit 422 PAYER_ACTION_REQUIRED
(Sandbox nicht). Der Kunde gibt erneut frei und kehrt ueber ?payment_express= zurueck; dort
scheiterte onExpressReturn an custom_id != 'express' und zeigte eine Fehlerseite, waehrend
die Bestellung offen blieb (Live-Bestellung 312143).
2026-09-18 07:30:17 +02:00
Thomas Bartelt
5e6fcb0c3d
feat(payments): Express-Adressen nur aus erlaubten Laendern (Setting express_countries, Standard DE)
2026-09-13 21:49:09 +02:00
Thomas Bartelt
f33533b411
feat(payments): Express-Kauf aus dem Warenkorb (PayPal v2): Start ohne Bestellung, Adresse von PayPal, Kasse vorbelegt, Capture ohne zweiten Besuch
2026-09-13 21:44:46 +02:00
Thomas Bartelt
397fb5944a
feat(payments): Anbieter-Gerüst core/payments mit PayPal Orders v2
...
- ProviderInterface/AbstractProvider: Vorgang mit Uhrzeit+Session (payment_transactions),
Mail und Warenkorb erst nach Zahlung, idempotentes markPaid, Betragsabgleich,
shop_event + PG payment_log
- Secrets verschluesselt (libsodium) in MySQL, Schluessel ausserhalb Docroot
- Cashdesk: ?payment_return/?payment_cancel, Pending-Riegel, zahlung_erst_spaeter()
- Backend Zahlart-Editor: Einstellungen speichern (war ohne Empfaenger), Secret-Felder
- payment_webhook.php (Standalone), cli.php (init-key, secret, reconcile, status)
- PayPal-v2-Blaupause vom Juli entfernt
2026-09-13 19:51:52 +02:00
Thomas Bartelt
af81e8f63a
sync: Zahlungsstrecke, PG-Events, Fatal-Log und PayPal-v2-Blaupause vom Live-Stand 2026-09-13
Deploy to Dev / deploy (push) Successful in 1s
2026-09-13 19:20:24 +02:00
Thomas Bartelt
20d55f77b8
wip: Mobile-Theme-Testphase und PHP-8.2-Guards (Stand Juni 2026)
2026-09-13 19:10:56 +02:00
Thomas Bartelt
d504f8a05d
Initial import: Carteasy Shop (Dev-Stand)
2026-04-20 01:03:43 +02:00