Pokaż
Ignoruj:
Data:
2009-12-07 13:04:16 (16 years ago)
Autor:
marek
Opis:

re #215 - drobny refactoring

Pliki:
1 zmodyfikowane

Legenda:

Bez zmian
Dodane
Usunięte
  • trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs

    r927 r933  
    11using System; 
    2 using System.Text; 
    32using System.Linq; 
    4 using System.Web; 
    5 using System.Web.UI; 
    6  
    7 using System.Web.UI.WebControls; 
    8 using System.Web.UI.WebControls.WebParts; 
    9 using System.Web.UI.HtmlControls; 
    10 using System.Web.Configuration; 
    113using System.Web.Mvc; 
    12 using System.Web.Mvc.Ajax; 
    13 using System.Collections.Generic; 
    144using Platnosci.Models; 
    155using Platnosci.Core.Linq; 
     
    3020        public const string KODOWANIE = "ISO-8859-2"; 
    3121        public const string HASH_ERROR_INFO = "payment not exist"; 
    32         private string merchantId; 
     22        private string _merchantId; 
     23        private string _merchantPassword; 
    3324 
    3425        private readonly IRepository<vPlatnosciEcard> _repVPayment; 
    3526        private readonly IRepository<PlatnosciEcard> _repPayment;  
    36         private FunkcjePlatnosci _func; 
    37         private ITranslateManager _t; 
     27        private readonly FunkcjePlatnosci _funkcjePlatnosci; 
     28        private readonly ITranslateManager _translateManager; 
    3829 
    3930        public MerchantController() 
     
    4132            _repVPayment = new Repository<vPlatnosciEcard>(new DataContext1()); 
    4233            _repPayment = new Repository<PlatnosciEcard>(new DataContext1()); 
    43             _func = new FunkcjePlatnosci(); 
    44             _t = new Translation(); 
     34            _funkcjePlatnosci = new FunkcjePlatnosci(); 
     35            _translateManager = new Translation(); 
    4536        } 
     37 
    4638        public ActionResult Merchant(Payer payer, string language) 
    4739        { 
    4840            System.Diagnostics.Debug.WriteLine("MerchantController:Merchant:" + language); 
    49             language = _func.setLanguage(language); 
     41            language = _funkcjePlatnosci.setLanguage(language); 
    5042 
    51             int id1 = Convert.ToInt32(payer.Id_faktury); 
    52             vPlatnosciEcard platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault(); 
     43            var id1 = Convert.ToInt32(payer.Id_faktury); 
     44            var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault(); 
    5345                  
    5446            if (platnosc == null) 
    5547            { 
    56                 ErrorViewData errorViewData = _func.InitErrorViewData(_t.Translate("tlumaczenia", "brakdanych")); 
    57                 return View("Error1", errorViewData); 
    58             } 
    59             else if (!_func.UserIdentity(platnosc, ControllerContext.HttpContext.User.Identity.Name)) 
    60             { 
    61                 ErrorViewData errorViewData = _func.InitErrorViewData(_t.Translate("tlumaczenia", "weryfikacja")); 
     48                ErrorViewData errorViewData = _funkcjePlatnosci.InitErrorViewData(_translateManager.Translate("tlumaczenia", "brakdanych")); 
    6249                return View("Error1", errorViewData); 
    6350            } 
    6451             
    65             Waluta waluta = _func.setAmount(platnosc); 
    66             var newPayment = InitNewPayment(id1, platnosc, waluta, payer );             
    67  
    68             string systemKs = platnosc.SystemKsiegowyId.ToString(); 
    69  
    70             bool createPayment = AddNewPayment(newPayment); 
    71             if (createPayment == false) 
     52            if (!_funkcjePlatnosci.UserIdentity(platnosc, ControllerContext.HttpContext.User.Identity.Name)) 
    7253            { 
    73                 ErrorViewData errorViewData = _func.InitErrorViewData(_t.Translate("tlumaczenia", "error_hash")); 
    74                 errorViewData.idfaktury = payer.Id_faktury; 
     54                ErrorViewData errorViewData = _funkcjePlatnosci.InitErrorViewData(_translateManager.Translate("tlumaczenia", "weryfikacja")); 
    7555                return View("Error1", errorViewData); 
    7656            } 
    7757 
    78             string hash = GetHash(newPayment, systemKs); 
    79             hash = hash.Replace("\n",""); 
    80             if (hash == BAD_HASH || hash == "" || hash == HASH_ERROR_INFO) 
     58            var waluta = _funkcjePlatnosci.setAmount(platnosc); 
     59            var newPayment = InitNewPayment(id1, platnosc, waluta, payer );             
     60 
     61            var systemKs = platnosc.SystemKsiegowyId.ToString(); 
     62 
     63            var createPayment = AddNewPayment(newPayment); 
     64             
     65            if (createPayment == false) 
    8166            { 
    82                 ErrorViewData errorViewData = _func.InitErrorViewData(_t.Translate("tlumaczenia", "error_hash")); 
    83                 errorViewData.idfaktury = payer.Id_faktury; 
     67                ErrorViewData errorViewData = _funkcjePlatnosci.InitErrorViewData(_translateManager.Translate("tlumaczenia", "error_hash")); 
     68                errorViewData.InvoiceId = payer.Id_faktury; 
    8469                return View("Error1", errorViewData); 
    8570            } 
    8671 
    87             if (systemKs == "1") merchantId = "170906000"; 
    88                 else merchantId = "171485000"; 
     72            _merchantId = systemKs == "1" ? "171485000" : "170906000"; 
     73            _merchantPassword = systemKs == "1" ? "ashSeth2" : "JaYpqfs0"; 
     74 
     75            var hash = GetHash(newPayment, _merchantId, _merchantPassword); 
     76            hash = hash.Replace("\n",""); 
     77             
     78            if (hash == BAD_HASH || hash == "" || hash == HASH_ERROR_INFO) 
     79            { 
     80                ErrorViewData errorViewData = _funkcjePlatnosci.InitErrorViewData(_translateManager.Translate("tlumaczenia", "error_hash")); 
     81                errorViewData.InvoiceId = payer.Id_faktury; 
     82                return View("Error1", errorViewData); 
     83            } 
    8984 
    9085            //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia 
    91             int orderek = 0; 
    92             orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data); 
     86            var orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data); 
    9387 
    94             string LinkFail = ConfigurationManager.AppSettings["Strona"]; 
    95             LinkFail += "/" + language + ConfigurationManager.AppSettings["LinkFail"]; 
    96             LinkFail += "/" + newPayment.IDFaktury + "?o=" + orderek; 
     88            var linkFail = ConfigurationManager.AppSettings["Strona"]; 
     89            linkFail += "/" + language + ConfigurationManager.AppSettings["LinkFail"]; 
     90            linkFail += "/" + newPayment.IDFaktury + "?o=" + orderek; 
    9791 
    98             string LinkOk = ConfigurationManager.AppSettings["Strona"]; 
    99             LinkOk += "/" + language + ConfigurationManager.AppSettings["LinkOk"]; 
    100             LinkOk += "/" + newPayment.IDFaktury + "?o=" + orderek; ; 
    101  
    102             //merchantid dla srodowiska testowego 
    103             merchantId = "171485000"; 
    104             wyslij(newPayment, hash, merchantId, LinkFail, LinkOk); 
     92            var linkOk = ConfigurationManager.AppSettings["Strona"]; 
     93            linkOk += "/" + language + ConfigurationManager.AppSettings["LinkOk"]; 
     94            linkOk += "/" + newPayment.IDFaktury + "?o=" + orderek; 
     95             
     96            SendRequest(newPayment, hash, _merchantId, linkFail, linkOk); 
    10597            return new EmptyResult();           
    10698        } 
    10799        private PlatnosciEcard InitNewPayment(int id, vPlatnosciEcard platnosc, Waluta waluta, Payer payer) 
    108100        { 
    109             PlatnosciEcard newPayment = new PlatnosciEcard(); 
     101            var newPayment = new PlatnosciEcard(); 
    110102            newPayment.IDFaktury = id; 
    111103            newPayment.ORDERDESCRIPTION = platnosc.Faktura_Numer; 
     
    128120            return newPayment; 
    129121        } 
     122         
    130123        private bool AddNewPayment(PlatnosciEcard platnosc) 
    131124        { 
     
    137130            return false; 
    138131        } 
    139         private string GetHash(PlatnosciEcard p, string ks) 
     132 
     133        private string GetHash(PlatnosciEcard p, string merchantId, string merchantPassword) 
    140134        { 
    141             string strResponse; 
    142             PlatnosciEcard platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == p.ORDERDESCRIPTION && i.IDFaktury == p.IDFaktury && i.Data == p.Data).First(); 
     135            var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == p.ORDERDESCRIPTION && i.IDFaktury == p.IDFaktury && i.Data == p.Data).First(); 
    143136 
    144137            if (platnosc == null) return HASH_ERROR_INFO; 
    145138 
    146             string adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER; 
    147             HttpWebRequest req = (HttpWebRequest)WebRequest.Create(adres); 
    148             string dane = "&orderDescription=&amount=" + platnosc.AMOUNT; 
     139            var adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER; 
     140            var req = (HttpWebRequest)WebRequest.Create(adres); 
     141            var dane = "&orderDescription=&amount=" + platnosc.AMOUNT; 
    149142            dane += "&currency=" + platnosc.CURRENCY; 
    150             dane += "&merchantId=171485000&password=ashSeth2"; 
     143            dane += string.Format("&merchantId={0}&password={1}", merchantId, merchantPassword); 
    151144 
    152           //  if (ks == "1") dane += "&merchantId=171485000&password=ashSeth2"; 
    153             //    else dane += "&merchantId=170906000&password=JaYpqfs0"; 
    154  
    155             byte[] bdata = System.Text.ASCIIEncoding.ASCII.GetBytes(dane); 
     145            var bdata = System.Text.Encoding.ASCII.GetBytes(dane); 
    156146            req.Method = "POST"; 
    157147            req.ContentType = "application/x-www-form-urlencoded"; 
    158148            req.ContentLength = dane.Length; 
    159149 
    160             Stream reqStream = req.GetRequestStream(); 
     150            var reqStream = req.GetRequestStream(); 
    161151            reqStream.Write(bdata, 0, bdata.Length); 
    162152            reqStream.Close(); 
    163153 
    164             StreamReader streamResponse = new StreamReader(req.GetResponse().GetResponseStream()); 
    165             strResponse = streamResponse.ReadToEnd(); 
     154            var streamResponse = new StreamReader(req.GetResponse().GetResponseStream()); 
     155            string strResponse = streamResponse.ReadToEnd(); 
    166156            streamResponse.Close(); 
    167157                      
    168158            return strResponse; 
    169159        } 
    170         private void wyslij(PlatnosciEcard m, string hash, string merchantid, string linkok, string linkfail) 
     160 
     161        private void SendRequest(PlatnosciEcard m, string hash, string merchantid, string linkok, string linkfail) 
    171162        { 
    172             //string adres = "https://pay.ecard.pl/payment/PS?ORDERDESCRIPTION=" + m.ORDERDESCRIPTION; 
    173              
    174             string adres = "https://pay.ecard.pl/servlet/PSTEST?ORDERDESCRIPTION=" + m.ORDERDESCRIPTION; 
    175             HttpWebRequest req = (HttpWebRequest)WebRequest.Create(adres); 
    176             string dane = "&AMOUNT=" + m.AMOUNT + "&CURRENCY=" + m.CURRENCY + "&ORDERNUMBER=" + m.ORDERNUMBER; 
     163            var adres = ConfigurationManager.AppSettings["eCard.Url"] + "?ORDERDESCRIPTION=" + m.ORDERDESCRIPTION; 
     164 
     165            var dane = "&AMOUNT=" + m.AMOUNT + "&CURRENCY=" + m.CURRENCY + "&ORDERNUMBER=" + m.ORDERNUMBER; 
    177166            dane += "&NAME=" + m.NAME + "&SURNAME=" + m.SURNAME + "&LANGUAGE=" + m.LANGUAGE + "&CHARSET=ISO-8859-2"; 
    178167            dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + hash + "&MERCHANTID=" + merchantid + "&AUTODEPOSIT=" + m.AUTODEPOSIT;