better error handling
This commit is contained in:
@@ -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
|
||||||
|
|||||||
25
rowers/templates/braintreedropin.html
Normal file
25
rowers/templates/braintreedropin.html
Normal 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>
|
||||||
@@ -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 %}
|
||||||
|
|||||||
@@ -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 %}
|
||||||
|
|||||||
@@ -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 %}
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user