Index: trunk/eCard/eCardMVC/Platnosci.Core/Linq/Merchant.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci.Core/Linq/Merchant.cs (revision 949)
+++ trunk/eCard/eCardMVC/Platnosci.Core/Linq/Merchant.cs (revision 951)
@@ -1,8 +1,40 @@
-﻿namespace Platnosci.Core.Linq
+﻿using System;
+namespace Platnosci.Core.Linq
 {
     public class Merchant
     {
+        public const string BAD_HASH = "zlyHash";                  //błędne hasło - odpowiedź z eCard
+        public const string HASH_ERROR_INFO = "payment not exist";
+
         public string Id { get; set; }
         public string Password { get; set; }
+        public PlatnosciEcard Payment { get; set; }
+        public string SystemKsiegowy { get; set; }
+        public string Hash { get; set; }
+        public string LinkFail { get; set; }
+        public string LinkOk { get; set; }
+        public string Error {get; set;}
+        
+        public void IsValid()
+        {
+            if (Payment == null) Error = "payment";
+            else if (Payment != null)
+            {
+                if (Payment.AMOUNT == null) Error = "amount";
+                else if (Payment.AUTODEPOSIT != true) Error = "autodeposit";
+                else if (String.IsNullOrEmpty(Payment.ORDERDESCRIPTION)) Error = "orderdescription";
+                else if (String.IsNullOrEmpty(Payment.CURRENCY)) Error = "currency";
+                else if (String.IsNullOrEmpty(Payment.NAME)) Error = "name";
+                else if (String.IsNullOrEmpty(Payment.SURNAME)) Error = "surname";
+                else if (String.IsNullOrEmpty(Payment.LANGUAGE)) Error = "language";
+                else if (Payment.ORDERNUMBER < 1) Error = "ordernumber";
+            }
+            else if (Hash == BAD_HASH || Hash == "" || Hash == HASH_ERROR_INFO) Error = "hash";
+            else if (String.IsNullOrEmpty(Id)) Error = "id";
+            else if (String.IsNullOrEmpty(Password)) Error = "password";
+            else if (String.IsNullOrEmpty(Hash)) Error = "hash";
+            else if (String.IsNullOrEmpty(LinkFail)) Error = "linkfail";
+            else if (String.IsNullOrEmpty(LinkOk)) Error = "linkok";
+        }
     }
 }
Index: trunk/eCard/eCardMVC/Platnosci/Models/FunkcjePlatnosci.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Models/FunkcjePlatnosci.cs (revision 950)
+++ trunk/eCard/eCardMVC/Platnosci/Models/FunkcjePlatnosci.cs (revision 951)
@@ -6,4 +6,5 @@
 using System.Configuration;
 using System.Security.Principal;
+using Platnosci.Core.Interface;
 
 
@@ -16,4 +17,7 @@
         private const string USD = "789";
         private const string PLN = "985";
+        public const string CARDS = "CARDS";            //obsługa tylko kart płatniczych
+        public const string KOD_POLSKA = "616";         //kod kraju Akceptanta - Polska
+        public const string KODOWANIE = "ISO-8859-2";
 
         public string BruttoToString(decimal? kwota, decimal? waluta, string miano)
@@ -39,4 +43,5 @@
             if (!String.IsNullOrEmpty(platnosc.waluta_miano) && platnosc.waluta_miano != "PLN")
             {
+                waluta.Amount = Convert.ToInt32(platnosc.waluta_brutto * 100);
                 switch (platnosc.waluta_miano)
                 {
@@ -118,5 +123,33 @@
             return er;
         }
+        public PlatnosciEcard CreateAndAddNewPyment(vPlatnosciEcard platnosc, Waluta waluta, Payer payer, IRepository<PlatnosciEcard> _repPayment, string sessionId)
+        {
+            var newPayment = new PlatnosciEcard();
+            newPayment.IDFaktury = platnosc.ID_faktury;
+            newPayment.ORDERDESCRIPTION = platnosc.Faktura_Numer;
+            newPayment.nip = platnosc.nip;
+            newPayment.nrZlecenia = "";
+            newPayment.AMOUNT = waluta.Amount;
+            newPayment.CURRENCY = waluta.Currency;
+            newPayment.SESSIONID = sessionId;
+            newPayment.NAME = payer.FirstName;
+            newPayment.SURNAME = payer.LastName;
+            newPayment.AUTODEPOSIT = true;
+            newPayment.LANGUAGE = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToUpper();
+            newPayment.CHARSET = KODOWANIE;
+            newPayment.COUNTRY = KOD_POLSKA;
+            newPayment.JS = true;
+            newPayment.PAYMENTTYPE = CARDS;
+            newPayment.Data = DateTime.Now;
+            newPayment.Status = null;
+            newPayment.Status_data = null;
 
+            if (newPayment != null)
+            {
+                _repPayment.Insert(newPayment);
+                return newPayment;
+            }
+            return null;
+        }
     }
 }
