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)
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'})
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)
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)
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)
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)
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("")
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("")
def link_online_sale(modeladmin, request, queryset): for i in queryset: online_sale(i) i.save()