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); } }