Pokaż
Ignoruj:
Data:
2009-12-14 16:03:54 (16 years ago)
Autor:
alina
Opis:

re #215 dodanie testów, mała przebudowa akcji Merchant (wydzielenie funkcji)

Pliki:
1 zmodyfikowane

Legenda:

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

    r950 r951  
    1515    public class MerchantController : Controller 
    1616    { 
    17         public const string BAD_HASH = "zlyHash";       //b³êdne has³o - odpowiedŸ z eCard 
    18         public const string CARDS = "CARDS";            //obs³uga tylko kart p³atniczych 
    19         public const string KOD_POLSKA = "616";         //kod kraju Akceptanta - Polska 
    20         public const string KODOWANIE = "ISO-8859-2"; 
     17        public const string BAD_HASH = "zlyHash";                  //b³êdne has³o - odpowiedŸ z eCard 
    2118        public const string HASH_ERROR_INFO = "payment not exist"; 
    2219 
     
    2421        private readonly IRepository<PlatnosciEcard> _repPayment;  
    2522        private readonly FunkcjePlatnosci _funkcjePlatnosci; 
     23        private readonly eCardData _eCardData; 
    2624        private readonly ITranslateManager _translateManager; 
    2725 
     
    3230            _funkcjePlatnosci = new FunkcjePlatnosci(); 
    3331            _translateManager = new Translation(); 
     32            _eCardData = new eCardData(_repPayment); 
     33        } 
     34        public MerchantController(IRepository<vPlatnosciEcard> repVPayment, IRepository<PlatnosciEcard> repPayment, ITranslateManager translate, eCardData ecardData) 
     35        { 
     36            _repVPayment = repVPayment; 
     37            _repPayment = repPayment; 
     38            _funkcjePlatnosci = new FunkcjePlatnosci(); 
     39            _translateManager = translate; 
     40            _eCardData = ecardData; 
    3441        } 
    3542 
    3643        public ActionResult Merchant(Payer payer, string language) 
    3744        { 
    38             System.Diagnostics.Debug.WriteLine("MerchantController:Merchant:" + language); 
    3945            language = _funkcjePlatnosci.SetLanguage(language); 
    4046 
     
    4652             
    4753            if (!_funkcjePlatnosci.UserIdentity(platnosc, ControllerContext.HttpContext.User.Identity.Name)) 
    48                 return View("Error1", IsError("weryfikacja", 0));            
     54                return View("Error1", IsError("weryfikacja", 0)); 
    4955 
    50             var waluta = _funkcjePlatnosci.SetAmount(platnosc); 
    51             var newPayment = InitNewPayment(id1, platnosc, waluta, payer );             
    52  
    53             var systemKs = platnosc.SystemKsiegowyId.ToString(); 
    54             if (ConfigurationManager.AppSettings["wersja"] == "TEST") 
    55                 systemKs = "2"; 
    56  
    57             var createPayment = AddNewPayment(newPayment); 
     56            var merchant = _eCardData.CreateMerchantData(platnosc, payer, language, Session.SessionID); 
    5857             
    59             if (createPayment == false) 
     58            if (merchant != null) merchant.IsValid(); 
     59             
     60            if (merchant == null || (merchant != null && (!String.IsNullOrEmpty(merchant.Error)))) 
    6061                return View("Error1", IsError("error_hash", payer.Id_faktury)); 
    61  
    62             var merchant = getMerchantInfo(systemKs); 
    63             
    64             var hash = GetHash(newPayment, merchant); 
    65             hash = hash.Replace("\n",""); 
    66            
    67             if (hash == BAD_HASH || hash == "" || hash == HASH_ERROR_INFO) 
    68                 return View("Error1", IsError("error_hash", payer.Id_faktury)); 
    69  
    70             //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia 
    71             var orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data); 
    72  
    73             var linkFail = ConfigurationManager.AppSettings["Strona"]; 
    74             linkFail += "/" + language + ConfigurationManager.AppSettings["LinkFail"]; 
    75             linkFail += "/" + newPayment.IDFaktury + "?o=" + orderek; 
    76  
    77             var linkOk = ConfigurationManager.AppSettings["Strona"]; 
    78             linkOk += "/" + language + ConfigurationManager.AppSettings["LinkOk"]; 
    79             linkOk += "/" + newPayment.IDFaktury + "?o=" + orderek; 
    80  
    81             if (merchant != null && !String.IsNullOrEmpty(merchant.Id)) 
    82                 SendRequest(newPayment, hash, merchant, linkFail, linkOk); 
    83             else  
    84                 return View("Error1", IsError("error_hash", payer.Id_faktury)); 
    85  
     62             
     63            var adres = _eCardData.GetUrl(merchant); 
     64            Response.Redirect(adres);            
    8665            return new EmptyResult();           
    87         }         
    88         private PlatnosciEcard InitNewPayment(int id, vPlatnosciEcard platnosc, Waluta waluta, Payer payer) 
    89         { 
    90             var newPayment = new PlatnosciEcard(); 
    91             newPayment.IDFaktury = id; 
    92             newPayment.ORDERDESCRIPTION = platnosc.Faktura_Numer; 
    93             newPayment.nip = platnosc.nip; 
    94             newPayment.nrZlecenia = ""; 
    95             newPayment.AMOUNT = waluta.Amount; 
    96             newPayment.CURRENCY = waluta.Currency; 
    97             newPayment.SESSIONID = Session.SessionID; 
    98             newPayment.NAME = payer.FirstName; 
    99             newPayment.SURNAME = payer.LastName; 
    100             newPayment.AUTODEPOSIT = true; 
    101             newPayment.LANGUAGE = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToUpper();  
    102             newPayment.CHARSET = KODOWANIE; 
    103             newPayment.COUNTRY = KOD_POLSKA; 
    104             newPayment.JS = true; 
    105             newPayment.PAYMENTTYPE = CARDS; 
    106             newPayment.Data = DateTime.Now; 
    107             newPayment.Status = null; 
    108             newPayment.Status_data = null; 
    109             return newPayment; 
    110         } 
    111          
    112         private bool AddNewPayment(PlatnosciEcard platnosc) 
    113         { 
    114             if (platnosc != null) 
    115             {                 
    116                 _repPayment.Insert(platnosc); 
    117                 return true; 
    118             } 
    119             return false; 
    120         } 
    121  
    122         private string GetHash(PlatnosciEcard p, Merchant merchant) 
    123         { 
    124             var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == p.ORDERDESCRIPTION && i.IDFaktury == p.IDFaktury && i.Data == p.Data).First(); 
    125  
    126             if (platnosc == null || merchant == null) return HASH_ERROR_INFO; 
    127  
    128             var adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER; 
    129             var req = (HttpWebRequest)WebRequest.Create(adres); 
    130             var dane = "&orderDescription=&amount=" + platnosc.AMOUNT; 
    131             dane += "&currency=" + platnosc.CURRENCY; 
    132             dane += string.Format("&merchantId={0}&password={1}", merchant.Id, merchant.Password); 
    133  
    134             var bdata = System.Text.Encoding.ASCII.GetBytes(dane); 
    135             req.Method = "POST"; 
    136             req.ContentType = "application/x-www-form-urlencoded"; 
    137             req.ContentLength = dane.Length; 
    138  
    139             var reqStream = req.GetRequestStream(); 
    140             reqStream.Write(bdata, 0, bdata.Length); 
    141             reqStream.Close(); 
    142  
    143             var streamResponse = new StreamReader(req.GetResponse().GetResponseStream()); 
    144             string strResponse = streamResponse.ReadToEnd(); 
    145             streamResponse.Close(); 
    146                       
    147             return strResponse; 
    148         } 
    149  
    150         private void SendRequest(PlatnosciEcard m, string hash, Merchant merchant, string linkok, string linkfail) 
    151         { 
    152             var adres = ConfigurationManager.AppSettings["eCard.Url"] + "?ORDERDESCRIPTION=" + m.ORDERDESCRIPTION; 
    153  
    154             var dane = "&AMOUNT=" + m.AMOUNT + "&CURRENCY=" + m.CURRENCY + "&ORDERNUMBER=" + m.ORDERNUMBER; 
    155             dane += "&NAME=" + m.NAME + "&SURNAME=" + m.SURNAME + "&LANGUAGE=" + m.LANGUAGE + "&CHARSET=ISO-8859-2"; 
    156             dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + hash + "&MERCHANTID=" + merchant.Id + "&AUTODEPOSIT=" + m.AUTODEPOSIT; 
    157             dane += "&LINKFAIL=" + linkfail + "&LINKOK=" + linkok + "&SESSIONID=" + m.SESSIONID; 
    158             Response.Redirect(adres + dane); 
    159         } 
     66        }          
    16067        public ErrorViewData IsError(string errortxt, int idFaktury) 
    16168        { 
     
    16673            else if (errortxt == "error_hash") 
    16774                errortxt = _translateManager.Translate("tlumaczenia", "error_hash"); 
     75            else if (errortxt == "error_hash") 
     76                errortxt = _translateManager.Translate("tlumaczenia", "error_hash"); 
    16877 
    16978            return _funkcjePlatnosci.InitErrorViewData(errortxt, idFaktury); 
    17079        } 
    171         public Merchant getMerchantInfo( string systemKs) 
    172         { 
    173             var merchant = new Merchant(); 
    174             if (systemKs == "2") 
    175             { 
    176                 merchant.Id = "171485000"; 
    177                 merchant.Password = "ashSeth2"; 
    178             } 
    179             else 
    180             { 
    181                 merchant.Id = "170906000"; 
    182                 merchant.Password = "JaYpqfs0"; 
    183             }               
    184             return merchant; 
    185         } 
     80         
    18681    } 
    18782}