This repository has been archived on 2026-02-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
cart/bp/cart/services/check_sumup_status.py
giles d407957928
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 41s
Phase 5: Replace cross-domain writes with glue services, emit events
- checkout.py: use claim_entries_for_order(), emit order.created
- check_sumup_status.py: use confirm_entries_for_order(), emit order.paid
- global_routes.py: use get_entries_for_order() instead of relationship
- order.py: remove calendar_entries relationship
- api.py: remove /adopt endpoint (replaced by event-driven adoption)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:35:43 +00:00

29 lines
1.1 KiB
Python

from shared.browser.app.payments.sumup import get_checkout as sumup_get_checkout
from shared.events import emit_event
from glue.services.order_lifecycle import confirm_entries_for_order
async def check_sumup_status(session, order):
# 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()
if sumup_status == "PAID":
if order.status != "paid":
order.status = "paid"
await confirm_entries_for_order(
session, order.id, order.user_id, order.session_id
)
await emit_event(session, "order.paid", "order", order.id, {
"order_id": order.id,
"user_id": order.user_id,
})
elif sumup_status == "FAILED":
order.status = "failed"
else:
order.status = sumup_status.lower() or order.status
await session.flush()