/* ===================================================================== POST /api/orders — legt eine Überweisungs-Bestellung (Vorkasse) in D1 an. Wird vom Checkout aufgerufen (siehe src/pages/checkout/index.astro), sobald jemand mit "Banküberweisung" bestellt. BEWUSST nicht dauerhaft hinter dem Zugangscode-Gate (siehe functions/_middleware.js) — sobald der Shop öffentlich ist (SITE_PUBLIC=true), müssen auch echte Kund:innen hier bestellen können. WICHTIG (seit der echten PayPal-Anbindung): Diese Route legt Bestellungen NUR noch mit dem Status "zahlungOffen" an (Geld ist noch nicht da) und lehnt zahlungsart:"paypal" AUSDRÜCKLICH ab. Grund: PayPal-Bestellungen dürfen NUR über functions/api/paypal/capture-order.js entstehen, nachdem die Zahlung dort server-seitig bei PayPal selbst bestätigt wurde — sonst könnte jemand diese Route einfach direkt mit zahlungsart:"paypal" aufrufen und eine "bezahlte" Bestellung vortäuschen, ohne je wirklich zu bezahlen (echtes Betrugs-/Verlustrisiko für VanVan). ===================================================================== */ import { json } from "../_shared/http.js"; import { erstelleBestellung } from "../_shared/bestellung-erstellen.js"; export async function onRequestPost(context) { const { request, env } = context; let body; try { body = await request.json(); } catch { return json(400, { ok: false, error: "Ungültige Anfrage." }); } const zahlungsart = String(body.zahlungsart || ""); if (zahlungsart === "paypal") { return json(400, { ok: false, error: "PayPal-Bestellungen laufen über den PayPal-Button im Checkout, nicht über diese Route.", }); } if (zahlungsart !== "ueberweisung") { return json(400, { ok: false, error: "Ungültige oder nicht unterstützte Zahlungsart." }); } const ergebnis = await erstelleBestellung(env, body, { status: "zahlungOffen" }); if (!ergebnis.ok) { return json(ergebnis.httpStatus || 500, { ok: false, error: ergebnis.error }); } return json(201, { ok: true, id: ergebnis.id, bestellnummer: ergebnis.bestellnummer }); }