Касса Laravel `$ user-> subscribed ()` возвращает true, если подписка отсутствует - PullRequest
0 голосов
/ 29 января 2019

Мой код прост:

if($user->subscribed('main')){
    $user->subscription('main')->cancel();
}

Я получаю этот ответ:

Stripe \ Error \ InvalidRequest
No such subscription: sub_EQTvxKjit2Ak6i

Подписка была фактически ранее отменена, поэтому она не должна давать trueответ.

Я попытался вернуть $user->subscribed('main'), и он вернулся как true.

У этого пользователя есть другие подписки, но "main" не активна.

Я пропустилчто-то?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Если вы прочитали черту Billable , то вы найдете эту функцию там

public function subscribed($subscription = 'default', $plan = null)
{
    $subscription = $this->subscription($subscription);

    if (is_null($subscription)) {
        return false;
    }

    if (is_null($plan)) {
        return $subscription->valid();
    }

    return $subscription->valid() &&
           $subscription->stripe_plan === $plan;
}

Эта функция только проверяет, существует ли запись подписки в таблице подписки или нет.В соответствии с вышеуказанной функцией, если подписка не существует, она возвращает false.

Убедитесь, что вы не делаете никакой ошибки.

0 голосов
/ 29 января 2019

$user->subscribed() только проверяет базу данных на статус подписки - она ​​вообще не запрашивает Stripe API.Но когда вы пытаетесь отменить эту подписку, она запрашивает API.

Так что это может привести к такой ошибке, если ваша база данных не синхронизирована с вашими данными в Stripe.Может быть, ваша база данных имеет подписку из тестового режима Stripe, но вы запрашиваете производственный API Stripe?Или наоборот?

...