summaryrefslogtreecommitdiff
path: root/payments/stripe
diff options
context:
space:
mode:
authorAdam Bogdal <adam@bogdal.pl>2013-10-16 08:23:40 +0200
committerAdam Bogdal <adam@bogdal.pl>2013-10-16 08:23:40 +0200
commitd46637e11e074dc771d34a18e79b8b6004390c9f (patch)
tree3e924d7a7193ac8d48a04dbd9936eeba15794e5b /payments/stripe
parentd95b17dc66b94ce6722ad0dfef0a284f2e4de334 (diff)
downloaddjango-payments-taler-d46637e11e074dc771d34a18e79b8b6004390c9f.tar.gz
django-payments-taler-d46637e11e074dc771d34a18e79b8b6004390c9f.tar.bz2
django-payments-taler-d46637e11e074dc771d34a18e79b8b6004390c9f.zip
Display error message from api
Diffstat (limited to 'payments/stripe')
-rw-r--r--payments/stripe/__init__.py1
-rw-r--r--payments/stripe/forms.py39
2 files changed, 20 insertions, 20 deletions
diff --git a/payments/stripe/__init__.py b/payments/stripe/__init__.py
index d60ea75..62c89bf 100644
--- a/payments/stripe/__init__.py
+++ b/payments/stripe/__init__.py
@@ -23,7 +23,6 @@ class StripeProvider(BasicProvider):
form = PaymentForm(**kwargs)
if form.is_valid():
- form.save()
raise RedirectNeeded(self.payment.get_success_url())
else:
self.payment.change_status('input')
diff --git a/payments/stripe/forms.py b/payments/stripe/forms.py
index 6699b88..edd2e27 100644
--- a/payments/stripe/forms.py
+++ b/payments/stripe/forms.py
@@ -2,7 +2,6 @@ from django import forms
import stripe
-from .. import RedirectNeeded
from ..forms import PaymentForm as BasePaymentForm
from .widgets import StripeWidget
@@ -14,23 +13,25 @@ class PaymentForm(BasePaymentForm):
widget = StripeWidget(provider=self.provider, payment=self.payment)
self.fields['stripe_token'] = forms.CharField(widget=widget)
- def save(self):
+ def clean(self):
data = self.cleaned_data
- stripe.api_key = self.provider.secret_key
- try:
- charge = stripe.Charge.create(
- amount=self.payment.total * 100,
- currency=self.payment.currency,
- card=data['stripe_token'],
- description=u"%s %s" % (self.payment.billing_last_name,
- self.payment.billing_first_name)
- )
- except stripe.CardError, e:
- # The card has been declined
- self.payment.change_status('input')
- raise RedirectNeeded(self.payment.get_failure_url())
- else:
- self.payment.transaction_id = charge.id
- self.payment.change_status('confirmed')
- self.payment.save()
+ if not self.errors and not self.payment.transaction_id:
+ stripe.api_key = self.provider.secret_key
+ try:
+ charge = stripe.Charge.create(
+ amount=self.payment.total * 100,
+ currency=self.payment.currency,
+ card=data['stripe_token'],
+ description=u"%s %s" % (self.payment.billing_last_name,
+ self.payment.billing_first_name)
+ )
+ except stripe.CardError, e:
+ # The card has been declined
+ self._errors['__all__'] = self.error_class([e])
+ self.payment.change_status('error')
+ else:
+ self.payment.transaction_id = charge.id
+ self.payment.change_status('confirmed')
+
+ return data