Beispiel #1
0
    def confirm_data(cls, mdata, sig):
        data = tpv_parse_data(mdata, sig)

        if not data:
            raise Http404

        order_tpv = data.get('Ds_Order', '')
        resp = data.get('Ds_Response', '')
        error = data.get('Ds_ErrorCode', '')
        if not order_tpv:
            raise Http404

        tk = get_ticket_or_404(order_tpv=order_tpv)

        if error or resp != '0000':
            # payment error
            err1, err2 = '', ''
            if resp != '0000':
                msg = redsystpv.ERROR_CODES.get(int(resp), _('Unknown error'))
                err1 = '{}: {}'.format(resp, msg)
            if error:
                msg = redsystpv.SIS_CODES.get(error, _('Unknown error'))
                err2 = '{}: {}'.format(error, msg)
            tk.set_error(err1, err2)
            raise Http404

        sig2 = tpv_sig_data(mdata, order_tpv, settings.TPV_KEY, b'-_')
        if sig != sig2:
            raise Http404

        tk.confirm()
        online_sale(tk)
Beispiel #2
0
    def post(self, request):
        import paypalrestsdk

        paypalrestsdk.configure({
            'mode':
            'sandbox' if settings.PAYPAL_SANDBOX else 'live',
            'client_id':
            settings.PAYPAL_CLIENTID,
            'client_secret':
            settings.PAYPAL_SECRET
        })

        try:
            payment_id = request.POST['payment_id']
            p = paypalrestsdk.Payment.find(payment_id)
        except:
            raise Http404

        tr = p.transactions[0]
        order_tpv = tr.invoice_number
        tk = get_ticket_or_404(order_tpv=order_tpv)

        if (float(tr.amount.total) == tk.get_price() and p.intent == 'sale'
                and p.state == 'approved'):
            tk.confirm(method="paypal")
            online_sale(tk)
        else:
            return JsonResponse({'status': 'error'})

        return JsonResponse({'status': 'ok'})
Beispiel #3
0
    def handle(self, *args, **options):
        event = options['event']
        mps = MultiPurchase.objects.filter(ev__slug=event, confirmed=True)
        mps = mps.filter(sales=None, tickets__sold_in_window=False).distinct()

        for tk in mps:
            online_sale(tk)
Beispiel #4
0
    def post(self, request, ev=None):
        ev = get_object_or_404(Event, slug=ev)

        ids = [(i[len('number_'):], request.POST[i]) for i in request.POST
               if i.startswith('number_')]
        seats = [(i[len('seats_'):], request.POST[i].split(','))
                 for i in request.POST if i.startswith('seats_')]

        client = self.request.session.get('client', '')

        form = MPRegisterForm(request.POST,
                              event=ev,
                              ids=ids,
                              seats=seats,
                              client=client)

        if not client:
            expired = int(settings.EXPIRED_SEAT_H / 60)
            messages.error(
                request,
                _('Session has expired: you should'
                  ' select seats again. Seats save'
                  ' for you during {:d}'
                  ' minutes.').format(expired))
            ctx = self.get_context_data()
            ctx['form'] = form
            ctx['session_expired'] = True
            return render(request, self.template_name, ctx)

        if form.is_valid():
            mp = form.save()
            mp.send_reg_email()

            if not mp.get_price():
                mp.confirm(method=None)
                online_sale(mp)
                return redirect('thanks', order=mp.order)

            # Expired time reset
            seathold_update(client, type='C')
            self.request.session.set_expiry(settings.EXPIRED_SEAT_C)
            return redirect('payment', order=mp.order)

        ctx = self.get_context_data()
        ctx['form'] = form
        ctx['invalid_form'] = True

        return render(request, self.template_name, ctx)
