All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 41s
- 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>
29 lines
1.1 KiB
Python
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()
|