toJson method

Map<String, dynamic> toJson()

Convert to JSON for API call (single request with all data)

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,
  };

  // Add optional URLs
  if (notifyUrl != null) json['notify_url'] = notifyUrl;
  if (successRedirectUrl != null) json['success_redirect_url'] = successRedirectUrl;
  if (failRedirectUrl != null) json['fail_redirect_url'] = failRedirectUrl;

  // Add user information if userInfo = "full"
  if (userInfo == 'full') {
    if (firstName != null) json['first_name'] = firstName;
    if (lastName != null) json['last_name'] = lastName;
    if (phoneNumber != null) json['phone_number'] = phoneNumber;
    if (email != null) json['email'] = email;
  }

  // Add payment method specific fields if paymentMethodInfo = "full"
  if (paymentMethodInfo == 'full') {
    // E-wallet fields
    if (walletNumber != null) json['wallet_number'] = walletNumber;
    if (walletPin != null) json['wallet_pin'] = walletPin;

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

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

    // Card fields
    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 merchant information
  if (merchant != null) {
    json['merchant'] = merchant!.toJson();
  }

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

  // Add transactional currency
  if (transactionalCurrency != null) {
    json['transactional_currency'] = transactionalCurrency!.toLowerCase();
  }

  // Add native pay token (Google Pay / Apple Pay)
  if (nativePayToken != null) json['native_pay_token'] = nativePayToken;
  if (nativePayTokenType != null) json['native_pay_token_type'] = nativePayTokenType;

  return json;
}