checkout method
Future<void>
checkout(
- BuildContext context, {
- required CheckoutData data,
- dynamic onSuccess(
- CheckoutValues data
- dynamic onError(
- Object error
Implementation
Future<void> checkout(BuildContext context,
{required final CheckoutData data,
Function(CheckoutValues data)? onSuccess,
Function(Object error)? onError}) async {
CheckoutState.init(onError: onError, onSuccess: onSuccess);
try {
await _saveCredentials();
final CheckoutService checkoutService = CheckoutService(token.toString());
final CheckoutRepository checkoutRepository =
CheckoutRepository(checkoutService);
_createCheckoutUseCase = CreateCheckoutUseCase(checkoutRepository);
final parsedData = _parse(data);
final checkoutResult =
await _createCheckoutUseCase.createCheckout(parsedData);
Loggers.log('Checkout Create Result', jsonEncode(checkoutResult));
String? checkoutId = checkoutResult['id'];
String phoneNumber = checkoutResult['shopper']['phone'];
String? merchantId = checkoutResult['merchant_id'];
CheckoutState().checkoutValues!.edit(
checkoutId: checkoutId, merchantId: merchantId, phone: phoneNumber);
if (phoneNumber != '') {
//Se phone validado, chama mutation initialPhoneAuth, e ir para simpleOTP
final result = await initiatePhoneAuth(
context: context,
checkoutId: checkoutId,
forceOtp: true,
phone: phoneNumber,
sendBySms: true,
sendByWhatsapp: false,
);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OtpPages(
errorMessage: result?['error'],
metadata: result?['metadata'],
),
),
);
} else if (phoneNumber == '') {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => const AddPhoneNumberPage(),
),
);
} else if (merchantId == null || checkoutId == null) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const DeclinedMessagePage()),
);
} else {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const DeclinedMessagePage()),
);
}
} catch (e) {
print("Failed to create checkout $e");
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const GenericErrorPage()),
);
}
}