Bonjour !

Pour un petit site que je fais, j'ai mis en place un système d'abonnements via Laravel Cashier en utilisant Braintree. Tout fonctionne nickel seulement maintenant, je fais l'espace d'administration et j'aimerais bien pouvoir offrir un abonnement à un membre et c'est là que je bloque totalement. J'ai été un peu regarder sur internet et j'ai vu qu'il n'était pas possible de changer le nextBillingDate().

Le truc, c'est que si un membre ne possède pas d'abonnement, j'ai juste à le mettre en version d'essai (à moins qu'il y ai une solution plus adaptée ?) donc à priori, c'est assez simple. Mais si un membre possède déjà un abonnement, je n'en ai aucune idée. J'avais pensé à récupérer la prochaine date de paiement puis re-créer un abonnement avec une promo à 100% en ajoutant à la date de prochain paiement le nombre de mois que je souhaite offrir mais le souci, c'est que si j'offre 3 mois au membre, je veux qu'au delà des 3 mois, il se remette à payer son abonnement s'il le choisit.

Je ne suis pas encore très à l'aise avec Cashier ni avec les systèmes d'abonnement récurrents (bien que j'ai déjà regardé les vidéos de Grafikart mais étant donné que je ne pratique pas beaucoup cette partie-là...) donc ça peut sembler facile pour vous, et je l'espère au final comme ça vous pourrez m'aider :)

En écrivant ce message, je viens de me poser la question de savoir si je pouvais, pour un abonnement en cours, lui définir une date d'essai de 3 mois par exemple et qu'automatiquement, ça mettrait l'abonnement en pause et passerait sur la version d'essai pour ensuite reprendre l'abonnement là où il s'était arrêté ?

En espérant que vous pourrez m'aider, je continue néanmoins mes recherches de mon côté :)

Boris

3 réponses


rueduphp
Réponse acceptée

Bonjour,

j'ai eu à me confronter à ce problème dans un précédent projet. J'avais créé autant de plans free que nécessaires (exemple plan_free_1_mois, plan_free_2_mois...). J'avais créé une table qui me permettait de savoir quel était le plan initial du membre qui profitait d'un plan free. A la fin du plan free, je remettais le membre sur le plan initial. Pas forcément très propre mais ça faisait le taf. Ne pas oublier de rajouter la durée du plan free à la fin du plan initial. Exemple pour trois mois :

$previousEnd = $user->subscription('plan')->ends_at;
$user->subscription('plan')->ends_at = $previousEnd->modify('+3 month');
$user->subscription('plan')->save();

Merci beaucoup pour ta réponse ! Désolé, j'ai eu un ou deux mois d'inactivité mais je reprends !

C'est un peu brouillon mais effectivement, ça fonctionne !

Encore merci ! :)

Génial si ça a pu t'aider :) à bientôt !!