Index: trunk/eCard/eCardMVC/Platnosci/Models/InvoiceDetailsViewData.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Models/InvoiceDetailsViewData.cs (revision 883)
+++ trunk/eCard/eCardMVC/Platnosci/Models/InvoiceDetailsViewData.cs (revision 951)
@@ -13,5 +13,4 @@
         public vPlatnosciEcard vPlatnosciEcard { get; set; }
         public Payer Payer {get; set;}
-        public string Status { get; set; }
         public string brutto { get; set; }
         public string termin { get; set; }
Index: trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs (revision 951)
+++ trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs (revision 951)
@@ -0,0 +1,118 @@
+﻿using System;
+using System.Web;
+using Platnosci.Core.Linq;
+using System.Configuration;
+using Platnosci.Core.Interface;
+using System.Net;
+using System.IO;
+using System.Linq;
+using System.Web.Mvc;
+
+namespace Platnosci.Models
+{
+    public class eCardData
+    {
+        public const string HASH_ERROR_INFO = "payment not exist";
+        private readonly FunkcjePlatnosci _funkcjePlatnosci;
+        private IRepository<PlatnosciEcard> _repPayment;
+        
+        public eCardData(IRepository<PlatnosciEcard> repPayment)
+        {
+            _repPayment = repPayment;
+            _funkcjePlatnosci = new FunkcjePlatnosci();
+        }
+
+        public String GetUrl(Merchant merchant)
+        {
+            if (merchant == null) 
+                throw new ArgumentNullException("merchant");
+            
+            var dane = ConfigurationManager.AppSettings["eCard.Url"] + "?ORDERDESCRIPTION=" + merchant.Payment.ORDERDESCRIPTION;
+            dane += "&AMOUNT=" + merchant.Payment.AMOUNT + "&CURRENCY=" + merchant.Payment.CURRENCY;
+            dane += "&ORDERNUMBER=" + merchant.Payment.ORDERNUMBER;
+            dane += "&NAME=" + merchant.Payment.NAME + "&SURNAME=" + merchant.Payment.SURNAME;
+            dane += "&LANGUAGE=" + merchant.Payment.LANGUAGE + "&CHARSET=ISO-8859-2";
+            dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + merchant.Hash;
+            dane += "&MERCHANTID=" + merchant.Id + "&AUTODEPOSIT=" + merchant.Payment.AUTODEPOSIT;
+            dane += "&LINKFAIL=" + merchant.LinkFail + "&LINKOK=" + merchant.LinkOk;
+            dane += "&SESSIONID=" + merchant.Payment.SESSIONID;
+            return dane;
+        }
+        public Merchant CreateMerchantData(vPlatnosciEcard invoice, Payer payer, string lang, string sessionId)
+        {
+            var waluta = _funkcjePlatnosci.SetAmount(invoice);
+            var newPayment = _funkcjePlatnosci.CreateAndAddNewPyment(invoice, waluta, payer, _repPayment, sessionId);
+
+            var merchant = new Merchant();
+            merchant.SystemKsiegowy = invoice.SystemKsiegowyId.ToString();
+            if (ConfigurationManager.AppSettings["wersja"] == "TEST")
+                merchant.SystemKsiegowy = "2";
+
+            merchant.Payment = newPayment;
+            getMerchantInfo(merchant);
+            SetHash(merchant);
+
+            //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia
+            var orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data);
+
+            var linkFail = ConfigurationManager.AppSettings["Strona"];
+            linkFail += "/" + lang + ConfigurationManager.AppSettings["LinkFail"];
+            linkFail += "/" + newPayment.IDFaktury + "?o=" + orderek;
+
+            var linkOk = ConfigurationManager.AppSettings["Strona"];
+            linkOk += "/" + lang + ConfigurationManager.AppSettings["LinkOk"];
+            linkOk += "/" + newPayment.IDFaktury + "?o=" + orderek;
+
+            merchant.LinkOk = linkOk;
+            merchant.LinkFail = linkFail;
+
+            return merchant;
+        }
+        public void getMerchantInfo(Merchant merchant)
+        {
+            if (merchant.SystemKsiegowy == "2")
+            {
+                merchant.Id = "171485000";
+                merchant.Password = "ashSeth2";
+            }
+            else
+            {
+                merchant.Id = "170906000";
+                merchant.Password = "JaYpqfs0";
+            }
+        }
+        private void SetHash(Merchant merchant)
+        {
+            var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == merchant.Payment.ORDERDESCRIPTION && i.IDFaktury == merchant.Payment.IDFaktury && i.Data == merchant.Payment.Data).SingleOrDefault();
+
+            if (platnosc == null || merchant == null)
+            {
+                merchant.Hash = HASH_ERROR_INFO;
+            }
+            else
+            {
+                var adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER;
+                var req = (HttpWebRequest)WebRequest.Create(adres);
+                var dane = "&orderDescription=&amount=" + platnosc.AMOUNT;
+                dane += "&currency=" + platnosc.CURRENCY;
+                dane += string.Format("&merchantId={0}&password={1}", merchant.Id, merchant.Password);
+
+                var bdata = System.Text.Encoding.ASCII.GetBytes(dane);
+                req.Method = "POST";
+                req.ContentType = "application/x-www-form-urlencoded";
+                req.ContentLength = dane.Length;
+
+                var reqStream = req.GetRequestStream();
+                reqStream.Write(bdata, 0, bdata.Length);
+                reqStream.Close();
+
+                var streamResponse = new StreamReader(req.GetResponse().GetResponseStream());
+                string strResponse = streamResponse.ReadToEnd();
+                streamResponse.Close();
+                strResponse = strResponse.Replace("\n", "");
+
+                merchant.Hash = strResponse;
+            }
+        }
+    }
+}
Index: trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj.user
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj.user (revision 930)
+++ trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj.user (revision 951)
@@ -1,5 +1,5 @@
 ﻿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectView>ShowAllFiles</ProjectView>
   </PropertyGroup>
   <ProjectExtensions>
