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); }
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); }