public bool PayOnline(ICard card, int pin, double amount, string currency, string shopURL) { if (!isShopURLBanned(shopURL)) { if (isAvailableCard(card) && isValidCard(card)) { if (!card.IsBlocked() && card.CheckPin(pin)) { if (card.GetCardType().Equals(VirtualOneTimeCard.VIRTUAL_ONE_TIME_CARD)) { card.Block(); } return(takeMoneyFromAccountIfExists(amount, currency)); } } } return(false); }