J'ai 2 routes, une pour la désinscription et une pour la restauration, les deux routes sont les mêmes sauf le nom/fonction/url sauf si quelque chose me manque. Lorsque j'annule l'abonnement de reprise, je clique sur l'url /resume, il exécute la fonction puis revient, tout est si rapide et ne semble jamais quitter la page, puis il fait clignoter le message de réussite.
Mon URL /cancel va simplement vers une page vierge (je suis presque sûr que c'est correct car si elle fonctionnait correctement, vous ne la verriez jamais) et elle exécute la fonction d'annulation mais ne revient jamais. Lorsque je reviens manuellement en utilisant le bouton de retour, un message de réussite clignote. Je ne comprends tout simplement pas pourquoi il ne revient pas tout seul comme prévu. En dehors de cela, si vous avez besoin d’autres informations, n’hésitez pas à me le faire savoir.
Travail :
Route::get('/resume', function (Request $request) { // $user = User::find(1); $user = Auth::user(); $response = $user->subscription()->resume(); toastr()->success('Your subscription has been successfully resumed.', 'Success' , ['closeButton' => 'true','positionClass' => 'toast-top-center']); return back(); });
Ne fonctionne pas :
Route::get('/cancel', function (Request $request) { // $user = User::find(1); $user = Auth::user(); $response = $user->subscription()->cancel(); toastr()->success('Your subscription has been successfully cancelled.', 'Success' , ['closeButton' => 'true','positionClass' => 'toast-top-center']); return back(); });
Je ne pense pas que cela soit nécessaire, mais au cas où, voici les 2 fonctions de mon contrôleur d'abonnement.
public function cancel(): self { $response = LemonSqueezy::api('DELETE', "subscriptions/{$this->lemon_squeezy_id}"); $this->sync($response['data']['attributes']); return $this; } /** * Resume the subscription. */ public function resume(): self { if ($this->expired()) { throw new LogicException('Cannot resume an expired subscription.'); } $response = LemonSqueezy::api('PATCH', "subscriptions/{$this->lemon_squeezy_id}", [ 'data' => [ 'type' => 'subscriptions', 'id' => $this->lemon_squeezy_id, 'attributes' => [ 'cancelled' => false, ], ], ]); $this->sync($response['data']['attributes']); return $this; }
Résolu en commentant ce fil https://laracasts.com/discuss/channels/laravel/redirect-with-not-working?page=1&replyId=337923
J'ai fait une redirection manuelle mais cela n'a pas fonctionné non plus, alors j'ai ajouté ->send(); à la fin comme le suggérait ce fil et cela a résolu le problème. Je n'ai pas testé cela avec return back(); mais cela pourrait aussi fonctionner.
Le code réussi est le suivant