root/trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs @ 956

Wersja 956, 5.1 KB (wprowadzona przez alina, 16 years temu)

re #215 drobne poprawki

Line 
1using System;
2using System.Web;
3using System.Net;
4using System.IO;
5using System.Linq;
6using System.Web.Mvc;
7using System.Configuration;
8using Platnosci.Core.Linq;
9using Platnosci.Core.Interface;
10
11namespace Platnosci.Models
12{
13    public class eCardData
14    {
15        public const string HASH_ERROR_INFO = "payment not exist";
16        private readonly FunkcjePlatnosci _funkcjePlatnosci;
17        private IRepository<PlatnosciEcard> _repPayment;
18       
19        public eCardData(IRepository<PlatnosciEcard> repPayment)
20        {
21            _repPayment = repPayment;
22            _funkcjePlatnosci = new FunkcjePlatnosci(_repPayment);
23        }
24
25        public String GetUrl(Merchant merchant)
26        {
27            if (merchant == null)
28                throw new ArgumentNullException("merchant");
29           
30            var dane = ConfigurationManager.AppSettings["eCard.Url"] + "?ORDERDESCRIPTION=" + merchant.Payment.ORDERDESCRIPTION;
31            dane += "&AMOUNT=" + merchant.Payment.AMOUNT + "&CURRENCY=" + merchant.Payment.CURRENCY;
32            dane += "&ORDERNUMBER=" + merchant.Payment.ORDERNUMBER;
33            dane += "&NAME=" + merchant.Payment.NAME + "&SURNAME=" + merchant.Payment.SURNAME;
34            dane += "&LANGUAGE=" + merchant.Payment.LANGUAGE + "&CHARSET=ISO-8859-2";
35            dane += "&COUNTRY=616&PAYMENTTYPE=CARDS&JS=1&HASH=" + merchant.Hash;
36            dane += "&MERCHANTID=" + merchant.Id + "&AUTODEPOSIT=" + merchant.Payment.AUTODEPOSIT;
37            dane += "&LINKFAIL=" + merchant.LinkFail + "&LINKOK=" + merchant.LinkOk;
38            dane += "&SESSIONID=" + merchant.Payment.SESSIONID;
39            return dane;
40        }
41        public Merchant CreateMerchantData(vPlatnosciEcard invoice, Payer payer, string lang, string sessionId)
42        {
43            var merchant = new Merchant();
44           
45            var waluta = _funkcjePlatnosci.SetAmount(invoice);
46            var newPayment = _funkcjePlatnosci.CreateAndAddNewPyment(invoice, waluta, payer, sessionId);
47
48            merchant.SystemKsiegowy = invoice.SystemKsiegowyId.ToString();
49            if (ConfigurationManager.AppSettings["wersja"] == "TEST")
50                merchant.SystemKsiegowy = "2";
51
52            merchant.Payment = newPayment;
53            getMerchantInfo(merchant);
54            SetHash(merchant);
55
56            //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia
57            var orderek = _repPayment.GetOrdernumber(newPayment.ORDERDESCRIPTION, newPayment.IDFaktury, newPayment.Data);
58
59            var linkFail = ConfigurationManager.AppSettings["Strona"];
60            linkFail += "/" + lang + ConfigurationManager.AppSettings["LinkFail"];
61            linkFail += "/" + newPayment.IDFaktury + "?o=" + orderek;
62
63            var linkOk = ConfigurationManager.AppSettings["Strona"];
64            linkOk += "/" + lang + ConfigurationManager.AppSettings["LinkOk"];
65            linkOk += "/" + newPayment.IDFaktury + "?o=" + orderek;
66
67            merchant.LinkOk = linkOk;
68            merchant.LinkFail = linkFail;
69
70            if (merchant != null) merchant.IsValid();
71
72            return merchant;
73        }
74        public void getMerchantInfo(Merchant merchant)
75        {
76            if (merchant.SystemKsiegowy == "2")
77            {
78                merchant.Id = "171485000";
79                merchant.Password = "ashSeth2";
80            }
81            else
82            {
83                merchant.Id = "170906000";
84                merchant.Password = "JaYpqfs0";
85            }
86        }
87        private void SetHash(Merchant merchant)
88        {
89            var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == merchant.Payment.ORDERDESCRIPTION && i.IDFaktury == merchant.Payment.IDFaktury && i.Data == merchant.Payment.Data).SingleOrDefault();
90
91            if (platnosc == null || merchant == null)
92            {
93                merchant.Hash = HASH_ERROR_INFO;
94            }
95            else
96            {
97                var adres = "https://pay.ecard.pl/servlet/HS?orderNumber=" + platnosc.ORDERNUMBER;
98                var req = (HttpWebRequest)WebRequest.Create(adres);
99                var dane = "&orderDescription=&amount=" + platnosc.AMOUNT;
100                dane += "&currency=" + platnosc.CURRENCY;
101                dane += string.Format("&merchantId={0}&password={1}", merchant.Id, merchant.Password);
102
103                var bdata = System.Text.Encoding.ASCII.GetBytes(dane);
104                req.Method = "POST";
105                req.ContentType = "application/x-www-form-urlencoded";
106                req.ContentLength = dane.Length;
107
108                var reqStream = req.GetRequestStream();
109                reqStream.Write(bdata, 0, bdata.Length);
110                reqStream.Close();
111
112                var streamResponse = new StreamReader(req.GetResponse().GetResponseStream());
113                string strResponse = streamResponse.ReadToEnd();
114                streamResponse.Close();
115                strResponse = strResponse.Replace("\n", "");
116
117                merchant.Hash = strResponse;
118            }
119        }
120    }
121}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.