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