@extends("client.layouts.app") @section("title", __("client.payment_methods.add_card_title")) @section("content") {{-- The card never touches this server. The gateway's own script holds the number, the browser sends it straight to them, and what comes back here is an id. The key printed into the page below is the publishable one, which is what it is for; the secret key is read only by the module, server side. --}}

{{ __('client.payment_methods.add_card_title') }}

{{ __('client.payment_methods.add_card_subtitle') }}

{{ __('client.actions.back') }}
{{-- Stripe is the only gateway this page knows how to draw, and it is the only one that implements the vaulting capability. A second one would add its own block here the way the invoice page does, rather than being handed a card field wired to nothing. --}} @if($publishableKey && $clientSecret && $gateway === 'stripe')
{{ __('client.payment_methods.card_details') }}
{{-- The terms the card is being stored under, on the screen where it is stored. Stripe's rule for charging a card with the customer away is that the agreement names what will be charged, when, and how to stop it; all three are here rather than in a policy page nobody opens. --}}

{{ __('client.payment_methods.consent_terms') }}

{{-- A real form, posted by the script once the gateway has finished. It carries the session id and the answer to the consent box, and it carries the CSRF token as a field rather than a header so that it does not depend on anything else being on the page. --}}
@else
{{ __('client.payment_methods.card_unavailable') }}
@endif @endsection @section("scripts") @if($publishableKey && $clientSecret && $gateway === 'stripe') @endif @endsection