49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
import logging
|
|
import stripe
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = '''creates webhook with the supplied arguments and returns the
|
|
webhook secret
|
|
'''
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
'--webhook_endpoint',
|
|
help="The url of the webhook endpoint that accepts the events "
|
|
"from stripe",
|
|
dest="webhook_endpoint"
|
|
)
|
|
parser.add_argument('--events_csv', dest="events_csv")
|
|
|
|
def handle(self, *args, **options):
|
|
wep_exists = False
|
|
try:
|
|
we_list = stripe.WebhookEndpoint.list(limit=100)
|
|
for wep in we_list.data:
|
|
if set(wep.enabled_events) == set(options['events_csv'].split(",")):
|
|
if wep.url == options['webhook_endpoint']:
|
|
logger.debug("We have this webhook already")
|
|
wep_exists = True
|
|
break
|
|
if wep_exists is False:
|
|
logger.debug(
|
|
"No webhook exists for {} at {}. Creatting a new endpoint "
|
|
"now".format(
|
|
options['webhook_endpoint'], options['events_csv']
|
|
)
|
|
)
|
|
wep = stripe.WebhookEndpoint.create(
|
|
url=options['webhook_endpoint'],
|
|
enabled_events=options['events_csv'].split(",")
|
|
)
|
|
self.stdout.write(
|
|
self.style.SUCCESS('Creation successful. '
|
|
'webhook_secret = %s' % wep.secret)
|
|
)
|
|
except Exception as e:
|
|
print(" *** Error occurred. Details {}".format(str(e)))
|