feat: per-page SumUp credentials in checkout flow (Phase 3)
- Add resolve_page_config() to determine PageConfig from cart/calendar context - Set page_config_id on Order during checkout - Pass page_config to SumUp create_checkout and build_sumup_reference - check_sumup_status uses order.page_config for per-page credential resolution - Fix: use session.flush() instead of g.s.flush() in check_sumup_status Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
from suma_browser.app.payments.sumup import get_checkout as sumup_get_checkout
|
||||
from sqlalchemy import update
|
||||
from models.calendars import CalendarEntry # NEW
|
||||
from models.calendars import CalendarEntry
|
||||
|
||||
|
||||
async def check_sumup_status(session, order):
|
||||
checkout_data = await sumup_get_checkout(order.sumup_checkout_id)
|
||||
# Use order's page_config for per-page SumUp credentials
|
||||
page_config = getattr(order, "page_config", None)
|
||||
checkout_data = await sumup_get_checkout(order.sumup_checkout_id, page_config=page_config)
|
||||
order.sumup_status = checkout_data.get("status") or order.sumup_status
|
||||
sumup_status = (order.sumup_status or "").upper()
|
||||
|
||||
@@ -26,10 +28,9 @@ async def check_sumup_status(session, order):
|
||||
.where(*filters)
|
||||
.values(state="provisional")
|
||||
)
|
||||
# also clear cart for this user/session if it wasn't already
|
||||
elif sumup_status == "FAILED":
|
||||
order.status = "failed"
|
||||
else:
|
||||
order.status = sumup_status.lower() or order.status
|
||||
|
||||
await g.s.flush()
|
||||
await session.flush()
|
||||
|
||||
Reference in New Issue
Block a user