Когда взимать плату за ежемесячное использование в конце платежного цикла в полосе - PullRequest
0 голосов
/ 27 октября 2018

У меня есть план подписки, который стоит 10 долларов в месяц за план пользователя + плата за перерасход данных.Другими словами, это похоже на (не безлимитный) тарифный план для сотовых телефонов.

Когда я должен добавить ежемесячное использование данных в конце цикла?

Согласно Подписная документация о стиле жизни здесь , там говорится, что событие invoice.created происходит примерно за час до invoice.payment_succeeded или charge.succeeded.Тем не менее, кажется, что это практически невозможно проверить, поскольку всякий раз, когда счет-фактура создается для подписки, все события webhook запускаются одновременно.Как с этим бороться?Обратите внимание, что я хочу обновить metered usage amount только один раз, в конце цикла.

Мой код в настоящее время выглядит примерно так:

def stripe_webhook(request):

    if event_type == 'invoice.created':

        subscription_item_id = [item['subscription_item'] for item in stripe_data_obj['lines']['data'] if item['plan']['usage_type'] == 'metered'][0]

        data_usage = user.get_data_usage(start_date, end_date)
        usage = stripe.UsageRecord.create(
          quantity=data_usage,
          timestamp=int(time.time()),
          subscription_item=subscription_item_id,
          action = 'set'
        )

1 Ответ

0 голосов
/ 27 октября 2018

Если вы хотите вручную добавить позиции в счет-фактуру, то вы можете это проверить.Идея заключалась бы в том, чтобы поставить вашего клиента на испытательный срок на несколько минут.Первый созданный счет-фактура предназначен для пробной версии, и вы можете игнорировать это одно и все связанные события.Спустя несколько минут, когда пробный период заканчивается, будет создан новый счет-фактура и на конечную точку будет отправлено событие invoice.created.Это позволит вам изменить новый счет-фактуру и добавить дополнительную сумму / сборы, взимаемые в этом месяце.

Чтобы сделать это, вы должны использовать Создать подписку API и передать trial_end параметр в качестве метки времени Unix, представляющий несколько минут в будущем.

Отдельно, хотя, если вы действительно хотите сообщить о чрезмерном использовании, вы можете использовать счетные записи об оплате и использовании, как описано здесь: https://stripe.com/docs/billing/subscriptions/metered-billing

...