Guest User

Untitled

a guest
Feb 26th, 2018
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.13 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.Configuration;
  5. using System.Collections.Specialized;
  6. using Newtonsoft.Json;
  7. using System.Net;
  8. using System.Text;
  9. using System.IO;
  10. using VaspAPI.Database;
  11. using System.Collections;
  12. using System.Data;
  13. using VaspAPI.Utils;
  14. using System.Xml;
  15.  
  16. namespace VaspService.code
  17. {
  18. public class Epay
  19. {
  20. public string AgentID { get; set; }
  21. public string ServiceID { get; set; }
  22. public string Reference { get; set; }
  23. public string Amount { get; set; }
  24. public Int32 Tid = 0;
  25.  
  26. public string TXID { get; set; }
  27.  
  28. private string _username = string.Empty;
  29. private string _password = string.Empty;
  30. private string _terminal = string.Empty;
  31. private string _url_primary = string.Empty;
  32. private string _url_secondary = string.Empty;
  33.  
  34.  
  35. public string EAN = string.Empty;
  36. public string Serial = string.Empty;
  37.  
  38. public Boolean Status { get; set; }
  39. public string Operation { get; set; }
  40.  
  41. private string XMlRequest = string.Empty;
  42. private string XMlResponse = string.Empty;
  43.  
  44. public string result = string.Empty;
  45. public string resulttext = string.Empty;
  46. private string receipttext = string.Empty;
  47.  
  48. private string pincredentials_pin = string.Empty;
  49. private string pincredentials_serial = string.Empty;
  50. private string pincredentials_VALIDTO = string.Empty;
  51.  
  52. private string CardName = string.Empty;
  53. private string CardDescription = string.Empty;
  54. private string CardAditionalInformation = string.Empty;
  55. private string CardRegistrationNumber = string.Empty;
  56.  
  57.  
  58. public Epay()
  59. {
  60. _terminal = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["TerminalID"];
  61. _username = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Username"];
  62. _password = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Password"];
  63. _url_primary = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Url_Primary"];
  64. _url_secondary = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Url_Secondary"];
  65. }
  66.  
  67. public void Activate()
  68. {
  69. BuildRequest();
  70.  
  71. HttpRequest(_url_primary);
  72.  
  73. if(!string.IsNullOrEmpty(XMlResponse))
  74. {
  75. XmlDocument xml_response = new XmlDocument();
  76. xml_response.LoadXml(XMlResponse);
  77.  
  78. result = xml_response.SelectSingleNode("/RESPONSE/RESULT").InnerText;
  79. resulttext = xml_response.SelectSingleNode("/RESPONSE/RESULTTEXT").InnerText;
  80.  
  81. XmlNodeList receipt = xml_response.SelectNodes("/RESPONSE/RECEIPT/LINE");
  82.  
  83. foreach(XmlNode node in receipt)
  84. {
  85. receipttext += node.SelectSingleNode(".").InnerText + Environment.NewLine;
  86. }
  87.  
  88. if(string.IsNullOrEmpty(Serial))
  89. {
  90. pincredentials_pin = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/PIN").InnerText;
  91. pincredentials_serial = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/SERIAL").InnerText;
  92. pincredentials_VALIDTO = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/VALIDTO").InnerText;
  93. }
  94.  
  95. if (result == "0")
  96. {
  97. Status = true;
  98. PaymentSuccess();
  99.  
  100. CardName = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText;
  101. CardDescription = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText + " " + FormatAmount(Amount);
  102. CardRegistrationNumber = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[6]").InnerText;
  103.  
  104. Print();
  105. }
  106. else
  107. Status = false;
  108. }
  109. }
  110.  
  111. public void Cancel()
  112. {
  113. BuildRequest();
  114.  
  115. HttpRequest(_url_primary);
  116.  
  117. if (!string.IsNullOrEmpty(XMlResponse))
  118. {
  119. XmlDocument xml_response = new XmlDocument();
  120. xml_response.LoadXml(XMlResponse);
  121.  
  122. result = xml_response.SelectSingleNode("/RESPONSE/RESULT").InnerText;
  123. resulttext = xml_response.SelectSingleNode("/RESPONSE/RESULTTEXT").InnerText;
  124.  
  125. //XmlNodeList receipt = xml_response.SelectNodes("/RESPONSE/RECEIPT/LINE");
  126.  
  127. //foreach (XmlNode node in receipt)
  128. //{
  129. // receipttext += node.SelectSingleNode(".").InnerText + Environment.NewLine;
  130. //}
  131.  
  132. //if (string.IsNullOrEmpty(Serial))
  133. //{
  134. // pincredentials_pin = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/PIN").InnerText;
  135. // pincredentials_serial = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/SERIAL").InnerText;
  136. // pincredentials_VALIDTO = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/VALIDTO").InnerText;
  137. //}
  138.  
  139. if (result == "0")
  140. {
  141. Status = true;
  142. PaymentSuccess();
  143.  
  144. //CardName = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText;
  145. //CardDescription = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText + " " + FormatAmount(Amount);
  146. //CardRegistrationNumber = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[6]").InnerText;
  147.  
  148. Print();
  149. }
  150. else
  151. Status = false;
  152. }
  153. }
  154.  
  155. public void HttpRequest(string url)
  156. {
  157. WebRequest request = WebRequest.Create(url);
  158. request.Method = "POST";
  159. byte[] byteArray = Encoding.UTF8.GetBytes(XMlRequest);
  160. request.ContentType = "application/x-www-form-urlencoded";
  161. request.ContentLength = byteArray.Length;
  162. Stream dataStream = request.GetRequestStream();
  163. dataStream.Write(byteArray, 0, byteArray.Length);
  164. dataStream.Close();
  165. WebResponse response = request.GetResponse();
  166. dataStream = response.GetResponseStream();
  167. StreamReader reader = new StreamReader(dataStream);
  168.  
  169. XMlResponse = reader.ReadToEnd();
  170.  
  171. saveLogSMS(Operation, XMlRequest, XMlResponse, _url_primary, string.Empty);
  172.  
  173. reader.Close();
  174. dataStream.Close();
  175. response.Close();
  176. }
  177.  
  178. public void BuildRequest()
  179. {
  180. if(Operation == "Activate")
  181. {
  182. Tid = Int32.Parse(Utils.GenerateTid(10));
  183.  
  184. if (EAN.IndexOf(".") > -1)
  185. EAN = EAN.Replace(".", string.Empty);
  186.  
  187. XMlRequest = @"<REQUEST TYPE=""SALE"">
  188. <USERNAME>" + _username + @"</USERNAME>
  189. <PASSWORD>" + _password + @"</PASSWORD>
  190. <TERMINALID>" + _terminal + @"</TERMINALID>
  191. <LOCALDATETIME>" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"</LOCALDATETIME>
  192. <TXID>" + Tid + @"</TXID>
  193. <CARD>
  194. <EAN>" + EAN + @"</EAN>";
  195.  
  196. if (!string.IsNullOrEmpty(Serial))
  197. XMlRequest += "<PAN>" + Serial + "</PAN>";
  198.  
  199.  
  200.  
  201. XMlRequest += @"</CARD>
  202. <RECEIPT>
  203. <LANGUAGE>pt</LANGUAGE>
  204. <CHARSPERLINE>40</CHARSPERLINE>
  205. </RECEIPT>
  206. <CURRENCY>978</CURRENCY>
  207. <AMOUNT>" + Amount + @"</AMOUNT>
  208. </REQUEST>";
  209. }
  210. else if(Operation == "Cancel")
  211. {
  212. Tid = Int32.Parse(Utils.GenerateTid(10));
  213.  
  214. XMlRequest = @"<REQUEST TYPE=""CANCEL"">
  215. <USERNAME>" + _username + @"</USERNAME>
  216. <PASSWORD>" + _password + @"</PASSWORD>
  217. <TERMINALID>" + _terminal + @"</TERMINALID>
  218. <LOCALDATETIME>" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"</LOCALDATETIME>
  219. <TXID>" + Tid + @"</TXID>
  220. <TXREF>" + TXID + @"</TXREF>
  221. <AMOUNT>" + Amount + @"</AMOUNT>
  222. <CARD>
  223. <EAN>" + EAN + @"</EAN>";
  224.  
  225. if (!string.IsNullOrEmpty(Serial))
  226. XMlRequest += "<PAN>" + Serial + "</PAN>";
  227.  
  228. XMlRequest += @"</CARD>
  229. </REQUEST>";
  230. }
  231. }
  232.  
  233. public void PaymentSuccess()
  234. {
  235. Database database = new Database("vasp_bo");
  236. ArrayList parameters = new ArrayList();
  237.  
  238. try
  239. {
  240. int opdb = -1;
  241. switch (Operation.ToLower())
  242. {
  243. case "activate": opdb = 1; break;
  244. case "cancel": opdb = 2; break;
  245. }
  246.  
  247.  
  248.  
  249. parameters.Add(new Database.DBParams("operator", SqlDbType.NVarChar, "Epay", null));
  250. parameters.Add(new Database.DBParams("operation", SqlDbType.Int, opdb, null));
  251. parameters.Add(new Database.DBParams("tid", SqlDbType.Int, Tid, null));
  252. parameters.Add(new Database.DBParams("agent_id", SqlDbType.VarChar, AgentID, null));
  253. parameters.Add(new Database.DBParams("service_id", SqlDbType.VarChar, ServiceID, null));
  254. parameters.Add(new Database.DBParams("amount", SqlDbType.VarChar, Amount, null));
  255. parameters.Add(new Database.DBParams("reference", SqlDbType.VarChar, Reference, null));
  256.  
  257. int i = database.ExecuteNonQuery(CommandType.StoredProcedure, "ng_create_payment_success", parameters, true);
  258.  
  259. if (i > 0)
  260. {
  261. //Success = true;
  262. }
  263. else
  264. {
  265. //Success = false;
  266. }
  267. }
  268. catch (Exception e)
  269. {
  270. Functions.InsertLogsDatabase("Kios|Epay.cs", "OfflinePayments", "Error: " + e.Message);
  271. }
  272. finally
  273. {
  274. database.Dispose();
  275. parameters.Clear();
  276. }
  277. }
  278.  
  279. public void Print()
  280. {
  281. string _errorMessage = string.Empty;
  282.  
  283. string op_type = string.Empty;
  284.  
  285. Database database = new Database("vasp_bo_gespos");
  286. ArrayList parameters = new ArrayList();
  287.  
  288. try
  289. {
  290. parameters.Add(new Database.DBParams("AgentID", SqlDbType.Int, AgentID, null));
  291. parameters.Add(new Database.DBParams("ServiceID", SqlDbType.Int, ServiceID, null));
  292. parameters.Add(new Database.DBParams("Reference", SqlDbType.VarChar, Reference, null));
  293. parameters.Add(new Database.DBParams("Amount", SqlDbType.VarChar, Amount, null));
  294. parameters.Add(new Database.DBParams("Operator", SqlDbType.NVarChar, "Epay", null));
  295. parameters.Add(new Database.DBParams("Operation_type", SqlDbType.VarChar, Operation, null));
  296. parameters.Add(new Database.DBParams("tid", SqlDbType.NVarChar, Tid, null));
  297. parameters.Add(new Database.DBParams("serial", SqlDbType.NVarChar, Serial, null));
  298. parameters.Add(new Database.DBParams("card_name", SqlDbType.NVarChar, CardName, null));
  299. parameters.Add(new Database.DBParams("card_description", SqlDbType.NVarChar, CardDescription, null));
  300. parameters.Add(new Database.DBParams("card_aditional_information", SqlDbType.NVarChar, CardAditionalInformation, null));
  301. parameters.Add(new Database.DBParams("card_registration_number", SqlDbType.NVarChar, CardRegistrationNumber, null));
  302. parameters.Add(new Database.DBParams("card_pin_pin", SqlDbType.NVarChar, Operation == "Activate" ? pincredentials_pin : TXID, null));
  303. parameters.Add(new Database.DBParams("card_pin_serial", SqlDbType.NVarChar, pincredentials_serial, null));
  304. parameters.Add(new Database.DBParams("card_pin_validto", SqlDbType.NVarChar, pincredentials_VALIDTO, null));
  305. parameters.Add(new Database.DBParams("receipt_text", SqlDbType.NVarChar, receipttext, null));
  306.  
  307. int i = database.ExecuteNonQuery(CommandType.StoredProcedure, "ng_create_print_epay", parameters, true);
  308.  
  309. if (i > 0)
  310. {
  311. //Success = true;
  312. }
  313. else
  314. {
  315. //Success = false;
  316. }
  317. }
  318. catch (Exception e)
  319. {
  320. Functions.InsertLogsDatabase("Kios|Epay.cs", "print", "Error: " + e.ToString());
  321. }
  322. finally
  323. {
  324. database.Dispose();
  325. parameters.Clear();
  326. }
  327. }
  328.  
  329. public void saveLogSMS(string operation, string xml_send, string xml_receive, string url, string Status)
  330. {
  331. Database database = new Database("vasp_bo");
  332. ArrayList parameters = new ArrayList();
  333.  
  334. try
  335. {
  336. parameters.Add(new Database.DBParams("operator", SqlDbType.VarChar, "Epay", null));
  337. parameters.Add(new Database.DBParams("url_request", SqlDbType.NVarChar, url, null));
  338. parameters.Add(new Database.DBParams("operation", SqlDbType.VarChar, Operation, null));
  339. parameters.Add(new Database.DBParams("xml_send", SqlDbType.VarChar, xml_send, null));
  340. parameters.Add(new Database.DBParams("xml_receive", SqlDbType.NVarChar, xml_receive, null));
  341. parameters.Add(new Database.DBParams("status", SqlDbType.VarChar, Status, null));
  342. parameters.Add(new Database.DBParams("debug", SqlDbType.NVarChar, "", null));
  343. parameters.Add(new Database.DBParams("tid", SqlDbType.Int, Tid, null));
  344. parameters.Add(new Database.DBParams("ip_user", SqlDbType.VarChar, HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], null));
  345. parameters.Add(new Database.DBParams("agent_id", SqlDbType.VarChar, this.AgentID, null));
  346. parameters.Add(new Database.DBParams("key_error", SqlDbType.Bit, 0, null));
  347.  
  348. int i = database.ExecuteNonQuery(CommandType.StoredProcedure, "ng_create_logs", parameters, true);
  349. }
  350. catch (Exception e)
  351. {
  352. Functions.InsertLogsDatabase("Kios|Epay.cs", "saveLogSMS", "Error: " + e.ToString());
  353. }
  354. finally
  355. {
  356. database.Dispose();
  357. parameters.Clear();
  358. }
  359. }
  360.  
  361. protected string convertAmount(string amount)
  362. {
  363. string text = string.Empty;
  364.  
  365. int len = amount.Length;
  366.  
  367. string last = amount.Substring(len - 2, 2);
  368. string begin = amount.Substring(0, len - 2);
  369.  
  370. text = begin + "." + last;
  371.  
  372. return text;
  373. }
  374.  
  375. public string BuildJson()
  376. {
  377. return JsonConvert.SerializeObject(this);
  378. }
  379.  
  380. private string FormatAmount(string Amount)
  381. {
  382. return Amount.Substring(0, Amount.Length - 2) + "," + Amount.Substring(Amount.Length - 2, 2) + " EUR";
  383. }
  384. }
  385. }
Add Comment
Please, Sign In to add comment