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)

Lokalizacja:
trunk/eCard/eCardMVC/Platnosci
Pliki:
1 dodane
6 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} 
  • trunk/eCard/eCardMVC/Platnosci/Controllers/PlatnoscController.cs

    r950 r951  
    4242            var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault(); 
    4343            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc)); 
    44  
    45             var kwota = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano); 
    46              
    47             var payer = InitPayer(platnosc.ID_faktury); 
    48              
    49             var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc, payer, "", kwota);   
     44             
     45            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc);   
    5046 
    5147            var tablicaPotwierdzenia = _repConfirm.FindItemsByIdFaktury(id1); 
     
    8076            { 
    8177                var kwota = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano);  
    82                 var viewData = InitInvoiceDetailsViewData(platnosc, payer, "", kwota ); 
     78                var viewData = InitInvoiceDetailsViewData(platnosc); 
    8379                return View("Show",viewData);  
    8480            } 
     
    9995            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));             
    10096             
    101             var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc, null, "" , ""); 
     97            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc); 
    10298 
    10399            //sprawdzamy czy dla kombinacji ordernumber i idfaktury istnieje platnosc, 
     
    119115            if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc)); 
    120116 
    121             var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc, null, "", ""); 
     117            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc); 
    122118            return View(invoiceDeatailsViewData); 
    123119        } 
     
    169165        } 
    170166 
    171         private static InvoiceDetailsViewData InitInvoiceDetailsViewData(vPlatnosciEcard platnosc, Payer payer, string status, string brutto ) 
     167        private InvoiceDetailsViewData InitInvoiceDetailsViewData(vPlatnosciEcard platnosc) 
    172168        { 
    173169            var invoiceDeatailsViewData = new InvoiceDetailsViewData(); 
    174170            invoiceDeatailsViewData.vPlatnosciEcard = platnosc; 
    175             invoiceDeatailsViewData.Payer = payer; 
    176             invoiceDeatailsViewData.Status = status; 
    177             invoiceDeatailsViewData.brutto = brutto; 
     171            invoiceDeatailsViewData.Payer = InitPayer(platnosc.ID_faktury); 
     172            invoiceDeatailsViewData.brutto = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano); 
    178173            return invoiceDeatailsViewData; 
    179174        } 
  • trunk/eCard/eCardMVC/Platnosci/Models/FunkcjePlatnosci.cs

    r950 r951  
    66using System.Configuration; 
    77using System.Security.Principal; 
     8using Platnosci.Core.Interface; 
    89 
    910 
     
    1617        private const string USD = "789"; 
    1718        private const string PLN = "985"; 
     19        public const string CARDS = "CARDS";            //obsługa tylko kart płatniczych 
     20        public const string KOD_POLSKA = "616";         //kod kraju Akceptanta - Polska 
     21        public const string KODOWANIE = "ISO-8859-2"; 
    1822 
    1923        public string BruttoToString(decimal? kwota, decimal? waluta, string miano) 
     
    3943            if (!String.IsNullOrEmpty(platnosc.waluta_miano) && platnosc.waluta_miano != "PLN") 
    4044            { 
     45                waluta.Amount = Convert.ToInt32(platnosc.waluta_brutto * 100); 
    4146                switch (platnosc.waluta_miano) 
    4247                { 
     
    118123            return er; 
    119124        } 
     125        public PlatnosciEcard CreateAndAddNewPyment(vPlatnosciEcard platnosc, Waluta waluta, Payer payer, IRepository<PlatnosciEcard> _repPayment, string sessionId) 
     126        { 
     127            var newPayment = new PlatnosciEcard(); 
     128            newPayment.IDFaktury = platnosc.ID_faktury; 
     129            newPayment.ORDERDESCRIPTION = platnosc.Faktura_Numer; 
     130            newPayment.nip = platnosc.nip; 
     131            newPayment.nrZlecenia = ""; 
     132            newPayment.AMOUNT = waluta.Amount; 
     133            newPayment.CURRENCY = waluta.Currency; 
     134            newPayment.SESSIONID = sessionId; 
     135            newPayment.NAME = payer.FirstName; 
     136            newPayment.SURNAME = payer.LastName; 
     137            newPayment.AUTODEPOSIT = true; 
     138            newPayment.LANGUAGE = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToUpper(); 
     139            newPayment.CHARSET = KODOWANIE; 
     140            newPayment.COUNTRY = KOD_POLSKA; 
     141            newPayment.JS = true; 
     142            newPayment.PAYMENTTYPE = CARDS; 
     143            newPayment.Data = DateTime.Now; 
     144            newPayment.Status = null; 
     145            newPayment.Status_data = null; 
    120146 
     147            if (newPayment != null) 
     148            { 
     149                _repPayment.Insert(newPayment); 
     150                return newPayment; 
     151            } 
     152            return null; 
     153        } 
    121154    } 
    122155} 
  • trunk/eCard/eCardMVC/Platnosci/Models/InvoiceDetailsViewData.cs

    r883 r951  
    1313        public vPlatnosciEcard vPlatnosciEcard { get; set; } 
    1414        public Payer Payer {get; set;} 
    15         public string Status { get; set; } 
    1615        public string brutto { get; set; } 
    1716        public string termin { get; set; } 
  • trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj

    r944 r951  
    6060  <ItemGroup> 
    6161    <Compile Include="App_GlobalResources\tlumaczenia.de.designer.cs"> 
    62       <AutoGen>True</AutoGen> 
    63       <DesignTime>True</DesignTime> 
    6462      <DependentUpon>tlumaczenia.de.resx</DependentUpon> 
     63      <DesignTime>True</DesignTime> 
     64      <AutoGen>True</AutoGen> 
    6565    </Compile> 
    6666    <Compile Include="App_GlobalResources\tlumaczenia.fr.designer.cs"> 
     
    9999    <Compile Include="Models\ErrorViewData.cs" /> 
    100100    <Compile Include="Models\InvoiceDetailsViewData.cs" /> 
     101    <Compile Include="Models\eCardData.cs" /> 
    101102    <Compile Include="Properties\AssemblyInfo.cs" /> 
    102103  </ItemGroup> 
     
    162163  </ItemGroup> 
    163164  <ItemGroup> 
     165    <Content Include="App_GlobalResources\tlumaczenia.fr.resx"> 
     166      <Generator>GlobalResourceProxyGenerator</Generator> 
     167      <LastGenOutput>tlumaczenia.fr.designer.cs</LastGenOutput> 
     168      <SubType>Designer</SubType> 
     169    </Content> 
     170  </ItemGroup> 
     171  <ItemGroup> 
    164172    <Content Include="App_GlobalResources\tlumaczenia.de.resx"> 
    165173      <Generator>GlobalResourceProxyGenerator</Generator> 
    166174      <LastGenOutput>tlumaczenia.de.designer.cs</LastGenOutput> 
    167175    </Content> 
    168   </ItemGroup> 
    169   <ItemGroup> 
    170     <Content Include="App_GlobalResources\tlumaczenia.fr.resx"> 
    171       <Generator>GlobalResourceProxyGenerator</Generator> 
    172       <LastGenOutput>tlumaczenia.fr.designer.cs</LastGenOutput> 
    173       <SubType>Designer</SubType> 
    174     </Content> 
    175   </ItemGroup> 
    176   <ItemGroup> 
    177176    <Content Include="App_GlobalResources\tlumaczenia.it.resx"> 
    178177      <Generator>GlobalResourceProxyGenerator</Generator> 
  • trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj.user

    r930 r951  
    11<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    22  <PropertyGroup> 
    3     <ProjectView>ProjectFiles</ProjectView> 
     3    <ProjectView>ShowAllFiles</ProjectView> 
    44  </PropertyGroup> 
    55  <ProjectExtensions>