CORRECTION_ABONNEMENT
Correction du problème d'abonnement
Problème identifié
L'abonnement sub_1SlCTxIc1BVXq0Hli8lkyAp7 a été créé avec :
- ❌
type: NULLau lieu du type attendu (entreprise_site_web_Xouentreprise_multi_personnes_X) - ❌ Pas d'entrée dans la table
entreprise_subscriptions - ❌ Redirection vers
/abonnementau lieu de la route d'entreprise
Cause
Les métadonnées n'ont pas été correctement passées lors de la création du checkout, ou l'utilisateur a utilisé le mauvais contrôleur (SubscriptionController au lieu de EntrepriseSubscriptionController).
Corrections apportées
1. ✅ Ajout du nom d'abonnement dans les métadonnées
Dans EntrepriseSubscriptionController::checkout(), on ajoute maintenant 'name' => $subscriptionName dans les métadonnées pour que Cashier puisse l'utiliser.
2. ✅ Webhook handler amélioré
Le webhook handleCustomerSubscriptionCreated crée maintenant automatiquement l'entrée dans entreprise_subscriptions si les métadonnées contiennent entreprise_id et type.
Pour corriger l'abonnement existant
Si vous avez un abonnement existant avec le mauvais type, vous pouvez :
-
Option 1 : Le corriger manuellement (si vous connaissez l'entreprise et le type) :
// Dans tinker $sub = \Laravel\Cashier\Subscription::where('stripe_id', 'sub_1SlCTxIc1BVXq0Hli8lkyAp7')->first(); $entreprise = \App\Models\Entreprise::find(X); // Remplacer X par l'ID de l'entreprise $type = 'site_web'; // ou 'multi_personnes' $subscriptionName = 'entreprise_' . $type . '_' . $entreprise->id; $sub->type = $subscriptionName; $sub->save(); \App\Models\EntrepriseSubscription::updateOrCreate( ['entreprise_id' => $entreprise->id, 'type' => $type], [ 'name' => $subscriptionName, 'stripe_id' => $sub->stripe_id, 'stripe_status' => $sub->stripe_status, 'stripe_price' => $sub->stripe_price, 'est_manuel' => false, 'trial_ends_at' => $sub->trial_ends_at, 'ends_at' => $sub->ends_at, ] ); -
Option 2 : Annuler et recréer l'abonnement via l'interface d'entreprise (recommandé)
Test
Pour tester que tout fonctionne maintenant :
- Allez sur le dashboard d'une entreprise
- Cliquez sur l'onglet "Abonnements"
- Souscrivez à un nouvel abonnement
- Vérifiez que :
- ✅ Vous êtes redirigé vers le dashboard de l'entreprise (pas
/abonnement) - ✅ L'abonnement apparaît dans la liste des abonnements de l'entreprise
- ✅ L'abonnement est actif
- ✅ Vous êtes redirigé vers le dashboard de l'entreprise (pas
Vérification
Pour vérifier qu'un abonnement est correctement configuré :
// Dans tinker
$sub = \Laravel\Cashier\Subscription::where('stripe_id', 'sub_XXXXX')->first();
echo "Type: " . ($sub->type ?? 'NULL') . "\n";
echo "Status: " . $sub->stripe_status . "\n";
// Vérifier dans entreprise_subscriptions
$entSub = \App\Models\EntrepriseSubscription::where('stripe_id', 'sub_XXXXX')->first();
if ($entSub) {
echo "✅ Trouvé dans entreprise_subscriptions\n";
echo " Entreprise: " . $entSub->entreprise->nom . "\n";
echo " Type: " . $entSub->type . "\n";
} else {
echo "❌ NON trouvé dans entreprise_subscriptions\n";
}