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>
51 lines
2.3 KiB
PHP
51 lines
2.3 KiB
PHP
{{--
|
|
Zahlarten-Logos (Plan S7.6): einheitliche Logo-Leiste für Footer, Checkout und /zahlungsarten.
|
|
Standard: Kern-Zahlarten + „···"-Icon (Weitere Zahlarten). $showAll = true zeigt zusätzlich
|
|
die regionalen Zahlarten (BLIK, MB WAY, Pix, …) statt des „···"-Icons.
|
|
Parameter: $logoHeight (px, Default 24), $showVorkasse (Default true), $showAll (Default false),
|
|
$wrapperClass (optional).
|
|
--}}
|
|
@php($logoHeight = $logoHeight ?? 24)
|
|
@php($showVorkasse = $showVorkasse ?? true)
|
|
@php($showAll = $showAll ?? false)
|
|
@php($paymentLogos = [
|
|
'visa' => 'Visa',
|
|
'mastercard' => 'Mastercard',
|
|
'amex' => 'American Express',
|
|
'paypal' => 'PayPal',
|
|
'applepay' => 'Apple Pay',
|
|
'googlepay' => 'Google Pay',
|
|
'klarna' => 'Klarna',
|
|
'amazonpay' => 'Amazon Pay',
|
|
'link' => 'Link',
|
|
'eps' => 'EPS',
|
|
'bancontact' => 'Bancontact',
|
|
])
|
|
@php($morePaymentLogos = [
|
|
'blik' => 'BLIK',
|
|
'mbway' => 'MB WAY',
|
|
'pix' => 'Pix',
|
|
'satispay' => 'Satispay',
|
|
'samsungpay' => 'Samsung Pay',
|
|
'kakaopay' => 'Kakao Pay',
|
|
'naverpay' => 'Naver Pay',
|
|
'payco' => 'PAYCO',
|
|
])
|
|
@php($visibleLogos = $showAll ? array_merge($paymentLogos, $morePaymentLogos) : $paymentLogos)
|
|
<div class="payment-logos {{ $wrapperClass ?? '' }}" style="line-height: 1;">
|
|
@foreach ($visibleLogos as $paymentLogoFile => $paymentLogoLabel)
|
|
<img src="{{ asset('images/payments-assets/'.$paymentLogoFile.'.svg') }}"
|
|
alt="{{ $paymentLogoLabel }}" title="{{ $paymentLogoLabel }}"
|
|
style="height: {{ $logoHeight }}px; width: auto; margin: 2px 3px 2px 0; vertical-align: middle;">
|
|
@endforeach
|
|
@if ($showVorkasse)
|
|
<img src="{{ asset('images/payments-assets/vorkasse.svg') }}"
|
|
alt="{{ __('payment.prepayment_payone') }}" title="{{ __('payment.prepayment_payone') }}"
|
|
style="height: {{ $logoHeight }}px; width: auto; margin: 2px 3px 2px 0; vertical-align: middle;">
|
|
@endif
|
|
@unless ($showAll)
|
|
<img src="{{ asset('images/payments-assets/more.svg') }}"
|
|
alt="{{ __('weborder.payment_method_more') }}" title="{{ __('weborder.payment_method_more') }}"
|
|
style="height: {{ $logoHeight }}px; width: auto; margin: 2px 3px 2px 0; vertical-align: middle;">
|
|
@endunless
|
|
</div>
|