buildMerchantArgs function
Build a normalized merchantArgs map (or null if empty).
Merge order (lowest -> highest priority):
buildermap (if provided)LpeConfigdefaults (used only when value still missing)- Explicit parameters passed to this function
Implementation
Map<String, dynamic>? buildMerchantArgs({
String? merchantId,
String? merchantName,
String? merchantInfo,
String? gatewayMerchantId,
List<SummaryLineItem>? summaryItems,
Map<String, dynamic>? builder,
}) {
// Start from builder map if provided, otherwise use the app-wide builder
final ctrl = MerchantArgsController.fromMap(builder ?? _appBuilder);
// Apply LpeConfig defaults if not present in fallback
final current = ctrl.toMap();
if ((current == null || !current.containsKey('merchantName')) &&
LpeConfig.defaultMerchantName != null &&
LpeConfig.defaultMerchantName!.isNotEmpty) {
ctrl.merge({'merchantName': LpeConfig.defaultMerchantName});
}
if ((current == null || !current.containsKey('merchantInfo')) &&
LpeConfig.defaultMerchantInfo != null &&
LpeConfig.defaultMerchantInfo!.isNotEmpty) {
ctrl.merge({'merchantInfo': LpeConfig.defaultMerchantInfo});
}
// Explicit params override fallback/defaults
if (merchantId != null && merchantId.isNotEmpty) {
ctrl.merge({'merchantId': merchantId});
}
if (merchantName != null && merchantName.isNotEmpty) {
ctrl.merge({'merchantName': merchantName});
}
if (merchantInfo != null && merchantInfo.isNotEmpty) {
ctrl.merge({'merchantInfo': merchantInfo});
}
if (gatewayMerchantId != null && gatewayMerchantId.isNotEmpty) {
ctrl.merge({'gatewayMerchantId': gatewayMerchantId});
}
if (summaryItems != null && summaryItems.isNotEmpty) {
ctrl.merge({'summaryItems': summaryItems.map((s) => s.toJson()).toList()});
}
return ctrl.toMap();
}