0

Я только что обновил пакет кассовых услуг Laravel с 5 до последней версии 6. Он поддерживает несколько подписчиков, и это действительно здорово. Но у меня есть одна проблема с обновлением подписки после отмены подписки.

Я снимаю подписку вручную с панели приборов и customer.subscription.deleted Событие стреляет.Laravel cashier 6 возобновить подписку после отмены

метод Кассир догоняет это событие: \Laravel\Cashier\Http\Controllers\[email protected]

$subscription->markAsCancelled(); И стреляет.

С этого момента подписка не может быть возобновлена. Я пытался использовать функцию resume(), но подписку можно возобновить только (!) в льготный период.

В предыдущей версии кассира я использовал метод swap() для возобновления подписки. Теперь он возвращается:

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_****'

Создание нового клиента и подписка не очень эффективный способ. Что вы думаете об этой проблеме?

ответ

1

Мое решение на данный момент:

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([]); 
     } 
    } 
} 
Смежные вопросы