public ActionResult Cancelled(int?id)
        {
            if (!id.HasValue)
            {
                LogError(log, string.Format("Felaktigt regId: {0} i cancel.", id));
                return(ShowError(log, "Kunde inte återskapa dina uppgifter.", true, new Exception("Felaktigt regId: " + id + " vid cancel.")));
            }

            var registrering = smuService.GetRegistrering(id.Value, false);

            if (registrering == null)
            {
                LogError(log, "Payson betalning avbruten och ingen registrering i Session hittades.");
                return(ShowError(log, "Betalningen avbröts av okänd anledning", true, new Exception("Payson betalning avbruten och ingen registrering i Session hittades.")));
            }

            var org = smuService.HamtaOrganisation(registrering.Evenemang.OrganisationsId);

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

            var response = api.MakePaymentDetailsRequest(new PaymentDetailsData(registrering.PaysonToken));

            var evenemangsId = registrering.EvenemangsId;

            // Ta bort temporär registrering
            smuService.TabortRegistrering(registrering);

            Session["VM"] = null;

            return(ShowPaymentError("Betalningen avbruten.", response.NvpContent, evenemangsId.Value));
        }
Beispiel #2
0
        public ActionResult Returned(string orderGuid)
        {
            var state = repository.GetPurchaseState(orderGuid);

            if (state != null)
            {
                var api      = new PaysonApi(state.UserId, state.UserKey, ApplicationId, true);
                var response = api.MakePaymentDetailsRequest(new PaymentDetailsData(state.Token));

                if (response.Success)
                {
                    var status = response.PaymentDetails.PaymentStatus.HasValue
                                     ? response.PaymentDetails.PaymentStatus.ToString()
                                     : "N/A";
                    state.Updates[DateTime.Now] = "ReturnUrl: " + status;
                    state.LatestStatus          = status;
                }
                else
                {
                    ViewBag.Errors = response.ErrorMessages;
                    return(View("Index", GetDefaultPayViewModel()));
                }
            }

            return(View("Result", state));
        }
        /// <summary>
        /// Metod som kallas när betalningen är klar
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Returned(int?id)
        {
            LogDebug(log, string.Format("Returned id: {0}", id));

            if (!id.HasValue)
            {
                LogError(log, string.Format("Felaktigt angivet regId: {0}", id));
                return(ShowError(log, "Ett fel inträffade när betalningen slutfördes. Kontrollera i startlistan om er registrering genomförts", true, new Exception("Felaktigt angivet regId: " + id)));
            }

            var registration = smuService.GetRegistrering(id.Value, true);

            if (registration == null)
            {
                LogError(log, string.Format("Ingen registration hittad med id: {0} i Returned.", id));
                return(ShowError(log, "Ett fel inträffade när betalningen slutfördes. Kontrollera i startlistan om er registrering genomförts", true, new Exception("Ingen registration hittad med  id: " + id + " i Returned.")));
            }

            LogDebug(log, string.Format("Returned. Lagnamn: {0}", registration.Lagnamn));

            // If no payment message has been sent (IPN)
            if (!registration.HarBetalt)
            {
                var org = smuService.HamtaOrganisation(registration.Evenemang.OrganisationsId);

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

                var response = api.MakePaymentDetailsRequest(new PaymentDetailsData(registration.PaysonToken));

                if (response.Success && (response.PaymentDetails.PaymentStatus == PaymentStatus.Completed ||
                                         response.PaymentDetails.PaymentStatus == PaymentStatus.Pending))
                {
                    if (!registration.HarBetalt)
                    {
                        smuService.HarBetalt(registration);
                        SkickaRegMail(registration);
                        Session["VM"] = null;
                    }
                }
                else
                {
                    LogDebug(log, string.Format("Deleting temp-registration with id: {0}", id));

                    var evenemangsId = registration.EvenemangsId;

                    // Remove the temporary registration
                    smuService.TabortRegistrering(registration);

                    return(ShowPaymentError("Error when payment returned.", response.NvpContent, evenemangsId.Value));
                }
            }

            ViewBag.ev = registration.Evenemang.Namn;
            return(RedirectToAction("BekraftelseBetalning", "signmeup", new { id = id }));
        }