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
| Channel | Description |
|---|---|
private-user.{id} | Notifications et messages privés |
Presence Channels
| Channel | Description |
|---|---|
presence-chat | Statut 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énement | Description |
|---|---|
checkout.session.completed | Paiement réussi |
payment_intent.succeeded | Intent de paiement réussi |
payment_intent.payment_failed | Paiement échoué |
charge.refunded | Remboursement effectué |
customer.subscription.created | Abonnement créé |
customer.subscription.deleted | Abonnement 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énement | Description |
|---|---|
booking | Nouvelle réservation OTA |
booking_modification | Modification de réservation |
booking_cancellation | Annulation de réservation |
availability_update | Mise à 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);
});