Aller au contenu principal

Webhooks

WebSocket (Laravel Reverb)

ImobizNets utilise Laravel Reverb pour les communications temps réel.

Configuration

Host: imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me
Port: 443
Scheme: wss (WebSocket Secure)

Authentification des channels

POST /broadcasting/auth
Authorization: Bearer <token>
Content-Type: application/json
{
"socket_id": "123.456789",
"channel_name": "private-user.30"
}

Channels disponibles

Private Channels

ChannelDescription
private-user.{id}Notifications et messages privés

Presence Channels

ChannelDescription
presence-chatStatut en ligne des utilisateurs

Événements

Messages

// Écouter les nouveaux messages
channel.listen('.message', (data) => {
// data: { id, sender_id, receiver_id, content, attachment, created_at }
});

Notifications

// Écouter les notifications
channel.listen('.notification', (data) => {
// data: { type, title, message, data, timestamp }
});

Présence

// Rejoindre le channel de présence
echo.join('presence-chat')
.here((users) => {
// Liste des utilisateurs en ligne
})
.joining((user) => {
// Un utilisateur se connecte
})
.leaving((user) => {
// Un utilisateur se déconnecte
});

Webhook Stripe

URL

POST http://imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me/api/v1/stripe/webhook

Événements gérés

ÉvénementDescription
checkout.session.completedPaiement réussi
payment_intent.succeededIntent de paiement réussi
payment_intent.payment_failedPaiement échoué
charge.refundedRemboursement effectué
customer.subscription.createdAbonnement créé
customer.subscription.deletedAbonnement annulé

Signature

Stripe signe tous les webhooks. La signature est vérifiée côté serveur avec le secret webhook.

Webhook Channex (Channel Manager)

URL

POST http://imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me/api/v1/webhook/notifications

Événements

ÉvénementDescription
bookingNouvelle réservation OTA
booking_modificationModification de réservation
booking_cancellationAnnulation de réservation
availability_updateMise à jour disponibilités

Exemple d'intégration complète

import Echo from 'laravel-echo';
import Pusher from 'pusher-js';

// Configuration
window.Pusher = Pusher;

const echo = new Echo({
broadcaster: 'reverb',
key: process.env.REVERB_APP_KEY,
wsHost: 'imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me',
wsPort: 443,
wssPort: 443,
forceTLS: true,
enabledTransports: ['ws', 'wss'],
authEndpoint: 'http://imobiznets-backend-test-yxxo2i-fecde5-136-112-175-192.traefik.me/api/v1/broadcasting/auth',
auth: {
headers: {
Authorization: `Bearer ${token}`,
Accept: 'application/json'
}
}
});

// Connexion au channel privé
const userChannel = echo.private(`user.${userId}`);

// Écouter les messages
userChannel.listen('.message', (message) => {
console.log('Nouveau message:', message);
// Mettre à jour l'UI
});

// Écouter les notifications
userChannel.listen('.notification', (notification) => {
console.log('Notification:', notification);
// Afficher une notification
});

// Gérer les erreurs
userChannel.error((error) => {
console.error('Erreur WebSocket:', error);
});

// Présence en ligne
const presenceChannel = echo.join('presence-chat');

presenceChannel
.here((users) => {
console.log('Utilisateurs en ligne:', users);
})
.joining((user) => {
console.log('Connecté:', user);
})
.leaving((user) => {
console.log('Déconnecté:', user);
});