mivita/resources/views/web/layouts/includes/payment_logos.blade.php
Kevin ce4750fd1a Stripe-Integration (S4, S5, S7.6): Abos, Zahlungsart ändern, Zahlarten-Kommunikation
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>
2026-07-09 14:45:17 +00:00

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>