Esempio n. 1
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the transactions view model.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <returns></returns>
        public IEnumerable <BraintreeTransactionViewModel> GetTransactionsViewModel(UmbracoContext umbracoContext)
        {
            loggingService.Info(GetType());

            List <BraintreeTransactionViewModel> viewModels = new List <BraintreeTransactionViewModel>();

            PaymentSettingsModel model = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            if (model.PaymentsEnabled)
            {
                transactionsRepository.SetKey(umbracoContext);

                bool exists = transactionsRepository.Exists();

                if (exists)
                {
                    return(transactionsRepository.Get <IEnumerable <BraintreeTransactionViewModel> >());
                }

                ResourceCollection <Transaction> transactions = paymentProvider.GetBraintreeTransactions(model);

                viewModels = (from Transaction transaction
                              in transactions
                              select transactionTranslator.Translate(transaction))
                             .ToList();

                transactionsRepository.Add(viewModels);
            }

            return(viewModels);
        }
Esempio n. 2
0
 private void AddNewPaymentRecord()
 {
     PaymentMethod = new PaymentSettingsModel {
         GpPaymentId = -1
     };
     ShowPopup = true;
 }
 /// <inheritdoc />
 public bool SavePaymentDetails(PaymentSettingsModel paymentMethod)
 {
     using (var connection = new SqlConnection(Constants.ConnectorDatabase))
     {
         var cmd = new SqlCommand
         {
             CommandType = System.Data.CommandType.Text,
             CommandText = @"IF(@Id>0)
             Update PaymentMethod SET EcommercePaymentMethod=@MagentoPaymentMethod,ERPPaymentMethod=@ERPPaymentMethod,ERPPaymentType=@ERPPaymentType,IsEcommerceDefault=@IsEcommerceDefault,IsErpDefault=@IsErpDefault where PaymentMethodId=@Id
             else
             Insert into PaymentMethod (EcommercePaymentMethod,ERPPaymentMethod,ERPPaymentType,IsEcommerceDefault,IsErpDefault) values(@MagentoPaymentMethod,@ERPPaymentMethod,@ERPPaymentType,@IsEcommerceDefault,@IsErpDefault);"
         };
         cmd.Parameters.AddWithValue("@MagentoPaymentMethod", paymentMethod.MagentoPaymentName);
         cmd.Parameters.AddWithValue("@ERPPaymentMethod", paymentMethod.GpPaymentName);
         cmd.Parameters.AddWithValue("@ERPPaymentType", paymentMethod.GpPaymentId);
         cmd.Parameters.AddWithValue("@Id", paymentMethod.Id);
         cmd.Parameters.AddWithValue("@IsEcommerceDefault", paymentMethod.IsEcommerceDefault);
         cmd.Parameters.AddWithValue("@IsErpDefault", paymentMethod.IsErpDefault);
         cmd.Connection = connection;
         connection.Open();
         int i = cmd.ExecuteNonQuery();
         if (i <= 0)
         {
             return(false);
         }
         UpdateDefaultValues(paymentMethod, connection);
         return(true);
     }
 }
Esempio n. 4
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the transaction.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <param name="transactionId">The transaction identifier.</param>
        /// <returns></returns>
        public BraintreeTransactionViewModel GetTransactionViewModel(
            UmbracoContext umbracoContext,
            string transactionId)
        {
            loggingService.Info(GetType(), "EncryptedTransactionId=" + transactionId);

            PaymentSettingsModel model = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            transactionsRepository.SetKey(umbracoContext);

            bool exists = transactionsRepository.Exists();

            if (exists)
            {
                IEnumerable <BraintreeTransactionViewModel> viewModels = transactionsRepository.Get <IEnumerable <BraintreeTransactionViewModel> >();

                BraintreeTransactionViewModel viewModel = viewModels.FirstOrDefault(x => x.Id == transactionId);

                if (viewModel != null)
                {
                    return(viewModel);
                }
            }

            Transaction transaction = paymentProvider.GetTransaction(model, transactionId);

            return(transactionTranslator.Translate(transaction));
        }
