summaryrefslogtreecommitdiff
path: root/payments/stripe/__init__.py
blob: 6a60f06dff9b3c2e58309fea1cde33b981a4ea33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from __future__ import unicode_literals

from django.core.exceptions import ImproperlyConfigured


from .forms import PaymentForm
from .. import RedirectNeeded
from ..core import BasicProvider


class StripeProvider(BasicProvider):

    def __init__(self, public_key, secret_key, image='', name='', **kwargs):
        self.secret_key = secret_key
        self.public_key = public_key
        self.image = image
        self.name = name
        super(StripeProvider, self).__init__(**kwargs)
        if not self._capture:
            raise ImproperlyConfigured(
                'Stripe does not support pre-authorization.')

    def get_form(self, payment, data=None):
        if payment.status == 'waiting':
            payment.change_status('input')
        kwargs = {
            'data': data,
            'payment': payment,
            'provider': self,
            'hidden_inputs': False}
        form = PaymentForm(**kwargs)

        if form.is_valid():
            form.save()
            raise RedirectNeeded(payment.get_success_url())
        return form