public bool Execute() { if (_gateway.IsGatewayAvaibale()) { return(new RetryHelper().TryNTimes(() => _gateway.MakePayment(_amount), 3)); } return(false); }
private async Task <PaymentStatusType> PremiumPayment(PayDetails payDetails) { int retry = 0; var payStatus = PaymentStatusType.Pending; while (retry < 3) { payStatus = await _premiumPaymentGateway.MakePayment(payDetails); if (payStatus == PaymentStatusType.Processed) { break; } retry++; } return(payStatus); }