Index: trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs (revision 950)
+++ trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs (revision 951)
@@ -15,8 +15,5 @@
     public class MerchantController : Controller
     {
-        public const string BAD_HASH = "zlyHash";       //b³êdne has³o - odpowied z eCard
-        public const string CARDS = "CARDS";            //obs³uga tylko kart p³atniczych
-        public const string KOD_POLSKA = "616";         //kod kraju Akceptanta - Polska
-        public const string KODOWANIE = "ISO-8859-2";
+        public const string BAD_HASH = "zlyHash";                  //b³êdne has³o - odpowied z eCard
         public const string HASH_ERROR_INFO = "payment not exist";
 
@@ -24,4 +21,5 @@
         private readonly IRepository<PlatnosciEcard> _repPayment; 
         private readonly FunkcjePlatnosci _funkcjePlatnosci;
+        private readonly eCardData _eCardData;
         private readonly ITranslateManager _translateManager;
 
@@ -32,9 +30,17 @@
             _funkcjePlatnosci = new FunkcjePlatnosci();
             _translateManager = new Translation();
+            _eCardData = new eCardData(_repPayment);
+        }
+        public MerchantController(IRepository<vPlatnosciEcard> repVPayment, IRepository<PlatnosciEcard> repPayment, ITranslateManager translate, eCardData ecardData)
+        {
+            _repVPayment = repVPayment;
+            _repPayment = repPayment;
+            _funkcjePlatnosci = new FunkcjePlatnosci();
+            _translateManager = translate;
+            _eCardData = ecardData;
         }
 
         public ActionResult Merchant(Payer payer, string language)
         {
-            System.Diagnostics.Debug.WriteLine("MerchantController:Merchant:" + language);
             language = _funkcjePlatnosci.SetLanguage(language);
 
@@ -46,116 +52,17 @@
             
             if (!_funkcjePlatnosci.UserIdentity(platnosc, ControllerContext.HttpContext.User.Identity.Name))
-                return View("Error1", IsError("weryfikacja", 0));           
+                return View("Error1", IsError("weryfikacja", 0));
 
-            var waluta = _funkcjePlatnosci.SetAmount(platnosc);
-            var newPayment = InitNewPayment(id1, platnosc, waluta, payer );            
-
-            var systemKs = platnosc.SystemKsiegowyId.ToString();
-            if (ConfigurationManager.AppSettings["wersja"] == "TEST")
-                systemKs = "2";
-
-            var createPayment = AddNewPayment(newPayment);
+            var merchant = _eCardData.CreateMerchantData(platnosc, payer, language, Session.SessionID);
             
-            if (createPayment == false)
+            if (merchant != null) merchant.IsValid();
+            
+            if (merchant == null || (merchant != null && (!String.IsNullOrEmpty(merchant.Error))))
                 return View("Error1", IsError("error_hash", payer.Id_faktury));
-
-            var merchant = getMerchantInfo(systemKs);
-           
-            var hash = GetHash(newPayment, merchant);
-            hash = hash.Replace("\n","");
-          
-            if (hash == BAD_HASH || hash == "" || hash == HASH_ERROR_INFO)
-                return View("Error1", IsError("error_hash", payer.Id_faktury));
-
-            //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia
-            var orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data);
-
-            var linkFail = ConfigurationManager.AppSettings["Strona"];
-            linkFail += "/" + language + ConfigurationManager.AppSettings["LinkFail"];
-            linkFail += "/" + newPayment.IDFaktury + "?o=" + orderek;
-
-            var linkOk = ConfigurationManager.AppSettings["Strona"];
-            linkOk += "/" + language + ConfigurationManager.AppSettings["LinkOk"];
-            linkOk += "/" + newPayment.IDFaktury + "?o=" + orderek;
-
-            if (merchant != null && !String.IsNullOrEmpty(merchant.Id))
-                SendRequest(newPayment, hash, merchant, linkFail, linkOk);
-            else 
-                return View("Error1", IsError("error_hash", payer.Id_faktury));
-
+            
+            var adres = _eCardData.GetUrl(merchant);
+            Response.Redirect(adres);           
             return new EmptyResult();          
