resendOtp method

Future<LokotroEWalletResendResponse> resendOtp({
  1. required String transactionId,
})

Resend OTP for e-wallet payment

Implementation

Future<LokotroEWalletResendResponse> resendOtp({
  required String transactionId,
}) async {
  try {
    final requestData = {
      'payment_id': transactionId,
    };

    final response = await _httpClient.post<Map<String, dynamic>>(
      '/payments/resend-otp',
      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 LokotroEWalletResendResponse(
        success: responseData['success'] as bool,
        status: responseData['status'] as String,
        otpSentTo: responseData['otp_sent_to'] as String?,
        resendCount: responseData['resend_count'] as int?,
        maxResends: responseData['max_resends'] as int?,
        resentAt: responseData['resent_at'] as String?,
        expiresAt: responseData['expires_at'] as String?,
        message: response.data!['message'] as String,
      );
    } else {
      throw LokotroPayException(
        message: response.message,
        code: 'OTP_RESEND_FAILED',
      );
    }
  } catch (e) {
    LokotroPayLog.m('ewallet.resend_otp.err', 'resend OTP failed (type=${e.runtimeType})');
    rethrow;
  }
}