Esempio n. 5
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the transactions view model.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <returns></returns>
        public IEnumerable <TransactionViewModel> GetTransactionsViewModel(UmbracoContext umbracoContext)
        {
            loggingService.Info(GetType());

            List <TransactionViewModel> viewModels = new List <TransactionViewModel>();

            PaymentSettingsModel model = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            if (model.PaymentsEnabled)
            {
                CustomerModel customerModel = customerProvider.GetCustomerModel(umbracoContext);

                //// TODO : change at some point!
                DateTime startDate = DateTime.MinValue;
                DateTime endDate   = DateTime.MaxValue;

                IEnumerable <TransactionModel> transactions = databaseProvider.GetTransactions(
                    startDate,
                    endDate,
                    customerModel.Id);

                viewModels = (from TransactionModel transaction
                              in transactions
                              select transactionTranslator.Translate(transaction))
                             .ToList();
            }

            return(viewModels);
        }
        /// <inheritdoc />
        /// <summary>
        /// Sets the key.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        public void SetKey(UmbracoContext umbracoContext)
        {
            IPublishedContent customerNode = settingsService.GetCustomerNode();

            if (customerNode != null)
            {
                CustomerModel customerModel = new CustomerModel(customerNode);

                IPublishedContent paymentsNode = settingsService.GetPaymentsNode();

                if (paymentsNode != null)
                {
                    PaymentSettingsModel paymentSettingsModel = new PaymentSettingsModel(paymentsNode);

                    Key = "Tranactions" +
                          customerModel.Id +
                          paymentSettingsModel.Environment +
                          paymentSettingsModel.MerchantId +
                          paymentSettingsModel.PublicKey;
                    return;
                }
            }

            throw new ApplicationException("Unable to set Transactions Cache Key.");
        }
Esempio n. 7
0
 /// <inheritdoc />
 /// <summary>
 /// Gets the gateway.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <returns></returns>
 public IBraintreeGateway GetGateway(PaymentSettingsModel model)
 {
     return(new BraintreeGateway(
                model.Environment,
                model.MerchantId,
                model.PublicKey,
                model.PrivateKey));
 }
        private static void UpdateEcommerceDefaultValues(PaymentSettingsModel paymentMethod, SqlConnection connection)
        {
            const string commandText = "update PaymentMethod SET IsEcommerceDefault=0 where EcommercePaymentMethod<>@EcommercePaymentMethod AND ERPPaymentMethod=@ERPPaymentMethod";

            using (var command = new SqlCommand(commandText, connection))
            {
                command.Parameters.AddWithValue("@ERPPaymentMethod", paymentMethod.GpPaymentName);
                command.Parameters.AddWithValue("@EcommercePaymentMethod", paymentMethod.MagentoPaymentName);
                command.ExecuteNonQuery();
            }
        }
        private static void UpdateDefaultValues(PaymentSettingsModel paymentMethod, SqlConnection connection)
        {
            if (paymentMethod.IsErpDefault)
            {
                UpdateErpDefaultValues(paymentMethod, connection);
            }

            if (paymentMethod.IsEcommerceDefault)
            {
                UpdateEcommerceDefaultValues(paymentMethod, connection);
            }
        }
