Files
pretix_original/src/pretix/plugins/paypal/views.py
2016-11-29 16:33:27 +01:00

52 lines
1.9 KiB
Python

import logging
from django.contrib import messages
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from pretix.base.models import Order
from pretix.multidomain.urlreverse import eventreverse
from pretix.plugins.paypal.payment import Paypal
from pretix.presale.utils import event_view
logger = logging.getLogger('pretix.plugins.paypal')
@event_view(require_live=False)
def success(request, *args, **kwargs):
pid = request.GET.get('paymentId')
token = request.GET.get('token')
payer = request.GET.get('PayerID')
request.session['payment_paypal_token'] = token
request.session['payment_paypal_payer'] = payer
if request.session.get('payment_paypal_order'):
order = Order.objects.get(pk=request.session.get('payment_paypal_order'))
else:
order = None
if pid == request.session.get('payment_paypal_id', None):
if order:
prov = Paypal(request.event)
resp = prov.payment_perform(request, order)
if resp:
return resp
else:
messages.error(request, _('Invalid response from PayPal received.'))
logger.error('Session did not contain payment_paypal_id')
return redirect(eventreverse(request.event, 'presale:event.checkout', kwargs={'step': 'payment'}))
if order:
return redirect(eventreverse(request.event, 'presale:event.order', kwargs={
'order': order.code,
'secret': order.secret
}) + ('?paid=yes' if order.status == Order.STATUS_PAID else ''))
else:
return redirect(eventreverse(request.event, 'presale:event.checkout', kwargs={'step': 'confirm'}))
@event_view(require_live=False)
def abort(request, *args, **kwargs):
messages.error(request, _('It looks like you canceled the PayPal payment'))
return redirect(eventreverse(request.event, 'presale:event.checkout', kwargs={'step': 'payment'}))