Phase S4 – Abos über Stripe (E2E komplett im Testmodus): - Abo-/Recovery-Checkout: customer_creation=always + setup_future_usage=off_session - StripePaymentService::chargeAbo (off-session PaymentIntent, Idempotency-Key), StripeGateway, Provider-Dispatch im Abbuchungs-Cron (PAYONE-Pfad unverändert) - Webhook: Zahlungsmittel-Capture vor Paid-Pfad, 503 payment_not_yet_visible bei Cron-Transaktions-Race; Command stripe:process-pending-events (Cron-Ende + 10-min Scheduler) verarbeitet liegengebliebene Events nach - createNewAbo/advanceAboAfterRecoveryPayment Stripe-aware inkl. Race-Absicherung; Recovery-Orders nutzen advanceAboAfterRecoveryPayment (latenter PAYONE-Duplikat-Bug) - Migrationen: Stripe-Abo-Spalten auf shopping_payments; clearingtype varchar(3)→(20) inkl. Reparatur der zu 'str' gekürzten Live-Zeilen Phase S5 – Zahlungsart ändern (Scope: jede Zahlart, nicht nur Kreditkarte): - Stripe Checkout mode=setup ohne Abbuchung; PAYONE-Abos ziehen beim Wechsel auf Stripe um (Auslaufmodell §7.2) - AboPaymentMethodService: beginStripeChange/finalize/applyStripePaymentMethod (idempotent, detacht alte PM, card_changes-Log); Webhook setup_intent.succeeded als Sicherheitsnetz; Einstiege Portal/CRM/Berater-Kunden-Link flow-abhängig - Views/Mails flow-abhängig („Zahlungsweise" statt „Kreditkarte") Phase S7.6 – Zahlarten-Kommunikation: - Einheitliche Zahlarten-Logos (SVG) + wiederverwendbares Partial payment_logos; Checkout/Footer zeigen Kern-Zahlarten + „···"-Icon, /zahlungsarten komplett neu mit allen aktiven Stripe-Zahlarten (gegen Account-Konfiguration verifiziert) und Vorkasse (PAYONE); Sofort/SEPA entfernt Tests: StripeAboTest (15), StripePaymentMethodChangeTest (10), PaymentMethodsCommunicationTest (28), PaymentProviderManagerTest angepasst. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
158 lines
7.6 KiB
PHP
158 lines
7.6 KiB
PHP
@extends($user_shop ?'web.user.layouts.layout' : 'web.layouts.layout')
|
|
|
|
@section('content')
|
|
<section>
|
|
<div class="container">
|
|
|
|
<div class="white-box">
|
|
<h3 class="box-title m-b-0">{{ __('weborder.payment_methods') }} </h3>
|
|
<hr>
|
|
|
|
<p>{{ __('weborder.payment_methods_intro') }}</p>
|
|
|
|
<div class="mb-3">
|
|
@include('web.layouts.includes.payment_logos', ['logoHeight' => 32, 'showAll' => true])
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/visa.svg" alt="Visa" title="Visa" style="height: 32px; width: auto; margin: 2px 3px 2px 0;">
|
|
<img src="/images/payments-assets/mastercard.svg" alt="Mastercard" title="Mastercard" style="height: 32px; width: auto; margin: 2px 3px 2px 0;">
|
|
<img src="/images/payments-assets/amex.svg" alt="American Express" title="American Express" style="height: 32px; width: auto; margin: 2px 3px 2px 0;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_creditcard') }} </h4>
|
|
<p>{{ __('weborder.payment_method_creditcard_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/paypal.svg" alt="PayPal" title="PayPal" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_paypal') }} </h4>
|
|
<p>{{ __('weborder.payment_method_paypal_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/applepay.svg" alt="Apple Pay" title="Apple Pay" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_applepay') }} </h4>
|
|
<p>{{ __('weborder.payment_method_applepay_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/googlepay.svg" alt="Google Pay" title="Google Pay" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_googlepay') }} </h4>
|
|
<p>{{ __('weborder.payment_method_googlepay_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/klarna.svg" alt="Klarna" title="Klarna" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_klarna') }} </h4>
|
|
<p>{{ __('weborder.payment_method_klarna_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/amazonpay.svg" alt="Amazon Pay" title="Amazon Pay" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_amazonpay') }} </h4>
|
|
<p>{{ __('weborder.payment_method_amazonpay_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/link.svg" alt="Link" title="Link" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_link') }} </h4>
|
|
<p>{{ __('weborder.payment_method_link_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/eps.svg" alt="EPS" title="EPS" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_eps') }} </h4>
|
|
<p>{{ __('weborder.payment_method_eps_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/bancontact.svg" alt="Bancontact" title="Bancontact" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_bancontact') }} </h4>
|
|
<p>{{ __('weborder.payment_method_bancontact_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
@foreach (['blik' => 'BLIK', 'mbway' => 'MB WAY', 'pix' => 'Pix', 'satispay' => 'Satispay', 'samsungpay' => 'Samsung Pay', 'kakaopay' => 'Kakao Pay', 'naverpay' => 'Naver Pay', 'payco' => 'PAYCO'] as $moreLogoFile => $moreLogoLabel)
|
|
<img src="/images/payments-assets/{{ $moreLogoFile }}.svg" alt="{{ $moreLogoLabel }}" title="{{ $moreLogoLabel }}" style="height: 24px; width: auto; margin: 2px 3px 2px 0;">
|
|
@endforeach
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_more') }} </h4>
|
|
<p>{{ __('weborder.payment_method_more_copy') }} </p>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-4 col-sm-3 col-md-2">
|
|
<img src="/images/payments-assets/vorkasse.svg" alt="{{ __('weborder.payment_method_prepayment') }}" title="{{ __('weborder.payment_method_prepayment') }}" style="height: 32px; width: auto;">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-9 col-md-10">
|
|
<h4 class="block bold size-18">{{ __('weborder.payment_method_prepayment') }} </h4>
|
|
<p>{{ __('weborder.payment_method_prepayment_copy') }}</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
@endsection
|