Пример #1
0
        public ActionResult IPN(string orderGuid)
        {
            Request.InputStream.Position = 0;
            var content = new StreamReader(Request.InputStream).ReadToEnd();

            var state = repository.GetPurchaseState(orderGuid);

            if (state != null)
            {
                var api      = new PaysonApi(state.UserId, state.UserKey, ApplicationId, true);
                var response = api.MakeValidateIpnContentRequest(content);
                if (response.Success)
                {
                    var status = response.ProcessedIpnMessage.PaymentStatus.HasValue
                                     ? response.ProcessedIpnMessage.PaymentStatus.ToString()
                                     : "N/A";
                    state.Updates[DateTime.Now] = "IPN: " + status;
                    state.LatestStatus          = status;
                }
                else
                {
                    state.Updates[DateTime.Now] = "IPN: IPN Failure";
                    state.LatestStatus          = "Failure";
                }
            }

            return(new EmptyResult());
        }
Пример #2
0
        public ActionResult IPN(int?id)
        {
            var host = Request.Url.Host;

            if (!id.HasValue)
            {
                LogError(log, "IPN, id har inget värde");
                SendMail.SendErrorMessage("IPN, id har inget värde", host);
                return(new EmptyResult());
            }

            LogDebug(log, string.Format("IPN id: {0}", id));

            try
            {
                var registrering = smuService.GetRegistrering(id.Value, true);

                if (registrering != null)
                {
                    Request.InputStream.Position = 0;
                    var content = new StreamReader(Request.InputStream).ReadToEnd();

                    var org = smuService.HamtaOrganisation(registrering.Evenemang.OrganisationsId);
                    var api = new PaysonApi(org.Betalningsmetoder.PaysonUserId, org.Betalningsmetoder.PaysonUserKey, ApplicationId, false);

                    var response   = api.MakeValidateIpnContentRequest(content);
                    var statusText = response.ProcessedIpnMessage.PaymentStatus.HasValue
                                        ? response.ProcessedIpnMessage.PaymentStatus.ToString()
                                        : "N/A";
                    var status = response.ProcessedIpnMessage.PaymentStatus;

                    LogDebug(log, string.Format("IPN message, status: {0}. regId: {1} success: {2}",
                                                statusText, id, response.Success));

                    if (status == PaymentStatus.Completed)
                    {
                        if (!registrering.HarBetalt)
                        {
                            smuService.HarBetalt(registrering);
                            SkickaRegMail(registrering);
                            Session["VM"] = null;
                        }
                        else
                        {
                            LogDebug(log, "Registreringen var redan markerad som betald. Skickar inget meddelande.");
                        }
                    }
                    else
                    {
                        SendMail.SendErrorMessage("IPN message for non complete transaction. regId: " + id + ". Status: " + statusText, host);
                        LogDebug(log, string.Format("IPN message for non complete transaction. regId: {0}. Status: {1}", id, statusText));
                    }
                }
                else
                {
                    LogError(log, string.Format("Got IPN with wrong regId as query parameter: {0}", id));
                    SendMail.SendErrorMessage("Got IPN with wrong regId as query parameter: " + id, host);
                }
            }
            catch (Exception exc)
            {
                LogError(log, "Ett fel inträffade i IPN metoden.", exc);
                SendMail.SendErrorMessage(string.Format("Ett fel inträffade i IPN metoden. Exception: {0}", exc.ToString()), host);
            }

            return(new EmptyResult());
        }