Beispiel #1
0
        public byte[] BuildMessage(bool addBitmapAsString)
        {
            MessageWriter mw = new MessageWriter();

            // put the MTI
            if (!string.IsNullOrEmpty(MessageTypeIndicator))
            {
                mw.AddRange(Encoding.UTF8.GetBytes(MessageTypeIndicator));
            }

            // deal with the bitmaps
            GenerateBitmaps();
            if (addBitmapAsString)
            {
                mw.AddRange(Encoding.UTF8.GetBytes(Bitmap.ToHexString()));
            }
            else
            {
                mw.AddRange(Bitmap.ToByteArray());
            }

            // primary bitmap
            DataElementId currentElement = Bitmap.GetNextDataElement();

            do
            {
                if (elements.ContainsKey(currentElement))
                {
                    Iso8583Element element = elements[currentElement];
                    mw.AddRange(element.GetSendBuffer());
                }
                currentElement = Bitmap.GetNextDataElement();
            }while (currentElement != 0);

            // secondary bitmap
            if (messageType.Equals(Iso8583MessageType.CompleteMessage))
            {
                currentElement = secondaryBitmap.GetNextDataElement();
                while (currentElement != 0)
                {
                    Iso8583Element element = elements[currentElement];
                    mw.AddRange(element.GetSendBuffer());

                    currentElement = secondaryBitmap.GetNextDataElement();
                }
            }

            return(mw.ToArray());
        }
Beispiel #2
0
        public new string ToString()
        {
            StringBuilder sb = new StringBuilder();

            // put the MTI
            if (!string.IsNullOrEmpty(MessageTypeIndicator))
            {
                sb.Append(string.Format("MTI: {0}\r\n", MessageTypeIndicator));
            }

            // deal with the bitmaps
            GenerateBitmaps();
            sb.Append(string.Format("P_BITMAP: {0}\r\n", Bitmap.ToHexString()));

            // primary bitmap
            DataElementId currentElement = Bitmap.GetNextDataElement();

            do
            {
                Iso8583Element element = elements[currentElement];
                if (currentElement.Equals(DataElementId.DE_001))
                {
                    sb.Append(string.Format("S_BITMAP: {0}\r\n", secondaryBitmap.ToHexString()));
                }
                else
                {
                    // special handling for DE 55
                    if (element.Id.Equals(DataElementId.DE_055))
                    {
                        byte[] buffer = element.Buffer;
                        sb.Append(string.Format("{0}: {1}{2}\r\n", element.Id, StringUtils.PadLeft(buffer.Length, 3, '0'), StringUtils.HexFromBytes(buffer)));
                    }
                    else
                    {
                        sb.Append(string.Format("{0}: {1}\r\n", element.Id, Encoding.UTF8.GetString(element.GetSendBuffer())));
                    }
                }

                currentElement = Bitmap.GetNextDataElement();
            }while (currentElement != 0);

            // secondary bitmap
            if (messageType.Equals(Iso8583MessageType.CompleteMessage))
            {
                currentElement = secondaryBitmap.GetNextDataElement();
                while (currentElement != 0)
                {
                    Iso8583Element element = elements[currentElement];
                    sb.Append(string.Format("{0}: {1}\r\n", element.Id, Encoding.ASCII.GetString(element.GetSendBuffer())));

                    currentElement = secondaryBitmap.GetNextDataElement();
                }
            }

            return(sb.ToString());
        }