-        }        
-        private PlatnosciEcard InitNewPayment(int id, vPlatnosciEcard platnosc, Waluta waluta, Payer payer)
-        {
-            var newPayment = new PlatnosciEcard();
-            newPayment.IDFaktury = id;
-            newPayment.ORDERDESCRIPTION = platnosc.Faktura_Numer;
-            newPayment.nip = platnosc.nip;
-            newPayment.nrZlecenia = "";
-            newPayment.AMOUNT = waluta.Amount;
-            newPayment.CURRENCY = waluta.Currency;
-            newPayment.SESSIONID = Session.SessionID;
-            newPayment.NAME = payer.FirstName;
-            newPayment.SURNAME = payer.LastName;
-            newPayment.AUTODEPOSIT = true;
-            newPayment.LANGUAGE = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToUpper(); 
-            newPayment.CHARSET = KODOWANIE;
-            newPayment.COUNTRY = KOD_POLSKA;
-            newPayment.JS = true;
-            newPayment.PAYMENTTYPE = CARDS;
-            newPayment.Data = DateTime.Now;
-            newPayment.Status = null;
-            newPayment.Status_data = null;
-            return newPayment;
-        }
-        
-        private bool AddNewPayment(PlatnosciEcard platnosc)
-        {
-            if (platnosc != null)
-            {                
-                _repPayment.Insert(platnosc);
-                return true;
-            }
-            return false;
-        }
-
-        private string GetHash(PlatnosciEcard p, Merchant merchant)
-        {
-            var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == p.ORDERDESCRIPTION && i.IDFaktury == p.IDFaktury && i.Data == p.Data).First();
-
-            if (platnosc == null || merchant == null) return HASH_ERROR_INFO;
-
-            var adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER;
-            var req = (HttpWebRequest)WebRequest.Create(adres);
-            var dane = "&orderDescription=&amount=" + platnosc.AMOUNT;
-            dane += "&currency=" + platnosc.CURRENCY;
-            dane += string.Format("&merchantId={0}&password={1}", merchant.Id, merchant.Password);
-
-            var bdata = System.Text.Encoding.ASCII.GetBytes(dane);
-            req.Method = "POST";
-            req.ContentType = "application/x-www-form-urlencoded";
-            req.ContentLength = dane.Length;
-
-            var reqStream = req.GetRequestStream();
-            reqStream.Write(bdata, 0, bdata.Length);
-            reqStream.Close();
-
-            var streamResponse = new StreamReader(req.GetResponse().GetResponseStream());
-            string strResponse = streamResponse.ReadToEnd();
-            streamResponse.Close();
-                     
-            return strResponse;
-        }
-
-        private void SendRequest(PlatnosciEcard m, string hash, Merchant merchant, string linkok, string linkfail)
-        {
-            var adres = ConfigurationManager.AppSettings["eCard.Url"] + "?ORDERDESCRIPTION=" + m.ORDERDESCRIPTION;
-
-            var dane = "&AMOUNT=" + m.AMOUNT + "&CURRENCY=" + m.CURRENCY + "&ORDERNUMBER=" + m.ORDERNUMBER;
-            dane += "&NAME=" + m.NAME + "&SURNAME=" + m.SURNAME + "&LANGUAGE=" + m.LANGUAGE + "&CHARSET=ISO-8859-2";
-            dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + hash + "&MERCHANTID=" + merchant.Id + "&AUTODEPOSIT=" + m.AUTODEPOSIT;
-            dane += "&LINKFAIL=" + linkfail + "&LINKOK=" + linkok + "&SESSIONID=" + m.SESSIONID;
-            Response.Redirect(adres + dane);
-        }
+        }         
         public ErrorViewData IsError(string errortxt, int idFaktury)
         {
@@ -166,22 +73,10 @@
             else if (errortxt == "error_hash")
                 errortxt = _translateManager.Translate("tlumaczenia", "error_hash");
+            else if (errortxt == "error_hash")
+                errortxt = _translateManager.Translate("tlumaczenia", "error_hash");
 
             return _funkcjePlatnosci.InitErrorViewData(errortxt, idFaktury);
         }