Beispiel #5
0
    def post(self, request, ev=None):
        ev = get_object_or_404(Event, slug=ev)

        ids = [(i[len("number_") :], request.POST[i]) for i in request.POST if i.startswith("number_")]
        seats = [(i[len("seats_") :], request.POST[i].split(",")) for i in request.POST if i.startswith("seats_")]

        client = self.request.session.get("client", "")

        form = MPRegisterForm(request.POST, event=ev, ids=ids, seats=seats, client=client)

        if not client:
            expired = int(settings.EXPIRED_SEAT_H / 60)
            messages.error(
                request,
                _(
                    "Session has expired: you should"
                    " select seats again. Seats save"
                    " for you during {:d}"
                    " minutes."
                ).format(expired),
            )
            ctx = self.get_context_data()
            ctx["form"] = form
            ctx["session_expired"] = True
            return render(request, self.template_name, ctx)

        if form.is_valid():
            mp = form.save()
            mp.send_reg_email()

            if not mp.get_price():
                mp.confirm()
                online_sale(mp)
                return redirect("thanks", order=mp.order)

            # Expired time reset
            seathold_update(client, type="C")
            self.request.session.set_expiry(settings.EXPIRED_SEAT_C)
            return redirect("payment", order=mp.order)

        ctx = self.get_context_data()
        ctx["form"] = form

        return render(request, self.template_name, ctx)
Beispiel #6
0
    def post(self, request, order):
        import stripe
        stripe.api_key = settings.STRIPE_SK

        token = request.POST['stripeToken']

        tk = get_ticket_or_404(order=order)
        amount = str(int(tk.get_price() * 100))
        try:
            charge = stripe.Charge.create(amount=amount,
                                          currency='eur',
                                          source=token)
        except stripe.CardError as e:
            messages.error(request, _('The credit card has been declined.'))
            return redirect('payment', order=tk.order)

        tk.confirm(method="stripe")
        online_sale(tk)

        return redirect('thanks', order=tk.order)
Beispiel #7
0
    def post(self, request):
        mdata = request.POST.get('Ds_MerchantParameters', '')
        sig = request.POST.get('Ds_Signature', '')
        data = tpv_parse_data(mdata, sig)

        if not data:
            raise Http404

        order_tpv = data.get('Ds_Order', '')
        resp = data.get('Ds_Response', '')
        error = data.get('Ds_ErrorCode', '')
        if not order_tpv:
            raise Http404

        tk = get_ticket_or_404(order_tpv=order_tpv)

        if error or resp != '0000':
            # payment error
            err1, err2 = '', ''
            if resp != '0000':
                msg = redsystpv.ERROR_CODES.get(int(resp), _('Unknown error'))
                err1 = '{}: {}'.format(resp, msg)
            if error:
                msg = redsystpv.SIS_CODES.get(error, _('Unknown error'))
                err2 = '{}: {}'.format(error, msg)
            tk.set_error(err1, err2)
            raise Http404

        sig2 = tpv_sig_data(mdata, order_tpv, settings.TPV_KEY, b'-_')
        if sig != sig2:
            raise Http404

        tk.confirm()

        online_sale(tk)
        return HttpResponse("")
Beispiel #8
0
    def post(self, request):
        mdata = request.POST.get("Ds_MerchantParameters", "")
        sig = request.POST.get("Ds_Signature", "")
        data = tpv_parse_data(mdata, sig)

        if not data:
            raise Http404

        order_tpv = data.get("Ds_Order", "")
        resp = data.get("Ds_Response", "")
        error = data.get("Ds_ErrorCode", "")
        if not order_tpv:
            raise Http404

        tk = get_ticket_or_404(order_tpv=order_tpv)

        if error or resp != "0000":
            # payment error
            err1, err2 = "", ""
            if resp != "0000":
                msg = redsystpv.ERROR_CODES.get(int(resp), _("Unknown error"))
                err1 = "{}: {}".format(resp, msg)
            if error:
                msg = redsystpv.SIS_CODES.get(error, _("Unknown error"))
                err2 = "{}: {}".format(error, msg)
            tk.set_error(err1, err2)
            raise Http404

        sig2 = tpv_sig_data(mdata, order_tpv, settings.TPV_KEY, b"-_")
        if sig != sig2:
            raise Http404

        tk.confirm()

        online_sale(tk)
        return HttpResponse("")
Beispiel #9
0
def link_online_sale(modeladmin, request, queryset):
    for i in queryset:
        online_sale(i)
        i.save()
Beispiel #10
0
def link_online_sale(modeladmin, request, queryset):
    for i in queryset:
        online_sale(i)
        i.save()