processPayment method
- @action
- required String depositRequestId,
- CheckoutRequest? request,
Processa o pagamento delegando pro Orchestrator de acordo com o selectedMethod
Implementation
@action
Future<ValueResult<dynamic>> processPayment({
required String depositRequestId,
checkout_request.CheckoutRequest? request,
}) async {
setLoading(true);
clearError();
try {
final orchestrator = TsdtechClient.instance.orchestrator!;
ValueResult<dynamic> result;
if (isCardSelected) {
if (!validateCardForm()) {
setLoading(false);
return ValueResult.failure('Formulário de cartão inválido.');
}
final cardData = checkout_request.CardPaymentData(
cardHolderName: cardHolderName.trim(),
cardNumber: cardNumber.trim(),
cardExpiryDate: _toBackendCardExpiry(expiryDate.trim()),
securityCode: securityCode.trim(),
);
result = await orchestrator.payWithCard(request!, cardData);
} else if (isPixSelected) {
result = await orchestrator.payWithPix(depositRequestId);
if (result.isSuccess) {
final pixResponse = result.value as DepositPixResponse;
setPixData(
paymentId: pixResponse.id,
qrCode: pixResponse.textQrCode,
copyPasteCode: pixResponse.textQrCode,
expirationDate: pixResponse.expirationDate,
);
}
} else {
result = ValueResult.failure('Nenhum método de pagamento selecionado.');
}
if (result.isError) {
setError(result.error);
}
return result;
} catch (e) {
setError(e.toString());
return ValueResult.failure(e.toString());
} finally {
setLoading(false);
}
}