GatewayTransactionRequest.fromJson constructor
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>(),
);
}