{{-- 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)
{{ $paymentLabels[$paymentRequirement] ?? 'Mode de paiement' }}
{{ $paymentDescription }}
@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
| 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 |
| 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é |
| 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.
Conseil : gardez toujours des preuves (photos avant/après, échanges, etc.) pour vous protéger.
{{ $message }}
@enderror