-        public Merchant getMerchantInfo( string systemKs)
-        {
-            var merchant = new Merchant();
-            if (systemKs == "2")
-            {
-                merchant.Id = "171485000";
-                merchant.Password = "ashSeth2";
-            }
-            else
-            {
-                merchant.Id = "170906000";
-                merchant.Password = "JaYpqfs0";
-            }              
-            return merchant;
-        }
+        
     }
 }
Index: trunk/eCard/eCardMVC/Platnosci/Controllers/PlatnoscController.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Controllers/PlatnoscController.cs (revision 950)
+++ trunk/eCard/eCardMVC/Platnosci/Controllers/PlatnoscController.cs (revision 951)
@@ -42,10 +42,6 @@
             var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault();
             if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));
-
-            var kwota = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano);
-            
-            var payer = InitPayer(platnosc.ID_faktury);
-            
-            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc, payer, "", kwota);  
+            
+            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc);  
 
             var tablicaPotwierdzenia = _repConfirm.FindItemsByIdFaktury(id1);
@@ -80,5 +76,5 @@
             {
                 var kwota = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano); 
-                var viewData = InitInvoiceDetailsViewData(platnosc, payer, "", kwota );
+                var viewData = InitInvoiceDetailsViewData(platnosc);
                 return View("Show",viewData); 
             }
@@ -99,5 +95,5 @@
             if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));            
             
-            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc, null, "" , "");
+            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc);
 
             //sprawdzamy czy dla kombinacji ordernumber i idfaktury istnieje platnosc,
@@ -119,5 +115,5 @@
             if (!String.IsNullOrEmpty(IsError(platnosc).Error)) return View("Error1", IsError(platnosc));
 
-            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc, null, "", "");
+            var invoiceDeatailsViewData = InitInvoiceDetailsViewData(platnosc);
             return View(invoiceDeatailsViewData);
         }
@@ -169,11 +165,10 @@
         }
 
