Exemplo n.º 1
0
        public ISOMessage SendMessageSync(ISOMessage isoMessage)
        {
            if (_client == null || !_client.Connected)
            {
                Connect();
            }

            if (_client.Connected)
            {
                Send(isoMessage);
                sendDone.WaitOne();

                Receive(_client);
                receiveDone.WaitOne();


                byte[] rData = Encoding.ASCII.GetBytes(response);

                if (_client.Connected)
                {
                    Disconnect();
                }

                if (response.Length == 0)
                {
                    throw new IOException("Remote server did not respond!");
                }

                return(ISOMessageBuilder.Unpacker().SetMessage(response).Build());
            }
            else
            {
                throw new IOException("Client not connected!");
            }
        }
        public void TestUnpackMessage()
        {
            ISOMessage iso = ISOMessageBuilder.Unpacker()
                             .SetMessage(message)
                             .Build();

            Assert.AreEqual(message, iso.ToString());
            Assert.AreEqual(iso.GetStringField(FIELDS.F11_STAN, true), "123456");
            Assert.AreEqual(iso.GetStringField(FIELDS.F22_EntryMode, true), "123F");
            Assert.AreEqual(iso.GetStringField(FIELDS.F24_NII_FunctionCode, true), "123F");
            Assert.AreEqual(iso.GetStringField(FIELDS.F25_POS_ConditionCode, true), "12");
            Assert.AreEqual(iso.GetStringField(FIELDS.F41_CA_TerminalID, true), "12345678");
            Assert.AreEqual(iso.GetStringField(FIELDS.F42_CA_ID, true), "123456789012345");
        }
        public void TestPackMessage()
        {
            ISOMessage iso = ISOMessageBuilder.Packer(VERSION.V1987)
                             .NetworkManagement()
                             .MTI(MESSAGE_FUNCTION.Request, MESSAGE_ORIGIN.Acquirer)
                             .ProcessCode("930000")
                             .SetField(FIELDS.F11_STAN, "123456")
                             .SetField(FIELDS.F22_EntryMode, "123F")
                             .SetField(FIELDS.F24_NII_FunctionCode, "123F")
                             .SetField(FIELDS.F25_POS_ConditionCode, "12")
                             .SetField(FIELDS.F41_CA_TerminalID, "12345678")
                             .SetField(FIELDS.F42_CA_ID, "123456789012345")
                             .GenerateMac(data =>
            {
                return(StringUtil.HexStringToByteArray("AB6A53FC655F1487"));
            })
                             .SetHeader("1234567890")
                             .Build();

            Assert.AreEqual(message, iso.ToString());
        }