예제 #1
0
        // GET: Payson
        public ActionResult Index()
        {
            var SUPVM = Session["VM"] as SignMeUpVM;

            // TODO, hantera Cancel från Payson
            // Om ViewModel finns i Session kommmer vi från Cancelled och ska visa
            // felmeddelande
            if (SUPVM == null)
            {
                return(ShowError(log, "Oväntat fel inträffade. Var god försök senare.", true));
                //return View(SUPVM.Kontaktinformation);
            }

            ViewBag.ev = SUPVM.EvenemangsNamn;

            LogDebug(log, "Paysonbetalning påbörjad för lag " + SUPVM.GetFaltvarde("Lagnamn"));

            var paysonKontaktinfo = new PaysonKontaktViewModel
            {
                SenderEmail     = SUPVM.GetFaltvarde("Epost"),
                SenderFirstName = SUPVM.GetFaltvarde("Förnamn 1"),
                SenderLastName  = SUPVM.GetFaltvarde("Efternamn 1")
            };

            SUPVM.Kontaktinformation = paysonKontaktinfo;

            Session["VM"] = SUPVM;

            return(View(paysonKontaktinfo));
        }
예제 #2
0
        public ActionResult Index(PaysonKontaktViewModel kontaktInfo, string prev)
        {
            if (!string.IsNullOrEmpty(prev))
            {
                return(RedirectToAction("BekraftaRegistrering", "SignMeUp"));
            }

            var SUPVM = Session["VM"] as SignMeUpVM;

            if (ModelState.IsValid)
            {
                try
                {
                    if (SUPVM == null)
                    {
                        return(ShowError(log, "Oväntat fel. Var god försök senare", true, new Exception("Ingen paysonViewModel i Session.")));
                    }

                    SUPVM.Kontaktinformation = kontaktInfo;

                    LogDebug(log, string.Format("Payment: Lagnamn: {0}", SUPVM.GetFaltvarde("Lagnamn")));

                    var evenemang = smuService.HamtaEvenemang(SUPVM.EvenemangsId);
                    var org       = evenemang.Organisation;

                    // Spara temporärt i databasen
                    var reg = smuService.Spara(SUPVM);
                    SUPVM.RegistreringsId = reg.Id;

                    PayData payData = SkapaPaysonPayData(SUPVM, org);

                    var api = new PaysonApi(org.Betalningsmetoder.PaysonUserId, org.Betalningsmetoder.PaysonUserKey, ApplicationId, false);

                    var response = api.MakePayRequest(payData);

                    if (response.Success)
                    {
                        SUPVM.PaysonToken = response.Token;
                        reg.PaysonToken   = response.Token;

                        smuService.UpdateraRegistrering(reg);

                        var forwardUrl = api.GetForwardPayUrl(response.Token);

                        Session["VM"] = SUPVM;

                        return(Redirect(forwardUrl));
                    }

                    Session["VM"] = SUPVM;

                    return(ShowPaymentError("Error when sending payment to payson.", response.NvpContent, SUPVM.EvenemangsId));
                }
                catch (Exception exception)
                {
                    var exc = new Exception("Ett fel inträffade i PaysonController Index metod.", exception);
                    LogError(log, "Exception in Index.", exception);
                    return(ShowError(log, "Oväntat fel vid betalning. Var god försök igen.", true, exc));
                }
            }

            Session["VM"] = SUPVM;
            ViewBag.ev    = SUPVM.EvenemangsNamn;
            return(View(kontaktInfo));
        }