Esempio n. 10
0
        public async Task <IActionResult> Settings(PaymentSettingsModel model,
                                                   [FromServices] ICustomerActivityService customerActivityService)
        {
            var paymentSettings = _settingService.LoadSetting <PaymentSettings>();

            paymentSettings = model.ToEntity(paymentSettings);

            await _settingService.SaveSetting(paymentSettings);

            //activity log
            await customerActivityService.InsertActivity("EditSettings", "", _translationService.GetResource("ActivityLog.EditSettings"));

            Success(_translationService.GetResource("Admin.Configuration.Updated"));
            return(RedirectToAction("Settings"));
        }
        public static PaymentSettingsModel ToModel(this PaymentSettings paymentSettings)
        {
            var model = new PaymentSettingsModel()
            {
                CreditExchangeRate = paymentSettings.CreditExchangeRate,
                IsPromotionalCreditUsageLimitPercentage  = paymentSettings.IsPromotionalCreditUsageLimitPercentage,
                MacroPaymentsFixedPaymentProcessingFee   = paymentSettings.MacroPaymentsFixedPaymentProcessingFee,
                MacroPaymentsPaymentProcessingPercentage = paymentSettings.MacroPaymentsPaymentProcessingPercentage,
                MicroPaymentsFixedPaymentProcessingFee   = paymentSettings.MicroPaymentsFixedPaymentProcessingFee,
                MicroPaymentsPaymentProcessingPercentage = paymentSettings.MicroPaymentsPaymentProcessingPercentage,
                PaymentMethodSelectionType = paymentSettings.PaymentMethodSelectionType,
                PromotionalCreditUsageLimitPerTransaction = paymentSettings.PromotionalCreditUsageLimitPerTransaction
            };

            return(model);
        }
Esempio n. 12
0
        /// <summary>
        /// Gets the payment partial view.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <returns></returns>
        /// <exception cref="ApplicationException">Payment Provider not setup.</exception>
        /// <inheritdoc />
        public string GetPaymentPartialView(
            UmbracoContext umbracoContext)
        {
            PaymentSettingsModel model = GetPaymentSettingsModel(umbracoContext);

            switch (model.Provider)
            {
            case Constants.PaymentProviders.Braintree:
                return(BraintreeDirectory + PaymentPage);

            case Constants.PaymentProviders.PayPal:
                return(PayPalDirectory + PaymentPage);

            default:
                throw new ApplicationException("Payment Provider not setup.");
            }
        }
Esempio n. 13
0
        public IHttpActionResult Post(PaymentSettingsModel entityModel)
        {
            var paymentSettings = new PaymentSettings()
            {
                CreditExchangeRate = entityModel.CreditExchangeRate,
                IsPromotionalCreditUsageLimitPercentage  = entityModel.IsPromotionalCreditUsageLimitPercentage,
                MacroPaymentsFixedPaymentProcessingFee   = entityModel.MacroPaymentsFixedPaymentProcessingFee,
                MacroPaymentsPaymentProcessingPercentage = entityModel.MacroPaymentsPaymentProcessingPercentage,
                MicroPaymentsFixedPaymentProcessingFee   = entityModel.MicroPaymentsFixedPaymentProcessingFee,
                MicroPaymentsPaymentProcessingPercentage = entityModel.MicroPaymentsPaymentProcessingPercentage,
                PaymentMethodSelectionType = entityModel.PaymentMethodSelectionType,
                PromotionalCreditUsageLimitPerTransaction = entityModel.PromotionalCreditUsageLimitPerTransaction
            };

            _settingService.Save(paymentSettings);
            VerboseReporter.ReportSuccess("Settings saved successfully", "post_setting");
            return(RespondSuccess(new { PaymentSettings = paymentSettings.ToModel() }));
        }
Esempio n. 14
0
        /// <summary>
        /// Gets the transaction view model.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <param name="encryptedId">The encrypted identifier.</param>
        /// <returns></returns>
        /// <inheritdoc />
        public TransactionViewModel GetTransactionViewModel(
            UmbracoContext umbracoContext,
            string encryptedId)
        {
            PaymentSettingsModel settingsModel = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            if (settingsModel.PaymentsEnabled)
            {
                string paymentId = encryptionService.DecryptString(encryptedId);

                CustomerModel customerModel = customerProvider.GetCustomerModel(umbracoContext);

                TransactionModel model = databaseProvider.GetTransaction(Convert.ToInt32(paymentId), customerModel.Id);

                return(transactionTranslator.Translate(model));
            }

            return(new TransactionViewModel());
        }
