/* ===================================================================== POST /api/paypal/create-order — legt eine echte PayPal-Bestellung server-seitig an. Wird vom Checkout aufgerufen, bevor der PayPal-Smart-Button überhaupt anzeigt, was zu bezahlen ist (`createOrder`-Callback des PayPal-JS-SDK). Der Betrag kommt bewusst von UNS (aus dem im Checkout berechneten Gesamtbetrag, den der Browser hier mitschickt) und wird 1:1 an PayPal weitergereicht — die eigentliche Sicherheit entsteht erst beim Erfassen der Zahlung (siehe capture-order.js), wo der TATSÄCHLICH bei PayPal eingezogene Betrag serverseitig geprüft wird. ===================================================================== */ import { json } from "../../_shared/http.js"; import { paypalKonfiguriert, erstellePaypalBestellung } from "../../_shared/paypal.js"; export async function onRequestPost(context) { const { request, env } = context; if (!paypalKonfiguriert(env)) { return json(503, { ok: false, error: "PayPal ist auf dieser Seite noch nicht eingerichtet (fehlende Zugangsdaten). Bitte eine andere Zahlungsart wählen.", }); } let body; try { body = await request.json(); } catch { return json(400, { ok: false, error: "Ungültige Anfrage." }); } const summe = Number(body.summe); if (!Number.isFinite(summe) || summe <= 0) { return json(400, { ok: false, error: "Ungültiger Betrag." }); } try { const paypalOrderId = await erstellePaypalBestellung(env, summe); return json(200, { ok: true, id: paypalOrderId }); } catch (err) { return json(502, { ok: false, error: err instanceof Error ? err.message : "PayPal-Bestellung fehlgeschlagen." }); } }