buildMerchantArgsFromAmount function

Map<String, dynamic>? buildMerchantArgsFromAmount({
  1. required String amount,
  2. String? merchantId,
  3. String? merchantName,
  4. String? merchantInfo,
  5. List<SummaryLineItem>? extraSummaryItems,
  6. Map<String, dynamic>? builder,
})

Convenience helper: build merchantArgs from common form fields like an amount string and optional summary items. This keeps callers from reimplementing amount-to-cents and ensures the package remains the single source of truth for merchant args construction.

Implementation

Map<String, dynamic>? buildMerchantArgsFromAmount({
  required String amount,
  String? merchantId,
  String? merchantName,
  String? merchantInfo,
  List<SummaryLineItem>? extraSummaryItems,
  Map<String, dynamic>? builder,
}) {
  final a = double.tryParse(amount.replaceAll(',', '')) ?? 0.0;
  final cents = (a * 100).round();
  final summary = <SummaryLineItem>[];
  // Primary order line
  summary.add(SummaryLineItem(label: 'Order', amountCents: cents));
  // Append any additional lines provided by the caller
  if (extraSummaryItems != null && extraSummaryItems.isNotEmpty) {
    summary.addAll(extraSummaryItems);
  }
  return buildMerchantArgs(
    merchantId: merchantId,
    merchantName: merchantName,
    merchantInfo: merchantInfo,
    summaryItems: summary,
    builder: (builder == null)
        ? {'amountCents': cents}
        : {...builder, 'amountCents': cents},
  );
}