submitPaymentDetails method

Future<LokotroEWalletSubmitResponse> submitPaymentDetails({
  1. required String transactionId,
  2. required String firstName,
  3. required String lastName,
  4. required String email,
  5. required String phoneNumber,
  6. required String ewalletNumber,
  7. required String ewalletPin,
  8. bool savePaymentMethod = false,
})

Submit e-wallet payment details

Implementation

Future<LokotroEWalletSubmitResponse> submitPaymentDetails({
  required String transactionId,
  required String firstName,
  required String lastName,
  required String email,
  required String phoneNumber,
  required String ewalletNumber,
  required String ewalletPin,
  bool savePaymentMethod = false,
}) async {
  try {
    final requestData = {
      'payment_id': transactionId,
      'payment_method_id': 'pm_ewallet_001', // Default e-wallet payment method
      'first_name': firstName,
      'last_name': lastName,
      'email': email,
      'phone_number': phoneNumber,
      'ewallet_number': ewalletNumber,
      'ewallet_pin': ewalletPin,
      'save_payment_method': savePaymentMethod,
    };

    final response = await _httpClient.post<Map<String, dynamic>>(
      '/payments/submit',
      data: requestData,
      parser: (data) => data as Map<String, dynamic>,
    );

    if (response.isSuccess && response.data != null) {
      final responseData = response.data!['data'] as Map<String, dynamic>;
      return LokotroEWalletSubmitResponse(
        success: responseData['success'] as bool,
        status: responseData['status'] as String,
        requiresOtp: responseData['requires_otp'] as bool? ?? false,
        otpSentTo: responseData['otp_sent_to'] as String?,
        estimatedCompletion: responseData['estimated_completion'] as String?,
        message: response.data!['message'] as String,
      );
    } else {
      throw LokotroPayException(
        message: response.message,
        code: 'PAYMENT_SUBMIT_FAILED',
      );
    }
  } catch (e) {
    LokotroPayLog.m('ewallet.submit.err', 'submit payment failed (type=${e.runtimeType})');
    rethrow;
  }
}