Confirmation automatique de paiement

Mis à jour le 2026-04-26

Confirmation automatique de paiement

Dès qu'un client règle son acompte ou sa totalité via Stripe ou Bancontact, tout le flux se met en route automatiquement. Tout ce qui rentre est visible en temps réel sur la page Paiements.

Vue d'ensemble des paiements avec transactions ouvertes, payées et traitées

Que se passe-t-il à l'arrivée d'un paiement ?

  1. Un webhook (Stripe ou Bancontact) atteint /webhooks/stripe-payment ou /webhooks/bancontact
  2. BedFlow met à jour la facture :
    • financial.paid += montant
    • financial.balance = total - payé
    • financial_state devient 'partial' (acompte) ou 'paid' (complet)
    • Un payment record individuel est ajouté à payments[]
  3. La réservation passe de pending à confirmed + deposit_paid = true
  4. Un e-mail part vers le client — l'e-mail dépend du contexte :
    • Premier paiement (acompte ou paiement complet en une fois) → « Paiement reçu » (template booking-confirmed)
    • Solde après acompte préalable → « Intégralement payé » (template booking-fully-paid)
  5. Notification Telegram vers vous sur votre téléphone :
    • 💳 « Paiement reçu » (acompte) ou ✅ « Intégralement payé »
    • Avec le nom du client, le montant, le solde restant, la date d'arrivée, la référence
  6. WhatsApp vers le client (uniquement au premier paiement — pour le paiement final, l'e-mail suffit)
  7. L'URL du portail client est générée et enregistrée sur la réservation — le client peut ouvrir son portail depuis l'e-mail

Exemple de flux : Jean Dupont réserve 3 nuits

| Moment | Ce que Jean voit | Ce que vous voyez | |---|---|---| | Réserve via le widget | « Merci — consultez votre mail pour le lien de paiement » | Telegram 🎫 « Nouvelle réservation » | | Ouvre l'e-mail, clique Stripe | Checkout Stripe, paie €96 d'acompte | — | | Webhook Stripe | « Paiement reçu — solde €231 à l'arrivée » | Telegram 💳 « €96 reçus de Jean » | | 2 jours plus tard, paie le solde | « Intégralement payé ! À très vite. » | Telegram ✅ « Intégralement payé par Jean » |

Où est-ce implémenté ?

  • app/Http/Controllers/PaymentController.php::handleBookingPaymentConfirmed() est le cœur du système
  • app/Services/EmailAutomationService::processEvent() choisit le bon template
  • app/Services/TelegramNotificationService::info('payment_received', ...) envoie le push admin