diff options
| author | Bobby <[email protected]> | 2023-01-08 23:33:20 -0500 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-01-08 23:33:20 -0500 |
| commit | 2f5cb0fe049353f51ea1b1ac1f448fce7a62014f (patch) | |
| tree | 22afdea97af37142c796f5f5febd6df389dd7dde | |
| parent | 60b9af87fd9a98c0502052d432b3bc82a97b85d7 (diff) | |
| download | thatcomputerscientist-2f5cb0fe049353f51ea1b1ac1f448fce7a62014f.tar.xz thatcomputerscientist-2f5cb0fe049353f51ea1b1ac1f448fce7a62014f.zip | |
Fix payment errors as best as I can
| -rw-r--r-- | blog/views.py | 12 | ||||
| -rw-r--r-- | templates/blog/donate.html | 11 |
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 %} |