-        private static InvoiceDetailsViewData InitInvoiceDetailsViewData(vPlatnosciEcard platnosc, Payer payer, string status, string brutto )
+        private InvoiceDetailsViewData InitInvoiceDetailsViewData(vPlatnosciEcard platnosc)
         {
             var invoiceDeatailsViewData = new InvoiceDetailsViewData();
             invoiceDeatailsViewData.vPlatnosciEcard = platnosc;
-            invoiceDeatailsViewData.Payer = payer;
-            invoiceDeatailsViewData.Status = status;
-            invoiceDeatailsViewData.brutto = brutto;
+            invoiceDeatailsViewData.Payer = InitPayer(platnosc.ID_faktury);
+            invoiceDeatailsViewData.brutto = _funkcjePlatnosci.BruttoToString(platnosc.Brutto, platnosc.waluta_brutto, platnosc.waluta_miano);
             return invoiceDeatailsViewData;
         }
Index: trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj
===================================================================
--- trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj (revision 944)
+++ trunk/eCard/eCardMVC/Platnosci/Platnosci.Web.csproj (revision 951)
@@ -60,7 +60,7 @@
   <ItemGroup>
     <Compile Include="App_GlobalResources\tlumaczenia.de.designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
       <DependentUpon>tlumaczenia.de.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
     </Compile>
     <Compile Include="App_GlobalResources\tlumaczenia.fr.designer.cs">
@@ -99,4 +99,5 @@
     <Compile Include="Models\ErrorViewData.cs" />
     <Compile Include="Models\InvoiceDetailsViewData.cs" />
+    <Compile Include="Models\eCardData.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
@@ -162,17 +163,15 @@
   </ItemGroup>
   <ItemGroup>
+    <Content Include="App_GlobalResources\tlumaczenia.fr.resx">
+      <Generator>GlobalResourceProxyGenerator</Generator>
+      <LastGenOutput>tlumaczenia.fr.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
     <Content Include="App_GlobalResources\tlumaczenia.de.resx">
       <Generator>GlobalResourceProxyGenerator</Generator>
       <LastGenOutput>tlumaczenia.de.designer.cs</LastGenOutput>
     </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="App_GlobalResources\tlumaczenia.fr.resx">
-      <Generator>GlobalResourceProxyGenerator</Generator>
-      <LastGenOutput>tlumaczenia.fr.designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
     <Content Include="App_GlobalResources\tlumaczenia.it.resx">
       <Generator>GlobalResourceProxyGenerator</Generator>
Index: trunk/eCard/eCardMVC/Platnosci.Tests/Web/PlatnosciControllerTests.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci.Tests/Web/PlatnosciControllerTests.cs (revision 933)
+++ trunk/eCard/eCardMVC/Platnosci.Tests/Web/PlatnosciControllerTests.cs (revision 951)
@@ -228,5 +228,5 @@
             System.Diagnostics.Debug.WriteLine("Model powinien byc 'true'. Jest " + controller.ModelState.IsValid);
             Assert.That(controller.ModelState.IsValid, Is.True);
-        }
+        }        
     }
 }
Index: trunk/eCard/eCardMVC/Platnosci.Tests/Web/FakeDataContext.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci.Tests/Web/FakeDataContext.cs (revision 930)
+++ trunk/eCard/eCardMVC/Platnosci.Tests/Web/FakeDataContext.cs (revision 951)
@@ -71,5 +71,5 @@
         public int GetOrdernumber(string desc, int? id, DateTime? data)
         {
-            throw new NotImplementedException();
+            return 1111;
         }
     }
Index: trunk/eCard/eCardMVC/Platnosci.Tests/Web/Function.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci.Tests/Web/Function.cs (revision 950)
+++ trunk/eCard/eCardMVC/Platnosci.Tests/Web/Function.cs (revision 951)
@@ -16,6 +16,18 @@
             platnosc.Brutto = brutto;
             platnosc.SystemKsiegowyId = systemKsiegowy;
-            //platnosc.waluta_miano
 
+            return platnosc;
+        }
+        public vPlatnosciEcard CreateForeignInvoice(int id, string nip, string invoiceNumber, decimal brutto, byte systemKsiegowy, decimal walutaBrutto, string currency)
+        {
+            var platnosc = new vPlatnosciEcard();
+            platnosc.ID_faktury = id;
+            platnosc.nip = nip;
+            platnosc.Faktura_Numer = invoiceNumber;
+            platnosc.Brutto = brutto;
+            platnosc.waluta_brutto = walutaBrutto;
+            platnosc.waluta_miano = currency;
+            platnosc.SystemKsiegowyId = systemKsiegowy;
+           
             return platnosc;
         }
