pollPayForItStatus function
Poll le statut toutes les 5 secondes, max 10 fois, s'arrête si SUCCESS ou FAILED
Implementation
Future<Map<String, dynamic>> pollPayForItStatus(String reference,
{int maxTries = 10, Duration interval = const Duration(seconds: 5)}) async {
int tries = 0;
while (tries < maxTries) {
final statusData = await checkPayForItStatus(reference);
if (statusData != null) {
final status = statusData['status']?.toString().toUpperCase();
if (status == 'SUCCESS' || status == 'SUCCESSFUL') {
return {
...statusData,
'finalStatus': 'SUCCESS',
};
} else if (status == 'FAILED') {
return {
...statusData,
'finalStatus': 'FAILED',
};
}
}
await Future.delayed(interval);
tries++;
}
return {
'status': 'TIMEOUT',
'message':
'Le statut de la transaction n\'a pas pu être déterminé dans le délai imparti.',
'reference': reference
};
}