- Data:
- 2009-12-08 10:09:39 (16 years ago)
- Lokalizacja:
- branches/Emisje
- Pliki:
-
- 2 zmodyfikowane
-
. (zmodyfikowane) (1 prop)
-
eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs (zmodyfikowane) (3 diffs)
Legenda:
- Bez zmian
- Dodane
- Usunięte
-
branches/Emisje
- Property svn:mergeinfo
-
old new 3 3 /branches/ReklamaReorganizacja:568-731 4 4 /tags/BazaReklam_1.1.28:831 5 /trunk:774-893 5 /trunk:774-893,896-936
-
- Property svn:mergeinfo
-
branches/Emisje/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs
r895 r939 1 1 using System; 2 using System.Text;3 2 using 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;11 3 using System.Web.Mvc; 12 using System.Web.Mvc.Ajax;13 using System.Collections.Generic;14 4 using Platnosci.Models; 15 5 using Platnosci.Core.Linq; … … 29 19 public const string KOD_POLSKA = "616"; //kod kraju Akceptanta - Polska 30 20 public const string KODOWANIE = "ISO-8859-2"; 31 p rivate int ORDERNUMBER = 122;21 public const string HASH_ERROR_INFO = "payment not exist"; 32 22 33 private string merchantId;34 private readonly PlatnosciDataContext _context;35 private readonly IRepository<PlatnosciEcard> _rep;36 private FunkcjePlatnosci _func;23 private readonly IRepository<vPlatnosciEcard> _repVPayment; 24 private readonly IRepository<PlatnosciEcard> _repPayment; 25 private readonly FunkcjePlatnosci _funkcjePlatnosci; 26 private readonly ITranslateManager _translateManager; 37 27 38 28 public MerchantController() 39 { 40 _rep = new Repository<PlatnosciEcard>(new DataContext1()); 41 _context = new PlatnosciDataContext(); 42 _func = new FunkcjePlatnosci(); 29 { 30 _repVPayment = new Repository<vPlatnosciEcard>(new DataContext1()); 31 _repPayment = new Repository<PlatnosciEcard>(new DataContext1()); 32 _funkcjePlatnosci = new FunkcjePlatnosci(); 33 _translateManager = new Translation(); 43 34 } 35 44 36 public ActionResult Merchant(Payer payer, string language) 45 37 { 46 38 System.Diagnostics.Debug.WriteLine("MerchantController:Merchant:" + language); 47 language = _fun c.setLanguage(language);39 language = _funkcjePlatnosci.setLanguage(language); 48 40 49 intid1 = Convert.ToInt32(payer.Id_faktury);50 v PlatnosciEcard platnosc = _rep.FindInvoiceById(id1).SingleOrDefault();41 var id1 = Convert.ToInt32(payer.Id_faktury); 42 var platnosc = _repVPayment.Find(p => p.ID_faktury == id1).SingleOrDefault(); 51 43 52 if (platnosc == null) 53 { 54 ErrorViewData errorViewData = _func.InitErrorViewData(HttpContext.GetGlobalResourceObject("tlumaczenia", "brakdanych").ToString()); 55 return View("Error1", errorViewData); 56 } 57 else if (!_func.UserIdentity(platnosc, ControllerContext.HttpContext.User.Identity.Name)) 58 { 59 ErrorViewData errorViewData = _func.InitErrorViewData(HttpContext.GetGlobalResourceObject("tlumaczenia", "weryfikacja").ToString()); 60 return View("Error1", errorViewData); 61 } 44 if (platnosc == null) 45 return View("Error1", IsError("brakdanych", 0)); 62 46 63 Waluta waluta = _func.setAmount(platnosc); 47 if (!_funkcjePlatnosci.UserIdentity(platnosc, ControllerContext.HttpContext.User.Identity.Name)) 48 return View("Error1", IsError("weryfikacja", 0)); 49 50 var waluta = _funkcjePlatnosci.setAmount(platnosc); 64 51 var newPayment = InitNewPayment(id1, platnosc, waluta, payer ); 65 52 66 stringsystemKs = platnosc.SystemKsiegowyId.ToString();53 var systemKs = platnosc.SystemKsiegowyId.ToString(); 67 54 68 bool createPayment = AddNewPayment(newPayment); 69 if (createPayment == false) return View("Error"); 55 var createPayment = AddNewPayment(newPayment); 56 57 if (createPayment == false) 58 return View("Error1", IsError("error_hash", payer.Id_faktury)); 70 59 71 string hash = GetHash(newPayment, systemKs); 60 var merchant = getMerchantInfo(systemKs); 61 62 var hash = GetHash(newPayment, merchant); 72 63 hash = hash.Replace("\n",""); 73 if (hash == BAD_HASH || hash == "" ) return View("Error"); 64 65 if (hash == BAD_HASH || hash == "" || hash == HASH_ERROR_INFO) 66 return View("Error1", IsError("error_hash", payer.Id_faktury)); 74 67 75 if (systemKs == "1") merchantId = "170906000";76 else merchantId = "171485000";68 //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia 69 var orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data); 77 70 78 string LinkFail = ConfigurationManager.AppSettings["Strona"];79 LinkFail += "/" + language + ConfigurationManager.AppSettings["LinkFail"];80 LinkFail += "/" + newPayment.IDFaktury;71 var linkFail = ConfigurationManager.AppSettings["Strona"]; 72 linkFail += "/" + language + ConfigurationManager.AppSettings["LinkFail"]; 73 linkFail += "/" + newPayment.IDFaktury + "?o=" + orderek; 81 74 82 string LinkOk = ConfigurationManager.AppSettings["Strona"];83 LinkOk += "/" + language + ConfigurationManager.AppSettings["LinkOk"];84 LinkOk += "/" + newPayment.IDFaktury;;75 var linkOk = ConfigurationManager.AppSettings["Strona"]; 76 linkOk += "/" + language + ConfigurationManager.AppSettings["LinkOk"]; 77 linkOk += "/" + newPayment.IDFaktury + "?o=" + orderek; 85 78 86 var merchantViewData = InitMerchantViewData(newPayment, hash, merchantId, LinkFail, LinkOk); 87 wyslij(merchantViewData, hash, merchantId); 88 return View(merchantViewData); 89 } 79 if (merchant != null && !String.IsNullOrEmpty(merchant.merchntId)) 80 SendRequest(newPayment, hash, merchant, linkFail, linkOk); 81 else 82 return View("Error1", IsError("error_hash", payer.Id_faktury)); 83 84 return new EmptyResult(); 85 } 90 86 private PlatnosciEcard InitNewPayment(int id, vPlatnosciEcard platnosc, Waluta waluta, Payer payer) 91 87 { 92 PlatnosciEcardnewPayment = new PlatnosciEcard();88 var newPayment = new PlatnosciEcard(); 93 89 newPayment.IDFaktury = id; 94 90 newPayment.ORDERDESCRIPTION = platnosc.Faktura_Numer; … … 111 107 return newPayment; 112 108 } 109 113 110 private bool AddNewPayment(PlatnosciEcard platnosc) 114 111 { 115 112 if (platnosc != null) 116 113 { 117 // _rep.Insert(platnosc);114 _repPayment.Insert(platnosc); 118 115 return true; 119 116 } 120 117 return false; 121 118 } 122 private MerchantViewData InitMerchantViewData(PlatnosciEcard newPayment, string hash, string Id, string LinkFail, string LinkOk) 119 120 private string GetHash(PlatnosciEcard p, Merchant merchant) 123 121 { 124 MerchantViewData merchantViewData = new MerchantViewData(); 125 merchantViewData.nowaPlatnosc = newPayment; 126 merchantViewData.Hash = hash; 127 merchantViewData.merchantId = Id; 128 merchantViewData.LinkFail = LinkFail; 129 merchantViewData.LinkOk = LinkOk; 130 131 //wartosci testowe 132 merchantViewData.nowaPlatnosc.ORDERNUMBER = ORDERNUMBER; 133 merchantViewData.nowaPlatnosc.ORDERDESCRIPTION = "222"; 134 merchantViewData.nowaPlatnosc.AMOUNT = 300; 135 merchantViewData.nowaPlatnosc.CURRENCY = "985"; 136 merchantViewData.nowaPlatnosc.SESSIONID = "ff"; 137 merchantViewData.merchantId = "171485000"; 138 merchantViewData.LinkFail = ""; 139 merchantViewData.LinkOk = ""; 140 return merchantViewData; 141 } 142 private string GetHash(PlatnosciEcard p, string ks) 143 { 144 string strResponse; 145 /*PlatnosciEcard platnosc = _rep.FindOne(i => i.ORDERDESCRIPTION == p.ORDERDESCRIPTION && i.IDFaktury == p.IDFaktury && i.Data == p.Data); 146 string adres = "https://pay.ecard.pl/servlet/HS?orderNumber="+p.ORDERNUMBER; 147 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(adres); 148 string dane = "&orderDescription=&amount=" + platnosc.AMOUNT; 122 var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == p.ORDERDESCRIPTION && i.IDFaktury == p.IDFaktury && i.Data == p.Data).First(); 123 124 if (platnosc == null || merchant == null) return HASH_ERROR_INFO; 125 126 var adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER; 127 var req = (HttpWebRequest)WebRequest.Create(adres); 128 var dane = "&orderDescription=&amount=" + platnosc.AMOUNT; 149 129 dane += "¤cy=" + platnosc.CURRENCY; 150 if (ks == "1") dane += "&merchantId=171485000&password=ashSeth2"; 151 else dane += "&merchantId=170906000&password=JaYpqfs0"; */ 130 dane += string.Format("&merchantId={0}&password={1}", merchant.merchntId, merchant.merchantPassword); 152 131 153 //dane testowe 154 string adres = "https://pay.ecard.pl/servlet/HS?orderNumber="+ORDERNUMBER; 155 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(adres); 156 string dane = "&orderDescription=&amount=300¤cy=985&merchantId=171485000&password=ashSeth2"; 157 158 byte[] bdata = System.Text.ASCIIEncoding.ASCII.GetBytes(dane); 132 var bdata = System.Text.Encoding.ASCII.GetBytes(dane); 159 133 req.Method = "POST"; 160 134 req.ContentType = "application/x-www-form-urlencoded"; 161 135 req.ContentLength = dane.Length; 162 136 163 StreamreqStream = req.GetRequestStream();137 var reqStream = req.GetRequestStream(); 164 138 reqStream.Write(bdata, 0, bdata.Length); 165 139 reqStream.Close(); 166 140 167 StreamReader streamResponse = new StreamReader(req.GetResponse().GetResponseStream());168 str Response = streamResponse.ReadToEnd();141 var streamResponse = new StreamReader(req.GetResponse().GetResponseStream()); 142 string strResponse = streamResponse.ReadToEnd(); 169 143 streamResponse.Close(); 170 144 171 145 return strResponse; 172 146 } 173 private void wyslij(MerchantViewData m, string hash, string id) 147 148 private void SendRequest(PlatnosciEcard m, string hash, Merchant merchant, string linkok, string linkfail) 174 149 { 175 string adres = "https://pay.ecard.pl/servlet/PSTEST?ORDERDESCRIPTION="+m.nowaPlatnosc.ORDERDESCRIPTION; 176 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(adres); 177 string dane = "&AMOUNT=300&CURRENCY=985&ORDERNUMBER="+ORDERNUMBER+"&NAME="+m.nowaPlatnosc.NAME+"&SURNAME="+m.nowaPlatnosc.SURNAME+"&LANGUAGE=PL&CHARSET=ISO-8859-2"; 178 dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + hash + "&MERCHANTID=171485000&AUTODEPOSIT=" + m.nowaPlatnosc.AUTODEPOSIT + "&LINKFAIL="; 179 dane += "&LINKOK=&SESSIONID="; 150 var adres = ConfigurationManager.AppSettings["eCard.Url"] + "?ORDERDESCRIPTION=" + m.ORDERDESCRIPTION; 151 152 var dane = "&AMOUNT=" + m.AMOUNT + "&CURRENCY=" + m.CURRENCY + "&ORDERNUMBER=" + m.ORDERNUMBER; 153 dane += "&NAME=" + m.NAME + "&SURNAME=" + m.SURNAME + "&LANGUAGE=" + m.LANGUAGE + "&CHARSET=ISO-8859-2"; 154 dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + hash + "&MERCHANTID=" + merchant.merchntId + "&AUTODEPOSIT=" + m.AUTODEPOSIT; 155 dane += "&LINKFAIL=" + linkfail + "&LINKOK=" + linkok + "&SESSIONID=" + m.SESSIONID; 180 156 Response.Redirect(adres + dane); 157 } 158 public ErrorViewData IsError(string errortxt, int idFaktury) 159 { 160 if (errortxt == "brakdanych") 161 errortxt = _translateManager.Translate("tlumaczenia", "brakdanych"); 162 else if (errortxt == "weryfikacja") 163 errortxt = _translateManager.Translate("tlumaczenia", "weryfikacja"); 164 else if (errortxt == "error_hash") 165 errortxt = _translateManager.Translate("tlumaczenia", "error_hash"); 166 167 return _funkcjePlatnosci.InitErrorViewData(errortxt, idFaktury); 168 } 169 public Merchant getMerchantInfo( string systemKs) 170 { 171 var merchant = new Merchant(); 172 if (systemKs == "1") 173 { 174 merchant.merchntId = "171485000"; 175 merchant.merchantPassword = "ashSeth2"; 176 } 177 else 178 { 179 merchant.merchntId = "170906000"; 180 merchant.merchantPassword = "JaYpqfs0"; 181 } 182 return merchant; 181 183 } 182 184 }
