Как отменить подписку на полосу клиентов в конце периода? - PullRequest
0 голосов
/ 06 февраля 2020

Функциональность, которую я хочу, - это если клиент с подпиской отменяет свою подписку. Я хочу позволить ему использовать мой сервис до конца текущего периода, за который он заплатил.

Мой план по реализации этого чтобы, при отмене, обновить свою подписку для отмены в конце текущего периода. В настоящее время я пытаюсь реализовать код в python, который будет обновлять свойство subscription подписки клиентов, но не могу заставить его работать. Это то, что у меня есть:

stripe_customer_obj = stripe.Customer.retrieve(current_user.stripe_customer_id)
stripe_customer_subscription = stripe_customer_obj.subscriptions['data'][0]

stripe.Subscription.modify(
        stripe_customer_subscription['id'],
        metadata={"cancel_at_period_end": True},
    )

Это работает нормально, когда я распечатываю свойство cancel_at_period_end с помощью следующей команды:

print(stripe_customer_subscription['cancel_at_period_end'])

это значение False до и после кода, в котором я изменяю подписка. Это похоже на то, что строка, в которой я изменяю подписку, на самом деле не обновляет и не сохраняет ее, даже если она работает и не дает сбоя.

Если это важно (я не думаю, что это так) - я пытаюсь обновить для свойства cancel_at_period_end, равного True, чтобы при отмене подписки в конце периода сработал веб-крючок, который я могу использовать для обновления записи клиентов в моей БД, чтобы их доступ был отключен от приложения.

1 Ответ

0 голосов
/ 06 февраля 2020

Проблема с вашим кодом заключается в том, что вы включили cancel_at_period_end в metadata объекта Подписка. Это простой ключ -> хранилище значений для хранения произвольных данных.

Вам просто нужно передать cancel_at_period_end как обычный параметр. Вот так:

stripe.Subscription.modify(
  "sub_xxx",
  cancel_at_period_end=True  
)

Надеюсь, это поможет!

...