X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/65c9feda79d2b2c94cb7dcd561318a83fd796f0a..51ac945348ac0e1de1daaa181a8a81c2dc0801c0:/src/club/payment_methods.py?ds=sidebyside diff --git a/src/club/payment_methods.py b/src/club/payment_methods.py index ca34ace48..c20768546 100644 --- a/src/club/payment_methods.py +++ b/src/club/payment_methods.py @@ -1,5 +1,9 @@ +# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# from django.conf import settings from django.urls import reverse +from paypal.rest import agreement_approval_url class PaymentMethod(object): @@ -31,8 +35,8 @@ class PayU(PaymentMethod): class PayURe(PaymentMethod): - slug='payu-re' - name = 'PayU (płatność odnawialna)' + slug = 'payu-re' + name = 'PayU recurring' template_name = 'club/payment/payu-re.html' is_recurring = True @@ -45,46 +49,63 @@ class PayURe(PaymentMethod): def pay(self, request, schedule): # Create order, put it and see what happens next. from .models import PayUOrder + if request is not None: + ip = request.META['REMOTE_ADDR'] + else: + ip = '127.0.0.1' order = PayUOrder.objects.create( pos_id=self.pos_id, - customer_ip=request.META['REMOTE_ADDR'], + customer_ip=ip, schedule=schedule, ) return order.put() class PayPal(PaymentMethod): - slug='paypal' - name = 'PayPal (płatność odnawialna)' + 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) +pos = getattr(settings, 'CLUB_PAYU_RECURRING_POS', None) if pos: - payure_method = PayURe(pos) - methods.append(payure_method) + recurring_payment_method = PayURe(pos) + methods.append(recurring_payment_method) else: - payure_method = None + recurring_payment_method = None pos = getattr(settings, 'CLUB_PAYU_POS', None) if pos: - payu_method = PayU(pos) - methods.append(payu_method) + single_payment_method = PayU(pos) + methods.append(single_payment_method) else: - payu_method = None - + single_payment_method = None -#methods.append(PayPal()) -method_by_slug = { - m.slug: m - for m in methods -} +methods.append( + PayPal() +)