toJson method

Map<String, dynamic> toJson()

Implementation

Map<String, dynamic> toJson() {
  final json = <String, dynamic>{
    'customer_reference': customerReference,
    'amount': amount,
    'currency': currency.toLowerCase(),
    'payment_method': paymentMethod,
    'user_info': userInfo,
    'payment_method_info': paymentMethodInfo,
    'fee_covered_by': feeCoveredBy,
    'delivery_behaviour': deliveryBehaviour,
    'notify_url': notifyUrl,
  };

  // Add optional fields
  if (successRedirectUrl != null) json['success_redirect_url'] = successRedirectUrl;
  if (failRedirectUrl != null) json['fail_redirect_url'] = failRedirectUrl;
  if (merchant != null) json['merchant'] = merchant!.toJson();
  if (cfgSystemCountryId != null) json['cfg_system_country_id'] = cfgSystemCountryId;

  // Add user info fields if provided
  if (phoneNumber != null) json['phone_number'] = phoneNumber;
  if (email != null) json['email'] = email;
  if (firstName != null) json['first_name'] = firstName;
  if (lastName != null) json['last_name'] = lastName;

  // Add wallet fields if provided
  if (walletNumber != null) json['wallet_number'] = walletNumber;
  if (walletPin != null) json['wallet_pin'] = walletPin;

  // Add flash fields if provided
  if (flashNumber != null) json['flash_number'] = flashNumber;
  if (flashPin != null) json['flash_pin'] = flashPin;

  // Add card fields if provided
  if (cardNumber != null) json['card_number'] = cardNumber;
  if (cardExpiryDate != null) json['card_expiry_date'] = cardExpiryDate;
  if (cardCvv != null) json['card_cvv'] = cardCvv;
  if (cardHolderName != null) json['card_holder_name'] = cardHolderName;

  // Add mobile money fields if provided
  if (mobileMoneyPhoneNumber != null) json['mobile_money_phone_number'] = mobileMoneyPhoneNumber;

  // Add mastercard payment method if provided
  if (mastercardPaymentMethod != null) json['mastercard_payment_method'] = mastercardPaymentMethod;

  // Add metadata if provided
  if (metadata != null) json['metadata'] = metadata;

  return json;
}