Index: trunk/eCard/eCardMVC/Platnosci.Tests/Web/MerchantControllerTests.cs
===================================================================
--- trunk/eCard/eCardMVC/Platnosci.Tests/Web/MerchantControllerTests.cs (revision 933)
+++ trunk/eCard/eCardMVC/Platnosci.Tests/Web/MerchantControllerTests.cs (revision 951)
@@ -52,5 +52,209 @@
             Assert.That(result.ViewName, Is.EqualTo("Error1"));
         }
-        
+        [Test]
+        [Category("Unit")]
+        public void CheckCorrectAmount()
+        {
+            var idFaktury = 12345;
+            var amountPL = 5000;
+            var amountEUR = 1300;
+
+            var repVPayment = new Repository<vPlatnosciEcard>(new FakeDataContext());
+            var invoice = _function.CreateForeignInvoice(idFaktury, "nip1", "abc/2009", amountPL, 0, amountEUR, "EUR");
+            repVPayment.Insert(invoice);
+
+            var payer = _function.CreatePayer(idFaktury, "test", "test");
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var eCardData = new eCardData(repPayment);
+            var result = eCardData.CreateMerchantData(invoice, payer, "pl", "ahaah");
+            var payment = repPayment.FindOne(i => i.IDFaktury == idFaktury);
+
+            System.Diagnostics.Debug.WriteLine("Faktura jest w EUR.");
+            System.Diagnostics.Debug.WriteLine("PLN:" + amountPL + "," + " EUR:" + amountEUR);
+            Assert.That(payment.AMOUNT, Is.EqualTo(amountEUR * 100));
+        }
+        [Test]
+        [Category("Unit")]
+        public void CheckeCardUrl()
+        {
+            var m = new Merchant();
+            var pl = new PlatnosciEcard();
+            pl.ORDERDESCRIPTION = "abc/2009";
+            m.Payment = pl;
+            m.Id = "ABCD";
+            
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var eCardData = new eCardData(repPayment);
+            var result = eCardData.GetUrl(m);
+            
+            System.Diagnostics.Debug.WriteLine("eCard url:" + result + " " + m);
+            Assert.That(result, Is.Not.EqualTo(""));
+        }
+        [Test]
+        [Category("Unit")]
+        public void PaymentIsNotValid()
+        {
+            var m = new Merchant();
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("payment"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void AmountIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("amount"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void AutodepositIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("autodeposit"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void OrderdescriptionIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("orderdescription"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void CurrencyIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.Payment.ORDERDESCRIPTION = "abc/2009";
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("currency"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void NameIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.Payment.ORDERDESCRIPTION = "abc/2009";
+            m.Payment.CURRENCY = "test";
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("name"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void SurnameIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.Payment.ORDERDESCRIPTION = "abc/2009";
+            m.Payment.CURRENCY = "test";
+            m.Payment.NAME = "test";
+
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("surname"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void LanguageIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.Payment.ORDERDESCRIPTION = "abc/2009";
+            m.Payment.CURRENCY = "test";
+            m.Payment.NAME = "test";
+            m.Payment.SURNAME = "test";
+
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("language"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void OrdernumberIsNotValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.Payment.ORDERDESCRIPTION = "abc/2009";
+            m.Payment.CURRENCY = "test";
+            m.Payment.NAME = "test";
+            m.Payment.SURNAME = "test";
+            m.Payment.LANGUAGE = "test";
+
+            m.IsValid();
+            var result = m.Error;
+
+            System.Diagnostics.Debug.WriteLine("Error: " + result + " is not valid.");
+            Assert.That(result, Is.EqualTo("ordernumber"));
+        }
+        [Test]
+        [Category("Unit")]
+        public void MerchantDataIsValid()
+        {
+            var m = new Merchant();
+            var p = new PlatnosciEcard();
+            m.Payment = p;
+            m.Payment.AMOUNT = 100;
+            m.Payment.AUTODEPOSIT = true;
+            m.Payment.ORDERDESCRIPTION = "abc/2009";
+            m.Payment.CURRENCY = "test";
+            m.Payment.NAME = "test";
+            m.Payment.SURNAME = "test";
+            m.Payment.LANGUAGE = "test";
+            m.Payment.ORDERNUMBER = 100;
+
+            m.IsValid();
+            var result = m.Error;
+            Assert.That(result,Is.EqualTo(null));
+        }
     }
 }
