protected override Transaction Deposit(Account account, Transfer transfer, string code, string description) { var payment = (CardPayment)transfer; var depositTransaction = account.Deposit(code, description, Settings.Location, new Money(transfer.Currency, transfer.Amount), MoneyConverter); var paymentLink = new PaymentTransactionLink(depositTransaction, payment.Order); _paymentTransactionLinkRepository.Create(paymentLink); return(depositTransaction); }
public void Can_VaBank_Context_Save_PaymentOrder_And_CardPayment() { long paymentNumber = 123; var priorCorrAcc = Context.Set <CorrespondentAccount>().Single(x => x.AccountNo == "3014153001749"); var user = Context.Set <User>().Single(x => x.UserName == "terminator"); var userPaymentProfile = Context.Set <UserPaymentProfile>().Single(x => x.UserId == user.Id); var userAccount = Context.Set <UserAccount>().First(x => x.Owner.Id == user.Id); var cardAccount = Context.Set <CardAccount>().Single(x => x.Owner.Id == user.Id && x.AccountNo == userAccount.AccountNo); var paymentOrderTemplate = Context.Set <PaymentOrderTemplate>().Single(x => x.TemplateCode == "PAYMENT-CELL-VELCOM-PHONENO"); var currency = Context.Set <Currency>().Single(x => x.ISOName == "BYR"); var paymentTemplate = Context.Set <PaymentTemplate>().Single(x => x.Code == paymentOrderTemplate.TemplateCode); var card = cardAccount.Cards.First(); var paymentOrder = new PaymentOrder( paymentNumber, user.Profile.FirstName + " " + user.Profile.LastName, "153001966", cardAccount.AccountNo, userPaymentProfile.PayerTIN, paymentOrderTemplate.BeneficiaryName, paymentOrderTemplate.BeneficiaryBankCode, paymentOrderTemplate.BeneficiaryAccountNo, paymentOrderTemplate.BeneficiaryTIN, String.Format("Пополнение счета. Номер телефона: {0}", user.Profile.PhoneNumber), 100000, currency.ISOName, paymentOrderTemplate.PaymentCode); var assembly = Assembly.GetExecutingAssembly(); var form = JObject.Parse(new StreamReader(assembly.GetManifestResourceStream("VaBank.Data.Tests.EntityFramework.Templates.cell-velcom-phoneno.json")).ReadToEnd()); var accountTo = Context.Set <CorrespondentAccount>().Single(x => x.Bank.Code == paymentOrderTemplate.BeneficiaryBankCode); var cardPayment = new CardPayment(card, paymentTemplate, paymentOrder, form, cardAccount, accountTo, currency); var paymentTransaction = new Transaction(cardAccount, currency, 100000, cardAccount.Balance, "123", "test_transaction_desc", "Nezavisimosti 58"); var paymentTransactionLink = new PaymentTransactionLink(paymentTransaction, paymentOrder); Context.Set <PaymentOrder>().Add(paymentOrder); Context.Set <CardPayment>().Add(cardPayment); Context.SaveChanges(); }
public BankOperationModel Submit(SubmitPaymentCommand command) { EnsureIsValid(command); EnsureIsSecure <SubmitPaymentCommand, CardSecurityValidator>(command); try { var userCard = _deps.UserCards.SurelyFind(command.FromCardId); var template = _deps.PaymentTemplates.SurelyFind(command.TemplateCode); var payment = _deps.CardPaymentFactory.Create(userCard, template, command.Form); var paymentLink = new PaymentTransactionLink(payment.Withdrawal, payment.Order); _deps.Payments.Create(payment); _deps.PaymentTransactionLinks.Create(paymentLink); var userOperation = new UserBankOperation(payment, Identity.User); _deps.UserBankOperations.Create(userOperation); Commit(); var model = payment.ToModel <BankOperation, BankOperationModel>(); Publish(new OperationProgressEvent(Operation.Id, model)); return(model); } catch (Exception ex) { throw new ServiceException("Can't submit payment.", ex); } }