toJson method

Map<String, Object> toJson()

Converts the Message object to JSON.

Implementation

Map<String, Object> toJson() {
  final map = <String, Object>{};

  map['MTI'] = mti;

  final mPan = pan;
  final mProcessCode = processCode;
  final mStan = stan;
  final mDateTime = dateTime;
  final mCardEntryMode = cardEntryMode;
  final mNii = nii;
  final mPosConditionCode = posConditionCode;
  final mTrack2 = track2;
  final mTerminalId = terminalId;
  final mMerchantId = merchantId;
  final mCurrency = currency;
  final mDataElement = dataElement;
  final mPinBlock = pinBlock;
  final mMac = mac;

  if (mPan != null) {
    map['PAN'] = mPan;
  }

  if (mProcessCode != null) {
    map['ProcessCode'] = mProcessCode;
  }

  if (mStan != null) {
    map['Stan'] = mStan;
  }

  if (mDateTime != null) {
    map['DateTime'] = mDateTime.toIso8601String();
  }

  if (mCardEntryMode != null) {
    map['CardEntryMode'] = mCardEntryMode;
  }

  if (mNii != null) {
    map['NII'] = mNii;
  }

  if (mPosConditionCode != null) {
    map['PosConditionCode'] = mPosConditionCode;
  }

  if (mTrack2 != null) {
    map['Track2'] = mTrack2;
  }

  if (mTerminalId != null) {
    map['TerminalId'] = mTerminalId;
  }

  if (mMerchantId != null) {
    map['MerchantId'] = mMerchantId;
  }

  if (mDataElement != null) {
    map['DataElement'] = mDataElement.toJson();
  }

  if (mCurrency != null) {
    map['Currency'] = mCurrency;
  }

  if (mPinBlock != null) {
    map['PinBlock'] = '0x${hex.encode(mPinBlock).toUpperCase()}';
  }

  for (var i = 1; i < 64; i++) {
    final f = _data[i];

    if (f == null) {
      continue;
    }

    final fld = _valueOf(i);

    if (fld.type == 'ans' || fld.type == 'an') {
      final z = f.indexOf(0);
      if (z > 0) {
        map[i.toString()] = String.fromCharCodes(f.take(z));
      } else {
        map[i.toString()] = String.fromCharCodes(f);
      }
    } else if (fld.type == 'n') {
      map[i.toString()] = hex.encode(f);
    } else if (fld.type == 'b') {
      map[i.toString()] = '0x${hex.encode(f).toUpperCase()}';
    }
  }

  if (mMac != null) {
    map['MAC'] = mMac;
  }

  return map;
}