1

我刚刚将 Laravel 收银员包从 5 版本更新到最新的 6 版本。它支持多个订阅,真的很酷。但是我在取消订阅后更新订阅有一个问题。

我正在从条带仪表板中手动删除订阅,并且customer.subscription.deleted事件正在触发。

收银员方法正在捕获此事件: \Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook

并且$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_****'

创建新客户和订阅不是很有效的方法。你对这个问题有什么看法?

4

1 回答 1

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([]);
        }
    }
}
于 2016-05-19T15:47:53.823 回答