aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2023-01-08 23:33:20 -0500
committerBobby <[email protected]>2023-01-08 23:33:20 -0500
commit2f5cb0fe049353f51ea1b1ac1f448fce7a62014f (patch)
tree22afdea97af37142c796f5f5febd6df389dd7dde
parent60b9af87fd9a98c0502052d432b3bc82a97b85d7 (diff)
downloadthatcomputerscientist-2f5cb0fe049353f51ea1b1ac1f448fce7a62014f.tar.xz
thatcomputerscientist-2f5cb0fe049353f51ea1b1ac1f448fce7a62014f.zip
Fix payment errors as best as I can
-rw-r--r--blog/views.py12
-rw-r--r--templates/blog/donate.html11
2 files changed, 16 insertions, 7 deletions
diff --git a/blog/views.py b/blog/views.py
index b4bf29ed..0aa79b65 100644
--- a/blog/views.py
+++ b/blog/views.py
@@ -268,6 +268,11 @@ def user_activity(request, username):
def donate(request):
amount = request.GET.get('amount')
+ if request.GET.get('payment_intent') and request.GET.get('tab') == 'success':
+ payment_intent = stripe.PaymentIntent.retrieve(request.GET.get('payment_intent'))
+ if payment_intent.status != 'succeeded':
+ return redirect(reverse('blog:donate') + '?tab=error&payment_intent=' + payment_intent.id + '&payment_amount=' + str(int(request.GET.get('payment_amount')) / 100) + '&amount=' + str(request.GET.get('amount')) + '&error=' + payment_intent.last_payment_error.message)
+
try:
amount = int(amount)
except:
@@ -306,8 +311,6 @@ def donate(request):
return_url=request.build_absolute_uri(reverse('blog:donate') + '?tab=success' + '&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt)),
)
- print(payment_intent)
-
if payment_intent.status == 'succeeded':
return redirect(reverse('blog:donate') + '?tab=success&payment_intent=' + payment_intent.id + '&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt))
@@ -320,8 +323,7 @@ def donate(request):
return redirect(reverse('blog:donate') + '?tab=error&payment_intent=' + payment_intent.id + '&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt))
except Exception as e:
- print(e)
- return redirect(reverse('blog:donate') + '?tab=error')
+ error = e.json_body['error']['message']
+ return redirect(reverse('blog:donate') + '?tab=error&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt) + '&error=' + str(error))
return render(request, 'blog/donate.html', {'title': 'Donate', 'amount': amount, 'payment_form': payment_form})
-
diff --git a/templates/blog/donate.html b/templates/blog/donate.html
index 26cfa479..40cff2d9 100644
--- a/templates/blog/donate.html
+++ b/templates/blog/donate.html
@@ -1,7 +1,7 @@
{% extends 'blog/partials/base.html' %} {% block content %}
{% load static %}
-{% if not request.GET.payment_intent %}
+{% if not request.GET.payment_intent and request.GET.tab != 'success' and request.GET.tab != 'error' %}
<div id="donation">
<h2 style="text-transform: none; border: none; padding: 0; font-size: 16px;">
{% if request.GET.referrer %}
@@ -47,15 +47,22 @@
<p><b>Payment Method:</b> <span style="text-transform:uppercase">card</span></p>
<p><b>Payment Status:</b> <span style="text-transform:uppercase">success</span></p>
<a href="{% url 'blog:home' %}" class="button button-special" style="text-decoration: none;">Return to Blog</a>
+ <a href="{% url 'blog:donate' %}" class="button" style="text-decoration: none;">Donate Again</a>
</div>
{% endif %}
-{% if request.GET.payment_intent and request.GET.tab == 'error' %}
+{% if request.GET.tab == 'error' %}
<div id="donation-failed" style="width: 400px; margin: 0 auto;">
<h1>Donation Failed</h1>
<p>Your donation of ${{ request.GET.amount }} has failed. You can find the transaction details below.</p>
+ {% if request.GET.payment_intent %}
<p><b>Transaction ID:</b> {{ request.GET.payment_intent }}</p>
+ {% endif %}
<p><b>Amount:</b> ${{ request.GET.amount }}</p>
+ <p><b>Amount To Be Charged:</b> INR {{ request.GET.payment_amount }}</p>
+ <p><b>Payment Method:</b> <span style="text-transform:uppercase">card</span></p>
+ <p><b>Payment Status:</b> <span style="text-transform:uppercase">failed</span></p>
+ <p><b>Error Message:</b> {{ request.GET.error }}</p>
<a href="{% url 'blog:donate' %}?amount={{ amount }}" class="button button-special" style="text-decoration: none;">Try Again</a>
</div>
{% endif %}