GatewayTransactionRequest.fromJson constructor

GatewayTransactionRequest.fromJson(
  1. Map<String, dynamic> json
)

Parse from JSON. Validates that no banned-key surfaces were smuggled in. Throws ArgumentError when a banned key is found - the gateway layer translates that into a structured payloadInvalid failure.

Implementation

factory GatewayTransactionRequest.fromJson(Map<String, dynamic> json) {
  final banned = json.keys
      .where(_bannedTopLevelKeys.contains)
      .toList(growable: false);
  if (banned.isNotEmpty) {
    throw ArgumentError.value(
      banned,
      'GatewayTransactionRequest.fromJson',
      'banned key(s) present in payload',
    );
  }
  return GatewayTransactionRequest(
    encryptedPayload: json['encryptedPayload'] as String,
    ksn: json['ksn'] as String,
    entryMode: json['entryMode'] as String,
    amountMinorUnits: (json['amountMinorUnits'] as num).toInt(),
    currency: json['currency'] as String,
    idempotencyKey: json['idempotencyKey'] as String,
    reader: (json['reader'] as Map?)?.cast<String, dynamic>(),
    transactionMetadata:
        (json['transactionMetadata'] as Map?)?.cast<String, dynamic>(),
  );
}