Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Web;
- using System.Configuration;
- using System.Collections.Specialized;
- using Newtonsoft.Json;
- using System.Net;
- using System.Text;
- using System.IO;
- using VaspAPI.Database;
- using System.Collections;
- using System.Data;
- using VaspAPI.Utils;
- using System.Xml;
- namespace VaspService.code
- {
- public class Epay
- {
- public string AgentID { get; set; }
- public string ServiceID { get; set; }
- public string Reference { get; set; }
- public string Amount { get; set; }
- public Int32 Tid = 0;
- public string TXID { get; set; }
- private string _username = string.Empty;
- private string _password = string.Empty;
- private string _terminal = string.Empty;
- private string _url_primary = string.Empty;
- private string _url_secondary = string.Empty;
- public string EAN = string.Empty;
- public string Serial = string.Empty;
- public Boolean Status { get; set; }
- public string Operation { get; set; }
- private string XMlRequest = string.Empty;
- private string XMlResponse = string.Empty;
- public string result = string.Empty;
- public string resulttext = string.Empty;
- private string receipttext = string.Empty;
- private string pincredentials_pin = string.Empty;
- private string pincredentials_serial = string.Empty;
- private string pincredentials_VALIDTO = string.Empty;
- private string CardName = string.Empty;
- private string CardDescription = string.Empty;
- private string CardAditionalInformation = string.Empty;
- private string CardRegistrationNumber = string.Empty;
- public Epay()
- {
- _terminal = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["TerminalID"];
- _username = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Username"];
- _password = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Password"];
- _url_primary = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Url_Primary"];
- _url_secondary = ((NameValueCollection)ConfigurationManager.GetSection("Epay"))["Url_Secondary"];
- }
- public void Activate()
- {
- BuildRequest();
- HttpRequest(_url_primary);
- if(!string.IsNullOrEmpty(XMlResponse))
- {
- XmlDocument xml_response = new XmlDocument();
- xml_response.LoadXml(XMlResponse);
- result = xml_response.SelectSingleNode("/RESPONSE/RESULT").InnerText;
- resulttext = xml_response.SelectSingleNode("/RESPONSE/RESULTTEXT").InnerText;
- XmlNodeList receipt = xml_response.SelectNodes("/RESPONSE/RECEIPT/LINE");
- foreach(XmlNode node in receipt)
- {
- receipttext += node.SelectSingleNode(".").InnerText + Environment.NewLine;
- }
- if(string.IsNullOrEmpty(Serial))
- {
- pincredentials_pin = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/PIN").InnerText;
- pincredentials_serial = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/SERIAL").InnerText;
- pincredentials_VALIDTO = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/VALIDTO").InnerText;
- }
- if (result == "0")
- {
- Status = true;
- PaymentSuccess();
- CardName = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText;
- CardDescription = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText + " " + FormatAmount(Amount);
- CardRegistrationNumber = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[6]").InnerText;
- Print();
- }
- else
- Status = false;
- }
- }
- public void Cancel()
- {
- BuildRequest();
- HttpRequest(_url_primary);
- if (!string.IsNullOrEmpty(XMlResponse))
- {
- XmlDocument xml_response = new XmlDocument();
- xml_response.LoadXml(XMlResponse);
- result = xml_response.SelectSingleNode("/RESPONSE/RESULT").InnerText;
- resulttext = xml_response.SelectSingleNode("/RESPONSE/RESULTTEXT").InnerText;
- //XmlNodeList receipt = xml_response.SelectNodes("/RESPONSE/RECEIPT/LINE");
- //foreach (XmlNode node in receipt)
- //{
- // receipttext += node.SelectSingleNode(".").InnerText + Environment.NewLine;
- //}
- //if (string.IsNullOrEmpty(Serial))
- //{
- // pincredentials_pin = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/PIN").InnerText;
- // pincredentials_serial = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/SERIAL").InnerText;
- // pincredentials_VALIDTO = xml_response.SelectSingleNode("/RESPONSE/PINCREDENTIALS/VALIDTO").InnerText;
- //}
- if (result == "0")
- {
- Status = true;
- PaymentSuccess();
- //CardName = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText;
- //CardDescription = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[1]").InnerText + " " + FormatAmount(Amount);
- //CardRegistrationNumber = xml_response.SelectSingleNode("/RESPONSE/RECEIPT/LINE[6]").InnerText;
- Print();
- }
- else
- Status = false;
- }
- }
- public void HttpRequest(string url)
- {
- WebRequest request = WebRequest.Create(url);
- request.Method = "POST";
- byte[] byteArray = Encoding.UTF8.GetBytes(XMlRequest);
- request.ContentType = "application/x-www-form-urlencoded";
- request.ContentLength = byteArray.Length;
- Stream dataStream = request.GetRequestStream();
- dataStream.Write(byteArray, 0, byteArray.Length);
- dataStream.Close();
- WebResponse response = request.GetResponse();
- dataStream = response.GetResponseStream();
- StreamReader reader = new StreamReader(dataStream);
- XMlResponse = reader.ReadToEnd();
- saveLogSMS(Operation, XMlRequest, XMlResponse, _url_primary, string.Empty);
- reader.Close();
- dataStream.Close();
- response.Close();
- }
- public void BuildRequest()
- {
- if(Operation == "Activate")
- {
- Tid = Int32.Parse(Utils.GenerateTid(10));
- if (EAN.IndexOf(".") > -1)
- EAN = EAN.Replace(".", string.Empty);
- XMlRequest = @"<REQUEST TYPE=""SALE"">
- <USERNAME>" + _username + @"</USERNAME>
- <PASSWORD>" + _password + @"</PASSWORD>
- <TERMINALID>" + _terminal + @"</TERMINALID>
- <LOCALDATETIME>" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"</LOCALDATETIME>
- <TXID>" + Tid + @"</TXID>
- <CARD>
- <EAN>" + EAN + @"</EAN>";
- if (!string.IsNullOrEmpty(Serial))
- XMlRequest += "<PAN>" + Serial + "</PAN>";
- XMlRequest += @"</CARD>
- <RECEIPT>
- <LANGUAGE>pt</LANGUAGE>
- <CHARSPERLINE>40</CHARSPERLINE>
- </RECEIPT>
- <CURRENCY>978</CURRENCY>
- <AMOUNT>" + Amount + @"</AMOUNT>
- </REQUEST>";
- }
- else if(Operation == "Cancel")
- {
- Tid = Int32.Parse(Utils.GenerateTid(10));
- XMlRequest = @"<REQUEST TYPE=""CANCEL"">
- <USERNAME>" + _username + @"</USERNAME>
- <PASSWORD>" + _password + @"</PASSWORD>
- <TERMINALID>" + _terminal + @"</TERMINALID>
- <LOCALDATETIME>" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + @"</LOCALDATETIME>
- <TXID>" + Tid + @"</TXID>
- <TXREF>" + TXID + @"</TXREF>
- <AMOUNT>" + Amount + @"</AMOUNT>
- <CARD>
- <EAN>" + EAN + @"</EAN>";
- if (!string.IsNullOrEmpty(Serial))
- XMlRequest += "<PAN>" + Serial + "</PAN>";
- XMlRequest += @"</CARD>
- </REQUEST>";
- }
- }
- public void PaymentSuccess()
- {
- Database database = new Database("vasp_bo");
- ArrayList parameters = new ArrayList();
- try
- {
- int opdb = -1;
- switch (Operation.ToLower())
- {
- case "activate": opdb = 1; break;
- case "cancel": opdb = 2; break;
- }
- parameters.Add(new Database.DBParams("operator", SqlDbType.NVarChar, "Epay", null));
- parameters.Add(new Database.DBParams("operation", SqlDbType.Int, opdb, null));
- parameters.Add(new Database.DBParams("tid", SqlDbType.Int, Tid, null));
- parameters.Add(new Database.DBParams("agent_id", SqlDbType.VarChar, AgentID, null));
- parameters.Add(new Database.DBParams("service_id", SqlDbType.VarChar, ServiceID, null));
- parameters.Add(new Database.DBParams("amount", SqlDbType.VarChar, Amount, null));
- parameters.Add(new Database.DBParams("reference", SqlDbType.VarChar, Reference, null));
- int i = database.ExecuteNonQuery(CommandType.StoredProcedure, "ng_create_payment_success", parameters, true);
- if (i > 0)
- {
- //Success = true;
- }
- else
- {
- //Success = false;
- }
- }
- catch (Exception e)
- {
- Functions.InsertLogsDatabase("Kios|Epay.cs", "OfflinePayments", "Error: " + e.Message);
- }
- finally
- {
- database.Dispose();
- parameters.Clear();
- }
- }
- public void Print()
- {
- string _errorMessage = string.Empty;
- string op_type = string.Empty;
- Database database = new Database("vasp_bo_gespos");
- ArrayList parameters = new ArrayList();
- try
- {
- parameters.Add(new Database.DBParams("AgentID", SqlDbType.Int, AgentID, null));
- parameters.Add(new Database.DBParams("ServiceID", SqlDbType.Int, ServiceID, null));
- parameters.Add(new Database.DBParams("Reference", SqlDbType.VarChar, Reference, null));
- parameters.Add(new Database.DBParams("Amount", SqlDbType.VarChar, Amount, null));
- parameters.Add(new Database.DBParams("Operator", SqlDbType.NVarChar, "Epay", null));
- parameters.Add(new Database.DBParams("Operation_type", SqlDbType.VarChar, Operation, null));
- parameters.Add(new Database.DBParams("tid", SqlDbType.NVarChar, Tid, null));
- parameters.Add(new Database.DBParams("serial", SqlDbType.NVarChar, Serial, null));
- parameters.Add(new Database.DBParams("card_name", SqlDbType.NVarChar, CardName, null));
- parameters.Add(new Database.DBParams("card_description", SqlDbType.NVarChar, CardDescription, null));
- parameters.Add(new Database.DBParams("card_aditional_information", SqlDbType.NVarChar, CardAditionalInformation, null));
- parameters.Add(new Database.DBParams("card_registration_number", SqlDbType.NVarChar, CardRegistrationNumber, null));
- parameters.Add(new Database.DBParams("card_pin_pin", SqlDbType.NVarChar, Operation == "Activate" ? pincredentials_pin : TXID, null));
- parameters.Add(new Database.DBParams("card_pin_serial", SqlDbType.NVarChar, pincredentials_serial, null));
- parameters.Add(new Database.DBParams("card_pin_validto", SqlDbType.NVarChar, pincredentials_VALIDTO, null));
- parameters.Add(new Database.DBParams("receipt_text", SqlDbType.NVarChar, receipttext, null));
- int i = database.ExecuteNonQuery(CommandType.StoredProcedure, "ng_create_print_epay", parameters, true);
- if (i > 0)
- {
- //Success = true;
- }
- else
- {
- //Success = false;
- }
- }
- catch (Exception e)
- {
- Functions.InsertLogsDatabase("Kios|Epay.cs", "print", "Error: " + e.ToString());
- }
- finally
- {
- database.Dispose();
- parameters.Clear();
- }
- }
- public void saveLogSMS(string operation, string xml_send, string xml_receive, string url, string Status)
- {
- Database database = new Database("vasp_bo");
- ArrayList parameters = new ArrayList();
- try
- {
- parameters.Add(new Database.DBParams("operator", SqlDbType.VarChar, "Epay", null));
- parameters.Add(new Database.DBParams("url_request", SqlDbType.NVarChar, url, null));
- parameters.Add(new Database.DBParams("operation", SqlDbType.VarChar, Operation, null));
- parameters.Add(new Database.DBParams("xml_send", SqlDbType.VarChar, xml_send, null));
- parameters.Add(new Database.DBParams("xml_receive", SqlDbType.NVarChar, xml_receive, null));
- parameters.Add(new Database.DBParams("status", SqlDbType.VarChar, Status, null));
- parameters.Add(new Database.DBParams("debug", SqlDbType.NVarChar, "", null));
- parameters.Add(new Database.DBParams("tid", SqlDbType.Int, Tid, null));
- parameters.Add(new Database.DBParams("ip_user", SqlDbType.VarChar, HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], null));
- parameters.Add(new Database.DBParams("agent_id", SqlDbType.VarChar, this.AgentID, null));
- parameters.Add(new Database.DBParams("key_error", SqlDbType.Bit, 0, null));
- int i = database.ExecuteNonQuery(CommandType.StoredProcedure, "ng_create_logs", parameters, true);
- }
- catch (Exception e)
- {
- Functions.InsertLogsDatabase("Kios|Epay.cs", "saveLogSMS", "Error: " + e.ToString());
- }
- finally
- {
- database.Dispose();
- parameters.Clear();
- }
- }
- protected string convertAmount(string amount)
- {
- string text = string.Empty;
- int len = amount.Length;
- string last = amount.Substring(len - 2, 2);
- string begin = amount.Substring(0, len - 2);
- text = begin + "." + last;
- return text;
- }
- public string BuildJson()
- {
- return JsonConvert.SerializeObject(this);
- }
- private string FormatAmount(string Amount)
- {
- return Amount.Substring(0, Amount.Length - 2) + "," + Amount.Substring(Amount.Length - 2, 2) + " EUR";
- }
- }
- }
Add Comment
Please, Sign In to add comment