From d46466049528eee1df0fe5749a5926618c705fbb Mon Sep 17 00:00:00 2001 From: Nick Sergeant Date: Thu, 24 Apr 2014 09:38:48 -0400 Subject: [PATCH] Handle failed credit cards. --- templates/pro-signup.html | 5 +++++ views.py | 15 ++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/templates/pro-signup.html b/templates/pro-signup.html index 9404b35..1782ef0 100644 --- a/templates/pro-signup.html +++ b/templates/pro-signup.html @@ -26,6 +26,11 @@
snipt Pro
+ {% if request.GET.declined %} +
+ Your card was declined. You have not been charged. Please try again. +
+ {% endif %}
diff --git a/views.py b/views.py index 6ffc7c6..3b034dc 100644 --- a/views.py +++ b/views.py @@ -56,7 +56,6 @@ def homepage(request): 'users_count': User.objects.all().count(), } - @ajax_request def lexers(request): lexers = get_lexers_list() @@ -83,14 +82,12 @@ def lexers(request): return {'objects': objects} - def login_redirect(request): if request.user.is_authenticated(): return HttpResponseRedirect('/' + request.user.username + '/') else: return HttpResponseRedirect('/') - @login_required @render_to('pro-signup.html') def pro_signup(request): @@ -98,7 +95,6 @@ def pro_signup(request): return HttpResponseRedirect('/' + request.user.username + '/') return {} - @login_required @render_to('pro-signup-complete.html') def pro_signup_complete(request): @@ -110,9 +106,12 @@ def pro_signup_complete(request): plan = 'snipt-pro-monthly' - customer = stripe.Customer.create(card=token, - plan=plan, - email=request.user.email) + try: + customer = stripe.Customer.create(card=token, + plan=plan, + email=request.user.email) + except stripe.CardError: + return HttpResponseRedirect('/pro/signup/?declined=true') profile = request.user.profile profile.is_pro = True @@ -124,7 +123,6 @@ def pro_signup_complete(request): else: return HttpResponseBadRequest() - def sitemap(request): tags = Tag.objects.filter(snipt__public=True) @@ -136,7 +134,6 @@ def sitemap(request): context_instance=RequestContext(request), mimetype='application/xml') - @render_to('tags.html') def tags(request):