Esempio n. 15
0
        public PartialViewResult GetCreateInvoice()
        {
            LoggingService.Info(GetType());

            if (rulesEngineService.IsCustomerInvoicesEnabled())
            {
                CreateInvoiceViewModel viewModel = new CreateInvoiceViewModel();

                IPublishedContent paymentsNode = settingsService.GetPaymentsNode();

                PaymentSettingsModel settingsModel = new PaymentSettingsModel(paymentsNode);

                viewModel.ShowIncludePaymentLink = settingsModel.CustomerPaymentsEnabled;

                return(PartialView("Partials/Spectrum/Invoices/CreateInvoice", viewModel));
            }

            return(default(PartialViewResult));
        }
        /// <inheritdoc />
        public bool CheckPaymentCombination(PaymentSettingsModel paymentMethod)
        {
            bool result;

            using (var connection = new SqlConnection(Constants.ConnectorDatabase))
            {
                const string commandText = @"Select PaymentMethodId from PaymentMethod where EcommercePaymentMethod=@MagentoPaymentMethod AND ERPPaymentType=@ERPPaymentType AND PaymentMethodId<>@Id";
                using (var command = new SqlCommand(commandText, connection))
                {
                    connection.Open();
                    command.Parameters.AddWithValue("@MagentoPaymentMethod", paymentMethod.MagentoPaymentName);
                    command.Parameters.AddWithValue("@ERPPaymentType", paymentMethod.GpPaymentId);
                    command.Parameters.AddWithValue("@Id", paymentMethod.Id);

                    using (SqlDataReader dataReader = command.ExecuteReader())
                    {
                        result = dataReader.Read();
                    }
                    connection.Close();
                }
            }
            return(result);
        }
Esempio n. 17
0
        /// <inheritdoc />
        /// <summary>
        /// Makes the payment.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="viewModel">The view model.</param>
        /// <returns>Payment Id</returns>
        public Result <Transaction> MakePayment(
            PaymentSettingsModel model,
            MakePaymentViewModel viewModel)
        {
            TransactionRequest request = new TransactionRequest
            {
                Amount             = viewModel.Amount,
                PaymentMethodNonce = viewModel.Nonce,
                Options            = new TransactionOptionsRequest
                {
                    SubmitForSettlement = true
                }
            };

            Result <Transaction> result = GetGateway(model).Transaction.Sale(request);

            if (result.IsSuccess() &&
                result.Target != null)
            {
                return(result);
            }

            return(null);
        }
Esempio n. 18
0
 /// <inheritdoc />
 /// <summary>
 /// Gets the authentication token.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <returns></returns>
 public string GetAuthToken(PaymentSettingsModel model)
 {
     return(braintreeService.GetAuthToken(model));
 }
Esempio n. 19
0
 /// <inheritdoc />
 /// <summary>
 /// Gets the transactions.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <returns></returns>
 public ResourceCollection <Transaction> GetBraintreeTransactions(PaymentSettingsModel model)
 {
     return(braintreeService.GetTransactions(model));
 }
Esempio n. 20
0
 /// <inheritdoc />
 /// <summary>
 /// Gets the transaction.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="transactionId">The transaction identifier.</param>
 /// <returns></returns>
 public Transaction GetTransaction(
     PaymentSettingsModel model,
     string transactionId)
 {
     return(braintreeService.GetTransaction(model, transactionId));
 }
Esempio n. 21
0
 /// <inheritdoc />
 /// <summary>
 /// Gets the token.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <returns>
 /// The token.
 /// </returns>
 public string GetAuthToken(PaymentSettingsModel model)
 {
     return(GetGateway(model).ClientToken.generate());
 }
Esempio n. 22
0
 private static bool IsDataValid(PaymentSettingsModel paymentSettingsModel)
 {
     //TODO Need to valid data with Magento & GP
     return(true);
 }
Esempio n. 23
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the transactions.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public ResourceCollection <Transaction> GetTransactions(PaymentSettingsModel model)
        {
            TransactionSearchRequest request = new TransactionSearchRequest();

            return(GetGateway(model).Transaction.Search(request));
        }
