Stripeのクラスから操作します。
例
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxv6KeEdZMj9xCPqxxxxxxxxxx");
$subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a');
$subscription->cancel();
LaravelCashierには
・契約中の期間が終了するとともにキャンセルする cancel()
・今すぐキャンセルする cancelNow()
2つのメソッドが用意されています。
例
$user->subscription('main')->cancel();
$user->subscription('main')->cancelNow();
これはなぜ起こるかと言うとLaravel Cashier は subscriptions テーブルの サブスクリプション終了日 ( ends_at ) の値を見ているからです。 ( Stripe 管理画面でキャンセルされるとローカルのDBの ends_at に値が入らない。) そこで、Stripe の キャンセルをチェックして、 Stripe管理画面でキャンセルされた場合にsubscriptions の ends_at に値を入れてあげます。
モデル app/Subscription.php