/// <summary> /// Attempt to process a payment (Card Details and Transaction) using the Bank Service /// </summary> /// <param name="cardDetails">Card details to use for the payment</param> /// <param name="transaction">Currency and amount to process</param> /// <returns>Model containing the result of the Payment and, if applicable, Transaction ID</returns> public async Task <PaymentResponse> ProcessPaymentAsync(CardDetails cardDetails, TransactionDetails transaction) { try { var response = await _client.PayAsync(new Clients.PaymentDetails { CardDetails = new Clients.CardDetails { CardholderName = cardDetails.CardholderName, CardNumber = cardDetails.CardNumber, Csc = cardDetails.CSC, Expires = cardDetails.Expires, ValidFrom = cardDetails.ValidFrom }, TransactionDetails = new Clients.TransactionDetails { Amount = (double)transaction.Amount, Currency = transaction.Currency } }); return(new PaymentResponse { Successful = response.Successful, TransactionId = response.TransactionId }); } catch (Exception e) { _log.LogError(e, "Error in bank Processing Payment"); throw; } }