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>
125 lines
4.3 KiB
PHP
125 lines
4.3 KiB
PHP
|
|
<div class="alert alert-success bordered-bottom nomargin">
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-9 col-sm-12"><!-- left text -->
|
|
<p class="font-lato weight-300 size-20 nomargin-bottom">
|
|
{{ __('website.sales_partner_or_questions') }}
|
|
</p>
|
|
<h3>{{ __('website.contact_now') }}: <span><strong style="color:#566d56">{{ __('website.contact_number') }} </strong></span></h3>
|
|
</div><!-- /left text -->
|
|
|
|
|
|
<div class="col-md-3 col-sm-12 text-right"><!-- right btn -->
|
|
<a href="{{url('/kontakt')}}" rel="nofollow" target="_blank" class="btn btn-primary btn-lg btn-text-500">{{ __('website.to_contact') }}</a>
|
|
</div><!-- /right btn -->
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- FOOTER -->
|
|
<footer id="footer">
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-4">
|
|
<!-- Footer Logo -->
|
|
<img class="footer-logo" src="{{asset('/assets/images/logo_dark.png')}}" alt=""/>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="col-md-4">
|
|
<!-- Contact Address -->
|
|
<address>
|
|
<ul class="list-unstyled">
|
|
<li class="footer-sprite address">
|
|
{{ __('website.contact_address') }}
|
|
</li>
|
|
<li class="footer-sprite phone">
|
|
{{ __('website.phone_number') }}
|
|
</li>
|
|
<li class="footer-sprite email">
|
|
<a href="mailto:{{ __('website.email_address') }} ">{{ __('website.email_address') }} </a>
|
|
</li>
|
|
</ul>
|
|
</address>
|
|
<!-- /Contact Address -->
|
|
</div>
|
|
|
|
|
|
<div class="col-md-4">
|
|
<!-- Links -->
|
|
<h4 class="letter-spacing-1">{{ __('website.contents') }}</h4>
|
|
<ul class="footer-links list-unstyled">
|
|
<li class="{{ Request::is('/') ? ' active' : '' }}"><a
|
|
href="{{ url('/') }}">{{ __('website.start') }} </a></li>
|
|
<li class="{{ Request::is('aloevera') ? ' active' : '' }}"><a
|
|
href="{{url('/aloevera')}}">{{ __('website.aloe_vera') }} </a></li>
|
|
<li class="{{ Request::is('produkte/*') ? ' active' : '' }}"><a
|
|
href="{{url('/produkte/alle-produkte')}}">{{ __('website.productworld') }} </a></li>
|
|
<li class="{{ Request::is('geschaeftsmodell/*') ? ' active' : '' }}"><a
|
|
href="{{url('/geschaeftsmodell/karrierechancen')}}">{{ __('website.career_opportunities') }} </a></li>
|
|
<li class="{{ Request::is('kontakt') ? ' active' : '' }}"><a
|
|
href="{{url('/kontakt')}}">{{ __('website.contact') }} </a></li>
|
|
<li class="{{ Request::is('partner') ? ' active' : '' }}"><a
|
|
href="{{url('/partner')}}">{{ __('website.partner') }}</a></li>
|
|
<li class="{{ Request::is('registrierung') ? ' active' : '' }}"><a
|
|
href="{{url('/registrierung')}}">{{ __('website.register') }}</a></li>
|
|
</ul>
|
|
<!-- /Links -->
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="copyright">
|
|
<div class="container">
|
|
<ul class="pull-right nomargin list-inline mobile-block">
|
|
<li>© {{ __('website.all_rights_reserved') }} </li>
|
|
<li>•</li>
|
|
<li class="{{ Request::is('agb') ? ' active' : '' }}"><a
|
|
href="{{ url('/zahlungsarten') }}">{{ __('website.payment_methods') }} </a></li>
|
|
<li>•</li>
|
|
<li class="{{ Request::is('agb') ? ' active' : '' }}"><a
|
|
href="{{ url('/versandkosten') }}">{{ __('website.shipping_costs') }} </a></li>
|
|
<li>•</li>
|
|
<li class="{{ Request::is('agb') ? ' active' : '' }}"><a
|
|
href="{{ url('/agb') }}">{{ __('website.gtc') }} </a></li>
|
|
<li>•</li>
|
|
<li class=""><a target="_blank"
|
|
href="{{ asset('download/mivita_widerruf_formular.pdf') }}">{{ __('website.cancellation_policy') }} </a></li>
|
|
<li>•</li>
|
|
<li class="{{ Request::is('widerruf') ? ' active' : '' }}"><a
|
|
href="{{ route('withdrawal.create') }}">{{ __('withdrawal.button_label') }} </a></li>
|
|
<li>•</li>
|
|
<li class="{{ Request::is('datenschutz') ? ' active' : '' }}"><a
|
|
href="{{ url('/datenschutz') }}">{{ __('website.privacy_policy') }} </a></li>
|
|
<li>•</li>
|
|
<li class="{{ Request::is('impressum') ? ' active' : '' }} "><a
|
|
href="{{ url('/impressum') }}">{{ __('website.impress') }} </a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<div class="bordered-bottom nomargin mt-4 mb-2">
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
<div class="col-sm-1 col-md-2">
|
|
</div>
|
|
<div class="col-xs-12 col-sm-10 col-md-8 text-center">
|
|
@include('web.layouts.includes.payment_logos', ['logoHeight' => 28, 'wrapperClass' => 'text-center'])
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|