{{-- Composant de consentement pour les conditions de paiement Usage: @include('components.payment-consent', [ 'type' => 'service|equipment|urgent_sale', 'color' => 'blue|green|red' ]) --}} @php $type = $type ?? 'service'; $color = $color ?? 'blue'; $showPaymentConsent = match ($type) { 'service' => function_exists('booking_online_payment_enabled') ? booking_online_payment_enabled() : !(function_exists('cash_only_mode') && cash_only_mode()), default => function_exists('payment_feature_enabled') ? payment_feature_enabled() : !(function_exists('cash_only_mode') && cash_only_mode()), }; // Récupérer la commission selon le type depuis les paramètres admin $commissionRate = match($type) { 'service' => (float) get_setting('commission_services', '10'), 'equipment', 'rental' => (float) get_setting('commission_rentals', '8'), 'urgent_sale', 'flash' => (float) get_setting('commission_urgent_sales', get_setting('commission_services', '10')), 'food' => (float) get_setting('commission_food', '15'), default => (float) get_setting('commission_services', '10'), }; $autoReleaseHours = (int) get_setting('escrow_auto_release_hours', 48); // Récupérer les infos de paiement depuis la session $sessionKey = match($type) { 'service' => 'service_creation.step2', 'equipment' => 'equipment_creation.step2', 'urgent_sale' => 'urgent_sale_creation.step1', default => 'service_creation.step2' }; $paymentRequirement = session("$sessionKey.payment_requirement", 'none'); $depositPercentage = session("$sessionKey.deposit_percentage", 0); $cashOnlyMode = function_exists('cash_only_mode') && cash_only_mode(); // Ventes urgentes : paiement intégral requis (règle produit) if ($type === 'urgent_sale') { $paymentRequirement = 'full'; $depositPercentage = 0; } if ($cashOnlyMode) { $paymentRequirement = 'none'; $depositPercentage = 0; } // Textes selon le mode de paiement choisi $paymentLabels = [ 'none' => $cashOnlyMode ? 'Paiement direct / en espèces' : 'Aucun paiement requis', 'deposit' => 'Acompte de ' . $depositPercentage . '% requis', 'full' => 'Paiement intégral requis' ]; $paymentDescription = match($paymentRequirement) { 'none' => $cashOnlyMode ? 'Le paiement en ligne est désactivé. Vos clients paieront directement avec vous, hors plateforme.' : 'Vos clients pourront réserver sans payer à l\'avance. Vous conviendrez du paiement directement avec eux.', 'deposit' => 'Vos clients devront verser un acompte de ' . $depositPercentage . '% pour valider leur réservation. Le solde sera à régler selon vos conditions.', 'full' => 'Vos clients devront payer l\'intégralité du montant pour valider leur réservation. L\'argent sera sécurisé jusqu\'à confirmation de la prestation.', default => '' }; // Couleurs selon le type $borderColor = match($color) { 'blue' => 'border-blue-200', 'green' => 'border-green-200', 'red' => 'border-red-200', default => 'border-blue-200' }; $bgColor = match($color) { 'blue' => 'bg-blue-50', 'green' => 'bg-green-50', 'red' => 'bg-red-50', default => 'bg-blue-50' }; $textColor = match($color) { 'blue' => 'text-blue-900', 'green' => 'text-green-900', 'red' => 'text-red-900', default => 'text-blue-900' }; $checkboxColor = match($color) { 'blue' => 'text-blue-600 focus:ring-blue-500', 'green' => 'text-green-600 focus:ring-green-500', 'red' => 'text-red-600 focus:ring-red-500', default => 'text-blue-600 focus:ring-blue-500' }; @endphp @if($showPaymentConsent)

Conditions de paiement et consentement

@if($paymentRequirement === 'none') @elseif($paymentRequirement === 'deposit') @else @endif

{{ $paymentLabels[$paymentRequirement] ?? 'Mode de paiement' }}

{{ $paymentDescription }}

@if($paymentRequirement === 'none')

Paiement non requis

@if($cashOnlyMode) Le paiement en ligne est actuellement désactivé. Le règlement se fera directement entre vous et le client, en espèces ou selon vos modalités. @else Aucun paiement n'est bloqué via Stripe pour cet élément. Le paiement se fait directement entre vous et le client. @endif

@else

Comment fonctionne la protection des paiements ?

@if($type === 'service')

Règles pour les services

Situation Résultat
Client paie Argent bloqué sur Stripe
Service rendu Client confirme OU {{ $autoReleaseHours }}h → Vous êtes payé
Qualité pas top MAIS service fait Pas de remboursement client
Annulation dans les délais Remboursement selon vos règles d'annulation
Annulation hors délai Pas de remboursement client
@elseif($type === 'equipment')

Règles pour la location de matériel

Situation Résultat
Client paie (location + caution) Tout est bloqué sur Stripe
Retour en bon état Location → Vous / Caution → Client
Dégât constaté Vous gardez tout/partie de la caution
Annulation dans les délais Remboursement total au client
Annulation hors délai Selon le % que vous avez configuré
@elseif($type === 'urgent_sale') @php $disputeDeadlineDays = (int) get_setting('escrow_dispute_deadline_days', 7); $autoSplitBuyer = (int) get_setting('escrow_auto_split_buyer_percent', 40); $autoSplitSeller = (int) get_setting('escrow_auto_split_seller_percent', 60); @endphp

Règles pour les ventes urgentes (système escrow)

Situation Résultat
Client paie Argent bloqué sur Stripe (escrow)
Produit livré, client confirme Vous êtes payé (- commission {{ $commissionRate }}%)
Produit livré, client ne fait rien Après {{ $autoReleaseHours }}h → Paiement automatique
Client signale un problème Litige ouvert ({{ $disputeDeadlineDays }} jours pour résoudre)
Client retourne le produit Remboursement total au client (0€ de commission)
Litige non résolu après {{ $disputeDeadlineDays }} jours Partage automatique : {{ $autoSplitBuyer }}% client / {{ $autoSplitSeller }}% vendeur

Système 100% automatique : aucun admin n'intervient. Les règles sont appliquées automatiquement par le système.

Notes mutuelles : après chaque transaction, le client vous note ET vous notez le client.

@endif

En cas de problème ?

Conseil : gardez toujours des preuves (photos avant/après, échanges, etc.) pour vous protéger.

@if($type === 'equipment') @php $securityDeposit = session("$sessionKey.security_deposit", 0); @endphp @if($securityDeposit > 0)

Caution de {{ number_format($securityDeposit, 2, ',', ' ') }} €

@endif @endif @endif
@error('payment_terms_consent')

{{ $message }}

@enderror
@endif