public static H2HMessage ReversalAnswer(H2HMessage msg, ResponseMessage res) { msg.Type = "0430"; msg.Fields[2] = msg.Fields[2].Length.ToString() + msg.Fields[2]; msg.Fields[39] = res.ResponseCode; return(msg); }
public static H2HMessage Retail(string F2, string F4, string F11, string F14, string F41) { H2HMessage msg = new H2HMessage(); DateTime dt = DateTime.Now; msg.Type = "0200"; msg.Fields[2] = F2.Length.ToString() + F2; msg.Fields[3] = "000000"; msg.Fields[4] = F4.PadLeft(12, '0'); msg.Fields[7] = dt.ToString("ddMMHHmmss"); msg.Fields[11] = F11; string f12, f13; f12 = dt.ToString("hhmmss"); f13 = dt.ToString("ddMM"); msg.Fields[12] = f12; msg.Fields[13] = f13; msg.Fields[14] = F14; msg.Fields[18] = "5999"; msg.Fields[22] = "012"; msg.Fields[25] = "00"; msg.Fields[41] = F41;//E1: F2.Substring(F2.Length - 8, 8);// strCardInfos[2]; msg.Fields[49] = "704"; return(msg); }
public static H2HMessage Reversal(string F11, string F2, string F4, string F41, string OF7, string OF11, string OF12, string OF13, string OF37, string OF38, string OMTI) { H2HMessage msg = new H2HMessage(); msg.Type = "0420"; msg.Fields[2] = "16" + F2.Trim(); msg.Fields[3] = "400000"; msg.Fields[4] = F4.PadLeft(12, '0'); DateTime dt = DateTime.Now; msg.Fields[7] = OF7; msg.Fields[11] = OF11; msg.Fields[12] = OF12; msg.Fields[13] = OF13; msg.Fields[18] = "5999"; msg.Fields[41] = F41;//E1: F2.Trim().Substring(F2.Length - 8, 8); msg.Fields[49] = "704"; //msg.Fields[37] = OF37; //msg.Fields[38] = OF38; msg.Fields[90] = OMTI + OF11 + OF7 + "0000074012000000000000";// "020010013112051809360000074012000000000000"; //msg.Fields[90] = OF11 + OF7 + "0200";// "0000074012000000000000";// "020010013112051809360000074012000000000000"; return(msg); }
//CardNumber;ExpDate;POCode;Amount;ReceivedCard public static H2HMessage FundTransfer(string F11, string F2, string F14, string F41, string F4, string F103) { H2HMessage msg = new H2HMessage(); msg.Type = "0200"; msg.Fields[2] = F2.Length.ToString() + F2; msg.Fields[3] = "400000"; System.DateTime transmissionDate = System.DateTime.Now; msg.Fields[7] = DateTime.Now.ToString("ddMMHHmmss"); msg.Fields[11] = F11; string f12, f13; f12 = System.DateTime.Now.ToString("HHmmss"); f13 = System.DateTime.Now.ToString("ddMM"); msg.Fields[12] = f12; msg.Fields[13] = f13; //msg.Fields[28] = "000000000"; msg.Fields[18] = "5999"; msg.Fields[22] = "012"; msg.Fields[25] = "00"; //msg.Fields[32] = F32.Length.ToString().PadLeft(2, '0') + F32; msg.Fields[41] = F41.PadRight(8, '0');//E1: F2.Substring(F2.Length - 8, 8); msg.Fields[49] = "704"; msg.Fields[4] = F4.PadLeft(12, '0'); msg.Fields[14] = F14; msg.Fields[102] = msg.Fields[2]; msg.Fields[103] = F103.Length.ToString() + F103; return(msg); }
public static H2HMessage BalanceMessage(string F11, string F2, string F14, string F41) { H2HMessage msg = new H2HMessage(); msg.Type = "0100"; msg.Fields[2] = F2.Length.ToString() + F2; msg.Fields[3] = "301000"; msg.Fields[4] = "000000000000"; System.DateTime transmissionDate = System.DateTime.Now; msg.Fields[7] = DateTime.Now.ToString("ddMMHHmmss"); msg.Fields[11] = F11; string f12, f13; f12 = System.DateTime.Now.ToString("HHmmss"); f13 = System.DateTime.Now.ToString("ddMM"); msg.Fields[12] = f12; msg.Fields[13] = f13; msg.Fields[14] = F14; msg.Fields[18] = "5999"; msg.Fields[22] = "012"; msg.Fields[25] = "00"; msg.Fields[41] = F41.PadLeft(8, '0');//E1: F2.Substring(F2.Length - 8, 8);// strCardInfos[2]; msg.Fields[49] = "704"; return(msg); }
/// <summary> /// Hàm trả về của hàm fundtransfer /// </summary> /// <param name="msg">message định dạng</param> /// <param name="F37">Số tham chiếu trả về định dạng YJJJXXNNNNNN</param> /// <param name="F38">mã số chuẩn chi</param> /// <param name="F39">mã lỗi trả về</param> /// <returns></returns> public static H2HMessage FundTransferAnswer(H2HMessage msg, ResponseMessage res) { msg.Type = "0210"; msg.Fields[2] = msg.Fields[2].Length.ToString() + msg.Fields[2]; msg.Fields[37] = res.RetrievalRefNum; // Retrieval Reference Number msg.Fields[38] = "000000"; // Authorisation Identification Response msg.Fields[39] = res.ResponseCode; // Response code return(msg); }
public static H2HMessage SignOnAnswer(H2HMessage msg, ResponseMessage res) { msg.Type = "0810"; msg.Fields[7] = DateTime.Now.ToString("ddMMHHmmss"); msg.Fields[39] = res.ResponseCode; msg.Fields[70] = "001"; return(msg); }
public static H2HMessage BalanceMessageAnswer(H2HMessage msg, ResponseMessage res) { //H2HMessage msg = new H2HMessage(); msg.Type = "0110"; msg.Fields[2] = msg.Fields[2].Length.ToString() + msg.Fields[2]; //msg.Fields[37] = imsg.Fields[37]; msg.Fields[39] = res.ResponseCode; // Response code msg.Fields[54] = res.Balance; // contains account information return(msg); }
public static H2HMessage SignOn(string F11) { H2HMessage msg = new H2HMessage(); msg.Type = "0800"; msg.Fields[7] = DateTime.Now.ToString("ddMMHHmmss"); msg.Fields[11] = F11.PadLeft(6, '0'); msg.Fields[70] = "001"; return(msg); }
public static H2HMessage Create(byte[] byteArray) { H2HMessage msg = new H2HMessage(); msg.Type = Encoding.ASCII.GetString(new byte[] { byteArray[2], byteArray[3], byteArray[4], byteArray[5] }); int bitmapLength = 8; string strBitmap = ""; for (int i = 0; i < 8; i++) { strBitmap += ConvertToBinary(byteArray[i + 6].ToString()); } if (strBitmap.StartsWith("1")) { bitmapLength = 16; for (int i = 8; i < 16; i++) { strBitmap += ConvertToBinary(byteArray[i + 6].ToString()); } } string strData = Encoding.ASCII.GetString(byteArray, 6 + bitmapLength, byteArray.Length - 6 - bitmapLength); int illvar = 0; for (int i = 1; i < strBitmap.Length; i++) { if (strBitmap[i].Equals('1')) { illvar = 0; if (msg.fieldsLength[i] >= 0) { msg.Fields[i + 1] = strData.Substring(0, msg.fieldsLength[i]); strData = strData.Substring(msg.fieldsLength[i]); } else { illvar = -msg.fieldsLength[i]; int ilength = int.Parse(strData.Substring(0, illvar)); strData = strData.Substring(illvar); msg.Fields[i + 1] = strData.Substring(0, ilength); strData = strData.Substring(ilength); } } } if (string.IsNullOrEmpty(msg.Fields[37]) & (!string.IsNullOrEmpty(msg.Fields[38]))) { msg.Fields[37] = msg.Fields[38]; } return(msg); }
public static H2HMessage GetMessage(string strMessage) { H2HMessage h2h = new H2HMessage(); string[] str1 = strMessage.Split('#'); string[] str11 = str1[0].Split(';'); string[] str12 = str1[1].Split(';'); for (int i = 0; i < str11.Length; i++) { if (!String.IsNullOrEmpty(str12[i])) { h2h.Fields[int.Parse(str11[i])] = str12[i]; } } return(h2h); }
private H2HMessage ParseReceiveBuffer(Byte[] byteBuffer, int size) { H2HMessage h2hmsg = H2HMessage.Create(byteBuffer); H2HMessage msg = h2hmsg; if (LogManager.GetLogger("root").IsDebugEnabled) { LogManager.GetLogger("root").Debug(string.Format("{0}", h2hmsg.Convert2String())); } switch (h2hmsg.Type) { case "0800": msg = H2HMessage.SignOnAnswer(h2hmsg, merchant.NetworkMessages()); break; case "0100": msg = H2HMessage.BalanceMessageAnswer(h2hmsg, merchant.BalanceInquiry(h2hmsg.Fields[2])); break; case "0200": // phân loại tiếp theo processing code F3 if (h2hmsg.Fields[3] == "400000") { // fundtransfer msg = H2HMessage.FundTransferAnswer(h2hmsg, merchant.FundTransfer(h2hmsg.Fields[2], Convert.ToDecimal(h2hmsg.Fields[4]), h2hmsg.Fields[102], h2hmsg.Fields[103])); } if (h2hmsg.Fields[3] == "000000") { // retail msg = H2HMessage.RetailAnswer(h2hmsg, merchant.Retail(h2hmsg.Fields[11], h2hmsg.Fields[2], Convert.ToDecimal(h2hmsg.Fields[4]), h2hmsg.GetString())); } break; case "0420": msg = H2HMessage.ReversalAnswer(h2hmsg, merchant.Reverse(h2hmsg.Fields[11], h2hmsg.Fields[37])); break; } return(msg); }
private void ListenForMessages(Client client) { int recv = 0; while (true) { try { NetworkStream stream = client.Socket.GetStream(); byte[] bytAcceptMessage = new byte[2048]; recv = stream.Read(bytAcceptMessage, 0, bytAcceptMessage.Length); if (recv == 0) { break; } if (LogManager.GetLogger("root").IsDebugEnabled) { LogManager.GetLogger("root").Debug(string.Format("{0}", Encoding.ASCII.GetString(bytAcceptMessage))); } H2HMessage h2hMsg = ParseReceiveBuffer(bytAcceptMessage, recv); // gửi lại lại lệnh byte[] sbyt = h2hMsg.GetBytes(); stream.Write(sbyt, 0, sbyt.Length); //client.SendMessage(h2hMsg.GetBytes()); //break; } catch (IOException ex) { if (LogManager.GetLogger("root").IsDebugEnabled) { LogManager.GetLogger("root").Debug(ex); } break; } } }