diff options
author | Adam Bogdal <adam@bogdal.pl> | 2013-10-16 08:23:40 +0200 |
---|---|---|
committer | Adam Bogdal <adam@bogdal.pl> | 2013-10-16 08:23:40 +0200 |
commit | d46637e11e074dc771d34a18e79b8b6004390c9f (patch) | |
tree | 3e924d7a7193ac8d48a04dbd9936eeba15794e5b /payments/stripe | |
parent | d95b17dc66b94ce6722ad0dfef0a284f2e4de334 (diff) | |
download | django-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__.py | 1 | ||||
-rw-r--r-- | payments/stripe/forms.py | 39 |
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 |