Как получить неактивные (отмененные) подписки из Stripe

Я хочу подтвердить, что подписка клиента была отменена. В документации Stripe API упоминается только возврат «активной» подписки. Как я могу получить список всех подписок?

Листинг подписок

Вы можете увидеть список активных подписок клиента.

GET https://api.stripe.com/v1/customers/{CUSTOMER_ID}/subscriptions

Получение подписки клиента

По умолчанию вы можете видеть 10 самых последних активных подписок, хранящихся у клиента, непосредственно в объекте клиента, но вы также можете получить сведения о конкретной активной подписке для клиента.

GET https://api.stripe.com/v1/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}

person Barry MSIH    schedule 19.10.2014    source источник


Ответы (3)


По состоянию на обновление API от 7.06.16:

Теперь вы можете просматривать отмененные подписки, указав статус = отменено или статус = все при перечислении подписок. Кроме того, теперь вы можете получить отмененную подписку по ее идентификатору.

https://stripe.com/docs/upgrades#api-changelog

Итак, если вы, например, используете Ruby API, вы сможете получать отмененные подписки следующим образом:

Stripe::Subscription.all(status: 'canceled')

И получите список всех подписок, как вы просили выше, например:

Stripe::Subscription.all(status: 'all')
person beth9watson    schedule 19.07.2016
comment
При использовании статуса «отменен» или «все» по-прежнему отображается статус «Недействительный: должен быть пробный, активный, прошедший или неоплаченный». - person Jude Calimbas; 30.12.2016
comment
Большая часть нашего кода использует старую версию API, поэтому наша учетная запись полосы по-прежнему настроена на эту версию, поэтому для использования более новой версии в нашем новом проекте мне пришлось использовать вызов stripe.setApiVersion (versionString), прежде чем можно будет отменить Подписки. Ссылка: stripe.com/docs/api#versioning - person Alex Egli; 13.01.2017

Извините за путаницу! Stripe возвращает только активные подписки; API не возвращает отмененные. Однако вы узнаете, что подписка была отменена, просмотрев это событие в URL-адресе веб-перехватчика. И, если ваш сайт делает запрос на отмену (в отличие от автоматической отмены из-за сбоя платежа), мы выдадим исключение, если этот запрос не удастся.

Надеюсь, это поможет, Ларри

PS Я работаю в службе поддержки Stripe.

person Larry Ullman    schedule 21.10.2014
comment
Это похоже на плохой дизайн - мы, по крайней мере, должны иметь возможность получать отмененные подписки через API, если мы запрашиваем их напрямую по идентификатору. - person Mark Amery; 05.10.2015
comment
Также в библиотеке Python возвращаемое исключение: stripe.error.InvalidRequestError. Было бы более полезно иметь более явное исключение, такое как stripe.error.CancelledSubscription. - person François Constant; 16.03.2016
comment
Я считаю, что с 2016 года это уже не так. См. stripe.com/docs/upgrades # 2016-07-06. - person hirowatari; 08.01.2020

Для PHP:

require_once('stripe/init.php');

\Stripe\Stripe::setApiKey(YOUR_STRIPE_SECRETKEY);

// Retrieve the request's body and parse it as JSON
$input = @file_get_contents("php://input");
$event_json = json_decode($input);

if($event_json->type=='customer.subscription.deleted')
{
    $stripe_customerid = $event_json->data->object->customer; // cus_123456
    $customer = \Stripe\Customer::retrieve($stripe_customerid);
    $usermail = $customer->email;
    // ...
}

При отмене подписки последний неоплаченный счет закрывается, и новые счета не создаются. Событие customer.subscription.deleted запускается после предшествующих ему событий charge.failed и invoice.payment_failed. Вы можете увидеть, что подписка была отменена автоматически, а не по вашему запросу, если свойство request события customer.subscription.deleted имеет значение null.

person Avatar    schedule 15.05.2018