public static async Task <string> TransferFunds(E_Pay_Web_API.Helpers.Transfer_Light transfer) { HttpClient client = new HttpClient(); client.BaseAddress = new Uri("https://epay.cobcreditunion.com:443/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var content = new StringContent(JsonConvert.SerializeObject(transfer), Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync( "api/Transfers?" + "memberId=" + transfer.memid + "&pin=" + transfer.pin + "&fromAcct=" + transfer.fromAcct + "&toAcct=" + transfer.toAccountNumber + "&amount=" + transfer.amount.ToString(), content ); return(await response.Content.ReadAsAsync <string>()); }
//################################################ // LIVE CODE //################################################ //public async Task<string> PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer) //################################################ //################################################ // TEST CODE //################################################ public string PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer) //################################################ { try { Guid fiId = Guid.Parse(fiIdString); string userId = User.Identity.GetUserId(); var manager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext())); ApplicationUser targetUser = new ApplicationUser(); AssociatedAccount targetAccount = new AssociatedAccount(); switch (transfer.toInfoType) { case "EmailAddress": targetUser = manager.FindByEmail(transfer.toEmailAddress); if (targetUser == null) { return("The email address provided was invalid. No account found."); } targetAccount = db.AssociatedAccounts.Where(p => p.UserID == targetUser.Id && p.DefaultAccount).FirstOrDefault(); break; case "AccountNumber": targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.DefaultAccount).FirstOrDefault(); targetUser = manager.FindById(targetAccount.UserID); break; case "MyAccount": targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.UserID == userId).FirstOrDefault(); targetUser = manager.FindById(targetAccount.UserID); break; } // var fromAccount = db.AssociatedAccounts.Where(p => p.AssociatedAccountID.ToString() == transfer.fromAcct).First(); if (targetAccount == null) { return("Recipient does not have a default account or the account number provided is invalid."); } string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First(); string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId); transfer.fromEmailAddress = userId; transfer.memid = fromAccount.MemberID; transfer.fromAcct = fromAccount.AccountNumber; transfer.toAccountNumber = targetAccount.AccountNumber; transfer.pin = decryptedPin; //################################################ // LIVE CODE //################################################ //string transferResponse = await COB.TransferFunds(transfer); //char transferResponseCode = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2][1]; //string transferMessage = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2].Substring(1); //################################################ //################################################ // TEST CODE //################################################ string transferMessage = "OKITC"; //################################################ db.Transfers.Add(new Transfer { SourceInstitutionID = fiId, SourceAccountID = fromAccount.AssociatedAccountID, SourceAccountNumber = fromAccount.AccountNumber, SourceTransactionID = "", BillerID = Guid.Parse(fiIdString), BillerAccountNumber = targetAccount.AccountNumber, BillerTransactionID = "", TransferAmount = (decimal)transfer.amount, TransferDescription = "COB Internal Transfer", Status = transferMessage.Equals("OKITC") ? "Successful" : "Error", StatusDescription = transferMessage, Created = DateTime.Now }); db.SaveChanges(); return(transferMessage); } catch (Exception ex) { return("A fatal error has occurred. Please try again later."); } }