forked from uncloud/uncloud
94633d6cc8
Signed-off-by: Nico Schottelius <nico@nico-notebook.schottelius.org>
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
import stripe
|
|
|
|
def handle_stripe_error(f):
|
|
def handle_problems(*args, **kwargs):
|
|
response = {
|
|
'paid': False,
|
|
'response_object': None,
|
|
'error': None
|
|
}
|
|
|
|
common_message = "Currently it's not possible to make payments."
|
|
try:
|
|
response_object = f(*args, **kwargs)
|
|
response = {
|
|
'response_object': response_object,
|
|
'error': None
|
|
}
|
|
return response
|
|
except stripe.error.CardError as e:
|
|
# Since it's a decline, stripe.error.CardError will be caught
|
|
body = e.json_body
|
|
err = body['error']
|
|
response.update({'error': err['message']})
|
|
logging.error(str(e))
|
|
return response
|
|
except stripe.error.RateLimitError:
|
|
response.update(
|
|
{'error': "Too many requests made to the API too quickly"})
|
|
return response
|
|
except stripe.error.InvalidRequestError as e:
|
|
logging.error(str(e))
|
|
response.update({'error': "Invalid parameters"})
|
|
return response
|
|
except stripe.error.AuthenticationError as e:
|
|
# Authentication with Stripe's API failed
|
|
# (maybe you changed API keys recently)
|
|
logging.error(str(e))
|
|
response.update({'error': common_message})
|
|
return response
|
|
except stripe.error.APIConnectionError as e:
|
|
logging.error(str(e))
|
|
response.update({'error': common_message})
|
|
return response
|
|
except stripe.error.StripeError as e:
|
|
# maybe send email
|
|
logging.error(str(e))
|
|
response.update({'error': common_message})
|
|
return response
|
|
except Exception as e:
|
|
# maybe send email
|
|
logging.error(str(e))
|
|
response.update({'error': common_message})
|
|
return response
|
|
|
|
return handle_problems
|