Example #1
0
 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);
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        //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);
        }
Example #5
0
        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);
        }
Example #6
0
 /// <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);
 }
Example #7
0
        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);
        }
Example #8
0
 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);
 }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
        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;
                }
            }
        }