#php #laravel #stripe-payments #laravel-cashier
Вопрос:
Я использую laravel cashier 13.4.4, и у меня проблема с подпиской на обновление.
В моей конфигурации моя Оплачиваемая модель настроена не для пользователя, а для модели компании. Все работает нормально, я имею в виду — создание/получение/обновление клиента, добавление/получение способов оплаты, получение и создание подписки… Но когда я пытаюсь использовать каким-либо образом asStripeSubscription
или updateStripeSubscription
или любую другую операцию, которая запускает этот метод позже (например updateQuantity
) Я получаю ошибку:
Error: Call to a member function stripe() on null in file /var/www/html/vendor/laravel/cashier/src/Subscription.php on line 1269
#0 /var/www/html/vendor/laravel/cashier/src/Subscription.php(495): LaravelCashierSubscription->updateStripeSubscription(Array)
Часть кода из /laravel/cashier/src/Subscription.php:
/**
* Update the underlying Stripe subscription information for the model.
*
* @param array $options
* @return StripeSubscription
*/
public function updateStripeSubscription(array $options = [])
{
return $this->owner->stripe()->subscriptions->update(
$this->stripe_id, $options
);
}
/**
* Get the subscription as a Stripe subscription object.
*
* @param array $expand
* @return StripeSubscription
*/
public function asStripeSubscription(array $expand = [])
{
return $this->owner->stripe()->subscriptions->retrieve(
$this->stripe_id, ['expand' => $expand]
);
}
$this->owner
для меня это равно нулю.
У кого-нибудь была подобная проблема?
Ответ №1:
Я столкнулся с аналогичной проблемой, но в качестве оплачиваемой модели я использую модель «Команда», а не модель «Пользователь» по умолчанию. Похоже, что кассир теперь требует, чтобы вы внесли дополнение в AppServiceProvider, чтобы сообщить ему о другой оплачиваемой модели. Это было реализовано в .env ранее.
use AppModelsCashierUser;
use LaravelCashierCashier;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Cashier::useCustomerModel(Team::class);
}