Пример #1
0
        public override void Confirm()
        {
            var args = new ConfirmEventArgs();
            args.PaymentData = base.PaymentData;
            args.Success = true;
            args.TotalPaid = 0;

            string orderRef = HttpContext.Current.Request.Form["item_number"];
            var man = new OrdersManager<Order, OrdersFilter, OrderRow, OrderRowsFilter>(); //new OM();
            args.OrderToPay = man.GetByOrderRef(orderRef);

            if (args.OrderToPay.Id == 0)
            {
                args.Success = false;
                args.MessageName = "InvalidOrderRef";

                OnPaymentConfirmed(args);
                return;
            }

            args.MessageName = "OK";
            OnPaymentConfirmed(args);
        }
Пример #2
0
        public override void Confirm()
        {
            var args = new ConfirmEventArgs();
            args.PaymentData = base.PaymentData;
            args.Success = true;

            string orderRef = HttpContext.Current.Request.Form["item_number"];
            var man = new OrdersManager<Order, OrdersFilter, OrderRow, OrderRowsFilter>(); //new OM();
            args.OrderToPay = man.GetByOrderRef(orderRef);

            if (args.OrderToPay.Id == 0)
            {
                args.Success = false;
                args.MessageName = "InvalidOrderRef";

                OnPaymentConfirmed(args);
                return;
            }

            string strResponse = "";
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(base.PaymentData.PaySubmitUrl);
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                byte[] param = HttpContext.Current.Request.BinaryRead(HttpContext.Current.Request.ContentLength);
                string strRequest = Encoding.ASCII.GetString(param);
                strRequest += "&cmd=_notify-validate";
                req.ContentLength = strRequest.Length;

                StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                streamOut.Write(strRequest);
                streamOut.Close();
                StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
                strResponse = streamIn.ReadToEnd();
                streamIn.Close();
            }
            catch (Exception ex)
            {
                args.MessageName = "RequestErr";
                args.Success = false;
                args.Exception = ex;

                OnPaymentConfirmed(args);
                return;
            }

            if (strResponse == "VERIFIED")
            {

                var allowedStatus = new List<string>();
                allowedStatus.Add("completed");
                if (base.PaymentData.IsDebug)
                    allowedStatus.Add("pending");

                args.TotalPaid = 0;
                Decimal.TryParse(
                    HttpContext.Current.Request.Form["mc_gross"].Replace(',', '.'),
                    NumberStyles.Any,
                    new CultureInfo("en-US"),
                    out args.TotalPaid);

                string payment_status = HttpContext.Current.Request.Form["payment_status"].ToString();
                string receiver_email = HttpContext.Current.Request.Form["receiver_email"].ToString();

                if (!allowedStatus.Contains(payment_status.ToLower()))
                {
                    args.Success = false;
                    args.MessageName = "InvalidPaymentStatus";

                    OnPaymentConfirmed(args);
                    return;
                }

                if (base.PaymentData.PayAccount != receiver_email)
                {
                    args.Success = false;
                    args.MessageName = "InvalidReceiverEmail";

                    OnPaymentConfirmed(args);
                    return;
                }

            }
            else
            {
                args.Success = false;
                args.MessageName = "InvalidRespone:["+ strResponse +"] ";

                OnPaymentConfirmed(args);
                return;
            }

            args.MessageName = "OK";
            OnPaymentConfirmed(args);
        }