Мы используем Laravel Cashier (Braintree) с версией Laravel 5.8. У нас есть случай, когда пользователь подписывается на один и тот же тарифный план несколько раз для разных заказов. Мы хотим дать возможность пользователю отменить свою подписку. ниже мы попытались отменить подписку с именем подписки, как указано в руководстве, здесь https://laravel.com/docs/5.8/braintree#cancelling-subscriptions.
$user->subscription('main')->cancel();
$user->subscription('main')->cancelNow();
Мы передаем имя подписки. Он работает нормально, как и ожидалось, а также обновляет дату в столбце "sets_at" таблицы подписок.
Проблема здесь в том, что у нас одинаковое имя для подписок, на которые подписан пользователь. Так что в нашем случае он возвращает последний подписанный заказ здесь и отменяет это. Это нормально, как то, что предполагается сделать.
Но мы хотим отменить подписку на основе braintree_id, хранящегося в таблице подписок. Можем ли мы сделать это? На данный момент мы пробовали это, как показано ниже: -
use Braintree\Subscription;
$subcriptionObj = Subscription::find($subscription); //where $subscription is braintree_id from subscriptions table.
if ($subcriptionObj->status == 'Canceled')
abort(400, 'Subscription Not Active');
Subscription::cancel($subscription);
Это, однако, отменяет подписку на Braintree, но не обновляет столбец "end_at" в таблице подписок.
Может кто-нибудь предложить обходной путь дляэто ? Любая помощь будет оценена.