{{-- The order, before it is placed. Two columns, and which is which matters: the LEFT one is what you are buying and what will happen, the RIGHT one is what it costs and the button that spends the money. The summary sticks, so on a long left column the total and the button stay in view — the shape every enterprise checkout has, for the reason that the figure you are agreeing to should never be scrolled away from the agreement. The terms acceptance sits at the BOTTOM of the right column, immediately above that button. It used to be at the top of the package list, as a condition of looking at prices; it is a condition of buying, and this is the moment of buying. --}} @php use Illuminate\Support\Number; $eur = fn (int $cents) => Number::currency($cents / 100, in: $lines['currency'] ?? 'EUR', locale: app()->getLocale()); @endphp

{{ __('checkout.eyebrow') }}

{{ __('checkout.title') }}

{{ __('checkout.back_to_plans') }}
@if ($contract) {{ __('order.already_customer') }} {{ __('order.to_billing') }} @elseif ($package === null) {{-- A package key nobody knows. Reached from a retyped address or from a package taken off sale between the two pages. --}} {{ __('checkout.unknown_plan') }} {{ __('checkout.back_to_plans') }} @else @error('plan'){{ $message }}@enderror @error('term'){{ $message }}@enderror @error('terms_accepted'){{ $message }}@enderror @error('checkout'){{ $message }}@enderror
{{-- ── What you are buying ──────────────────────────────────────── --}}

{{ $package['name'] }}

{{ __('order.term_'.$term) }} @if ($package['audience'] ?? '') {{ $package['audience'] }} @endif
@foreach ([ __('order.storage') => $package['quota_gb'] >= 1000 ? ($package['quota_gb'] / 1000).' TB' : $package['quota_gb'].' GB', __('order.traffic') => $package['traffic_gb'] >= 1000 ? ($package['traffic_gb'] / 1000).' TB' : $package['traffic_gb'].' GB', __('order.seats') => __('order.up_to', ['count' => $package['seats']]), __('checkout.performance') => __('billing.perf.'.($package['performance'] ?? 'standard')), ] as $label => $value)
{{ $label }}
{{ $value }}
@endforeach
{{-- What happens after the button. Three steps, because "you are redirected to a payment provider" is the point at which a first-time buyer wants to know what they are getting into. --}}

{{ __('checkout.next_title') }}

    @foreach (['pay', 'build', 'credentials'] as $i => $step)
  1. {{ $i + 1 }} {{ __('checkout.step_'.$step.'_title') }} {{ __('checkout.step_'.$step.'_body') }}
  2. @endforeach
{{-- The three standing facts about the sale. Same band as the order page, so the two pages read as one flow. --}}
@foreach ([ ['icon' => 'refresh', 'title' => __('order.note_cancel_title'), 'body' => __('order.note_cancel_body')], ['icon' => 'lock', 'title' => __('order.note_payment_title'), 'body' => __('order.note_payment_body')], ['icon' => 'shield', 'title' => __('checkout.note_withdrawal_title'), 'body' => __('checkout.note_withdrawal_body')], ] as $note)

{{ $note['title'] }}

{{ $note['body'] }}

@endforeach
{{-- ── What it costs, and the button ────────────────────────────── --}}
@csrf

{{ __('checkout.summary_title') }}

{{ $package['name'] }} · {{ $lines['yearly'] ? __('order.per_year_label') : __('order.per_month_label') }}
{{ $eur($lines['recurring_net']) }}
@if ($lines['yearly'] && $lines['free_months'] > 0)
{{ trans_choice('order.free_months_hint', $lines['free_months'], ['count' => $lines['free_months']]) }}
− {{ $eur($lines['twelve_months_gross'] - $lines['recurring_gross']) }}
@endif @if ($lines['setup_net'] > 0)
{{ __('checkout.setup_line') }}
{{ $eur($lines['setup_net']) }}
@endif
{{ __('checkout.tax_line', ['rate' => $vat]) }}
{{ $eur($lines['today_tax']) }}
{{-- The one figure that will actually be charged, and it is the largest thing in the panel. --}}
{{ __('checkout.total_today') }}
{{ $eur($lines['today_gross']) }}
{{-- And what comes after it, because the total above includes a one-off and the next charge will not. --}}

{{ __($lines['yearly'] ? 'checkout.then_yearly' : 'checkout.then_monthly', [ 'amount' => $eur($lines['recurring_gross']), ]) }} @if ($lines['yearly']) · {{ __('order.per_month_equivalent', ['amount' => $eur($lines['per_month_gross'])]) }} @endif

{{-- ── The acceptance, directly above the button ───────────── Not at the top of the previous page as a condition of looking at prices: it is a condition of buying, and this is the button that buys. The server rule is the real gate (CheckoutController validates `accepted`), so with JavaScript off the field arrives empty and the checkout is refused with the sentence explaining why. --}}

{{ __('order.terms_why') }}

{{ __('order.terms_first') }}

{{ __('checkout.stripe_note') }}

@endif