0

Ich habe gerade Laravel Kassierer Paket von 5 Version auf die neuste 6 Version aktualisiert. Es unterstützt mehrere Abonnements und es ist wirklich cool. Aber ich habe ein Problem mit der Erneuerung des Abonnements nach Kündigung des Abonnements.

Ich entferne Abonnement manuell von Stripe Dashboard und customer.subscription.deleted Ereignis wird ausgelöst.Laravel Kassierer 6 Abonnement nach Kündigung erneuern

Kassierer Methode holt dieses Ereignis: \Laravel\Cashier\Http\Controllers\[email protected]

Und $subscription->markAsCancelled(); feuert.

Ab diesem Zeitpunkt kann das Abonnement nicht erneuert werden. Ich habe versucht, resume() Funktion zu verwenden, aber Abonnement kann nur (!) auf Gnadenfrist wieder aufgenommen werden.

In früheren Version von Kassierer habe ich swap() Methode verwendet, um das Abonnement fortzusetzen. Jetzt ist es zurück:

Stripe\Error\InvalidRequest: Customer cus_*** does not have a subscription with ID sub_***** in /**/vendor/stripe/stripe-php/lib/ApiRequestor.php:103 from API request 'req_****'

Erstellen von neuen Kunden und Abonnement ist nicht sehr effizient. Was denken Sie über dieses Thema?

Antwort

1

Meine Lösung in diesem Moment:

public function resume() 
{ 
    $user = Auth::user(); 
    $subscription = $user->subscription(ServicePackageRepository::SUBSCRIPTION_NAME); 

    if ($subscription->cancelled() && $subscription->onGracePeriod()) { 
     //if it was cancelled by user in grace period 
     $subscription->resume(); 

     return $this->respondWithSaved([]); 
    } else { //if cancelled by payment failure or smth else... 
     if($user->subscription(ServicePackageRepository::SUBSCRIPTION_NAME)) { 
      $user->newSubscription(ServicePackageRepository::SUBSCRIPTION_NAME, 
        $user->subscription(ServicePackageRepository::SUBSCRIPTION_NAME)->stripe_plan) 
       ->create(); 

      return $this->respondWithSaved([]); 
     } else { 
      return $this->respondWithError([]); 
     } 
    } 
}