Esempio n. 24
0
 public static PaymentSettings ToEntity(this PaymentSettingsModel model, PaymentSettings destination)
 {
     return(model.MapTo(destination));
 }
Esempio n. 25
0
 /// <inheritdoc />
 /// <summary>
 /// Gets the transaction.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="transactionId">The transaction identifier.</param>
 /// <returns></returns>
 public Transaction GetTransaction(
     PaymentSettingsModel model,
     string transactionId)
 {
     return(GetGateway(model).Transaction.Find(transactionId));
 }
Esempio n. 26
0
        /// <inheritdoc />
        /// <summary>
        /// Determines whether [is customer payments enabled].
        /// </summary>
        public bool IsCustomerPaymentsEnabled()
        {
            PaymentSettingsModel model = GetPaymentsSettingsModel();

            return(model != null && model.PaymentsEnabled);
        }
Esempio n. 27
0
        /// <summary>
        /// Handles the payment.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <param name="publishedContent">Content of the published.</param>
        /// <param name="viewModel">The view model.</param>
        /// <param name="currentUser">The current user.</param>
        /// <returns></returns>
        /// <inheritdoc />
        public string MakePayment(
            UmbracoContext umbracoContext,
            IPublishedContent publishedContent,
            MakePaymentViewModel viewModel,
            string currentUser)
        {
            loggingService.Info(GetType());

            PageModel pageModel = new PageModel(publishedContent);

            if (string.IsNullOrEmpty(pageModel.NextPageUrl))
            {
                throw new ApplicationException("Next Page Url Not Set");
            }

            if (string.IsNullOrEmpty(pageModel.ErrorPageUrl))
            {
                throw new ApplicationException("Error Page Url Not Set");
            }

            PaymentSettingsModel paymentSettingsModel = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            if (paymentSettingsModel.Provider != Constants.PaymentProviders.Braintree)
            {
                //// we currently only support Braintree
                throw new ApplicationException("Unsupported Payment Provider");
            }

            Result <Transaction> transaction = paymentProvider.MakePayment(paymentSettingsModel, viewModel);

            if (transaction != null)
            {
                //// at this point the payment has worked
                //// so need to be careful from here as to what we raise as errors etc.

                //// make sure we clear the cache!
                transactionsRepository.SetKey(umbracoContext);
                transactionsRepository.Clear();

                string paymentId = transaction.Target.Id;

                loggingService.Info(GetType(), "Payment Succesful Id=" + paymentId);

                try
                {
                    eventPublisher.Publish(new TransactionMadeMessage(
                                               umbracoContext,
                                               transaction.Target,
                                               viewModel,
                                               currentUser,
                                               pageModel.EmailTemplateName,
                                               paymentSettingsModel.Provider,
                                               paymentSettingsModel.Environment));
                }
                catch (Exception exception)
                {
                    loggingService.Error(GetType(), "Publish of payment Failed", exception);
                }

                return(pageModel.NextPageUrl);
            }

            loggingService.Info(GetType(), "Payment Failed");

            return(pageModel.ErrorPageUrl);
        }
Esempio n. 28
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the authentication token.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <returns></returns>
        public string GetAuthToken(UmbracoContext umbracoContext)
        {
            PaymentSettingsModel model = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            return(model != null?paymentProvider.GetAuthToken(model) : string.Empty);
        }
Esempio n. 29
0
 /// <inheritdoc />
 /// <summary>
 /// Makes the payment.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <param name="viewModel">The view model.</param>
 /// <returns>Payment Id</returns>
 public Result <Transaction> MakePayment(
     PaymentSettingsModel model,
     MakePaymentViewModel viewModel)
 {
     return(braintreeService.MakePayment(model, viewModel));
 }
Esempio n. 30
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the environment.
        /// </summary>
        /// <param name="umbracoContext">The umbraco context.</param>
        /// <returns></returns>
        public string GetEnvironment(UmbracoContext umbracoContext)
        {
            PaymentSettingsModel model = paymentProvider.GetPaymentSettingsModel(umbracoContext);

            return(model?.Environment);
        }