def handle(self, *args, **options):
stripe.api_key = stripe_settings.API_KEY
site_id = options.get("site")
site = Site.objects.get(pk=site_id) if site_id else Site.objects.all()[0]
pending_webhooks = []
last_event = StripeWebhook.objects.first()
last_event_id = last_event.id if last_event else None
try:
if last_event:
stripe.Event.retrieve(last_event_id)
except stripe.error.InvalidRequestError:
last_event_id = None
while True:
event_list = stripe.Event.list(ending_before=last_event_id, limit=100) # 100 is the maximum
pending_webhooks += event_list["data"]
if len(pending_webhooks) > stripe_settings.PENDING_WEBHOOKS_THRESHOLD:
raise StripePendingWebooksLimitExceeded(pending_webhooks, site)
if not event_list["has_more"]:
break
else:
last_event_id = event_list["data"][-1]["id"]
评论列表
文章目录