validate([ 'amount' => ['required', 'numeric', 'min:5', 'max:5000'], 'return_url' => ['nullable', 'url', 'max:2048'], ]); $account = ladill_account(); if ($account === null) { return $request->expectsJson() ? response()->json(['error' => 'Unauthenticated.'], 401) : redirect()->route('sso.connect'); } $returnUrl = $validated['return_url'] ?? (string) (url()->previous() ?: route('transfer.transfers.create')); try { $checkoutUrl = $billing->topup((string) $account->public_id, (float) $validated['amount'], $returnUrl); } catch (\Throwable) { $checkoutUrl = ''; } if ($checkoutUrl === '') { return $request->expectsJson() ? response()->json(['error' => 'Unable to start payment. Please try again.'], 422) : back()->with('error', 'Unable to start payment. Please try again.'); } return $request->expectsJson() ? response()->json(['checkout_url' => $checkoutUrl]) : redirect()->away($checkoutUrl); } }