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