Private
Public Access
1
0

better error handling

This commit is contained in:
Sander Roosendaal
2018-12-20 21:29:13 +01:00
parent ab9579a048
commit 98900059f8
6 changed files with 48 additions and 77 deletions

View File

@@ -171,6 +171,17 @@ def update_subscription(rower,data,method='up'):
return True return True
else: else:
errors = result.errors.for_object("subscription")
codes = [str(e.code) for e in errors]
create_new = False
proceed_codes = ['81901','81910']
for c in codes:
if c in proceed_codes:
create_new = True
if create_new:
return create_subscription(rower,data)
return False return False
return False return False
@@ -237,7 +248,7 @@ def cancel_subscription(rower,id):
errormessages = [] errormessages = []
try: try:
result = gateway.subscription.cancel(id) result = gateway.subscription.cancel(id)
messages.append("Subscription canceled") themessages.append("Subscription canceled")
except: except:
errormessages.append("We could not find the subscription record in our customer database. We have notified the site owner, who will contact you.") errormessages.append("We could not find the subscription record in our customer database. We have notified the site owner, who will contact you.")
@@ -250,7 +261,8 @@ def cancel_subscription(rower,id):
return False, themessages, errormessages return False, themessages, errormessages
rower.paidplan = None basicplans = PaidPlan.objects.filter(price=0,paymentprocessor='braintree')
rower.paidplan = basicplans[0]
rower.teamplanexpires = timezone.now() rower.teamplanexpires = timezone.now()
rower.planexpires = timezone.now() rower.planexpires = timezone.now()
rower.clubsize = 0 rower.clubsize = 0

View File

@@ -0,0 +1,25 @@
<script src="https://js.braintreegateway.com/web/dropin/1.14.1/js/dropin.min.js"></script>
<script>
var form = document.querySelector('#payment-form');
var client_token = '{{ client_token }}';
braintree.dropin.create({
authorization: client_token,
container: '#bt-dropin',
paypal: {
flow: 'vault'
}
}, function (createErr, instance) {
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});
</script>

View File

@@ -83,31 +83,7 @@
</li> </li>
</ul> </ul>
<script src="https://js.braintreegateway.com/web/dropin/1.14.1/js/dropin.min.js"></script> {% include 'braintreedropin.html' %}
<script>
var form = document.querySelector('#payment-form');
var client_token = '{{ client_token }}';
braintree.dropin.create({
authorization: client_token,
container: '#bt-dropin',
paypal: {
flow: 'checkout'
}
}, function (createErr, instance) {
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});
</script>
{% endblock %} {% endblock %}

View File

@@ -78,31 +78,7 @@
</li> </li>
</ul> </ul>
<script src="https://js.braintreegateway.com/web/dropin/1.14.1/js/dropin.min.js"></script> {% include 'braintreedropin.html' %}
<script>
var form = document.querySelector('#payment-form');
var client_token = '{{ client_token }}';
braintree.dropin.create({
authorization: client_token,
container: '#bt-dropin',
paypal: {
flow: 'checkout'
}
}, function (createErr, instance) {
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});
</script>
{% endblock %} {% endblock %}

View File

@@ -87,31 +87,8 @@
</li> </li>
</ul> </ul>
<script src="https://js.braintreegateway.com/web/dropin/1.14.1/js/dropin.min.js"></script> {% include 'braintreedropin.html' %}
<script>
var form = document.querySelector('#payment-form');
var client_token = '{{ client_token }}';
braintree.dropin.create({
authorization: client_token,
container: '#bt-dropin',
paypal: {
flow: 'checkout'
}
}, function (createErr, instance) {
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});
</script>
{% endblock %} {% endblock %}

View File

@@ -29,6 +29,7 @@ import re
import cgi import cgi
from icalendar import Calendar, Event from icalendar import Calendar, Event
import rowers.braintreestuff as braintreestuff import rowers.braintreestuff as braintreestuff
import rowers.payments as payments
from django.shortcuts import render from django.shortcuts import render
from django.template.loader import render_to_string from django.template.loader import render_to_string
@@ -1074,6 +1075,10 @@ def paidplans_view(request):
def billing_view(request): def billing_view(request):
r = getrequestrower(request) r = getrequestrower(request)
if payments.is_existing_customer(r):
url = reverse(upgrade_view)
return HttpResponseRedirect(url)
if request.method == 'POST': if request.method == 'POST':
billingaddressform = RowerBillingAddressForm(request.POST) billingaddressform = RowerBillingAddressForm(request.POST)
planselectform = PlanSelectForm(request.POST,paymentprocessor='braintree') planselectform = PlanSelectForm(request.POST,paymentprocessor='braintree')