PayU payments working.
[wolnelektury.git] / src / club / payment_methods.py
1 from django.conf import settings
2 from django.urls import reverse
3
4
5 class PaymentMethod(object):
6     is_recurring = False
7
8     def initiate(self, request, schedule):
9         return reverse('club_dummy_payment', args=[schedule.key])
10
11
12 class PayU(PaymentMethod):
13     slug = 'payu'
14     name = 'PayU'
15     template_name = 'club/payment/payu.html'
16
17     def __init__(self, pos_id):
18         self.pos_id = pos_id
19
20     def initiate(self, request, schedule):
21         # Create Order at once.
22         from .models import PayUOrder
23         order = PayUOrder.objects.create(
24             pos_id=self.pos_id,
25             customer_ip=request.META['REMOTE_ADDR'],
26             schedule=schedule,
27         )
28         return order.put()
29
30
31 class PayURe(PaymentMethod):
32     slug='payu-re'
33     name = 'PayU Recurring'
34     template_name = 'club/payment/payu-re.html'
35     is_recurring = True
36
37     def __init__(self, pos_id):
38         self.pos_id = pos_id
39
40     def initiate(self, request, schedule):
41         return reverse('club_payu_rec_payment', args=[schedule.key])
42
43     def pay(self, request, schedule):
44         # Create order, put it and see what happens next.
45         from .models import PayUOrder
46         order = PayUOrder.objects.create(
47             pos_id=self.pos_id,
48             customer_ip=request.META['REMOTE_ADDR'],
49             schedule=schedule,
50         )
51         return order.put()
52         
53
54 class PayPalRe(PaymentMethod):
55     slug='paypal-re'
56     name = 'PayPal Recurring'
57     template_name = 'club/payment/paypal-re.html'
58     is_recurring = True
59
60     def initiate(self, request, schedule):
61         return reverse('club_dummy_payment', args=[schedule.key])
62
63
64 methods = []
65
66 pos = getattr(settings, 'CLUB_PAYU_POS', None)
67 if pos:
68     payu_method = PayU(pos)
69     methods.append(payu_method)
70 else:
71     payu_method = None
72
73 pos= getattr(settings, 'CLUB_PAYU_RECURRING_POS', None)
74 if pos:
75     payure_method = PayURe(pos)
76     methods.append(payure_method)
77 else:
78     payure_method = None
79
80
81 methods.append(PayPalRe())
82
83
84 method_by_slug = {
85     m.slug: m
86     for m in methods
87 }