示例#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());
        }
 public byte[] ToByteArray() {
     MessageWriter mw = new MessageWriter();
     foreach (Dictionary<DE54_AmountTypeCode, DE54_AdditionalAmount> amounts in amountMap.Values) {
         foreach (DE54_AdditionalAmount amount in amounts.Values) {
             mw.AddRange(amount.ToByteArray());
         }
     }
     return mw.ToArray();
 }
        internal byte[] GetSendBuffer()
        {
            if (Buffer == null)
            {
                return(new byte[0]);
            }
            switch (Type)
            {
            case DataElementType.LVAR:
            case DataElementType.LLVAR:
            case DataElementType.LLLVAR:
                string        length = StringUtils.PadLeft(Buffer.Length, Type.Equals(DataElementType.LVAR) ? 1 : Type.Equals(DataElementType.LLVAR) ? 2 : 3, '0');
                MessageWriter mw     = new MessageWriter();
                mw.AddRange(Encoding.UTF8.GetBytes(length));
                mw.AddRange(Buffer);
                return(mw.ToArray());

            default:
                return(Buffer);
            }
        }