away()` auf Stripes eigene Bezahlseite; im Browser läuft kein * Stripe.js, das ihn bräuchte. Er steht hier, weil ein Betreiber beim * Einrichten drei Werte vor sich hat und nicht raten soll, welcher wohin * gehört — und weil der Tag, an dem eine eingebettete Bezahlmaske dazukommt, * ihn ohnehin verlangt. Das ist auf der Karte auch so gesagt, statt es zu * verschweigen und wie eine wirksame Einstellung aussehen zu lassen. */ final class StripePublishableKey { private static function settingKey(?OperatingMode $mode = null): string { return 'stripe.publishable_key.'.($mode ?? OperatingMode::current())->value; } /** Der gespeicherte Wert, sonst der aus der Serverdatei — je Modus die eigene Zeile. */ public static function current(?OperatingMode $mode = null): string { $mode ??= OperatingMode::current(); $stored = Settings::get(self::settingKey($mode)); if (filled($stored)) { return (string) $stored; } return (string) config($mode->isTest() ? 'services.stripe.key_test' : 'services.stripe.key'); } public static function set(string $key, ?OperatingMode $mode = null): void { Settings::set(self::settingKey($mode), trim($key)); } }