X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/e7451b87d12c06755d6dc278e72b6650f8de8b4a..df60910b2d457f031cbe0a153e51e7378c0165d8:/src/club/payment_methods.py diff --git a/src/club/payment_methods.py b/src/club/payment_methods.py index 1b27bd3e7..0c187a826 100644 --- a/src/club/payment_methods.py +++ b/src/club/payment_methods.py @@ -3,11 +3,15 @@ # from django.conf import settings from django.urls import reverse +from paypal.rest import agreement_approval_url class PaymentMethod(object): is_onetime = False is_recurring = False + expiration_reliable = False + cancellable = False + updateable = False def initiate(self, request, schedule): return reverse('club_dummy_payment', args=[schedule.key]) @@ -15,7 +19,9 @@ class PaymentMethod(object): class PayU(PaymentMethod): is_onetime = True + expiration_reliable = True slug = 'payu' + name = 'PayU' template_name = 'club/payment/payu.html' def __init__(self, pos_id): @@ -33,9 +39,13 @@ class PayU(PaymentMethod): class PayURe(PaymentMethod): - slug='payu-re' + slug = 'payu-re' + name = 'PayU recurring' template_name = 'club/payment/payu-re.html' is_recurring = True + expiration_reliable = True + cancellable = True + updateable = True def __init__(self, pos_id): self.pos_id = pos_id @@ -59,23 +69,50 @@ class PayURe(PaymentMethod): class PayPal(PaymentMethod): - slug='paypal' + slug = 'paypal' + name = 'PayPal' template_name = 'club/payment/paypal.html' is_recurring = True - is_onetime = True + is_onetime = False def initiate(self, request, schedule): - return reverse('club_dummy_payment', args=[schedule.key]) + app = request.GET.get('app') + return agreement_approval_url(schedule.amount, schedule.key, app=app) + def pay(self, request, schedule): + from datetime import date, timedelta, datetime + from pytz import utc + tomorrow = datetime(*(date.today() + timedelta(2)).timetuple()[:3], tzinfo=utc) + any_active = False + for ba in schedule.billingagreement_set.all(): + active = ba.check_agreement() + ba.active = active + ba.save() + if active: + any_active = True + if any_active: + schedule.expires_at = tomorrow + schedule.save() + + +methods = [] pos = getattr(settings, 'CLUB_PAYU_RECURRING_POS', None) if pos: recurring_payment_method = PayURe(pos) + methods.append(recurring_payment_method) else: recurring_payment_method = None pos = getattr(settings, 'CLUB_PAYU_POS', None) if pos: single_payment_method = PayU(pos) + methods.append(single_payment_method) else: single_payment_method = None + + + +methods.append( + PayPal() +)