toJson method
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;
}