コード例 #1
0
ファイル: EventConsumer.cs プロジェクト: Nagabhushana/nag
        public void HandleEvent(MessageModelCreatedEvent message)
        {
            if (message.MessageContext.MessageTemplate.Name != MessageTemplateNames.OrderPlacedCustomer)
            {
                return;
            }

            var storeId = _services.StoreContext.CurrentStore.Id;

            if (!_pluginFinder.IsPluginReady(_services.Settings, AmazonPayPlugin.SystemName, storeId))
            {
                return;
            }

            dynamic model = message.Model;

            if (model.Order == null)
            {
                return;
            }

            var orderId = model.Order.ID;

            if (orderId is int id)
            {
                var order = _orderService.GetOrderById(id);

                var isAmazonPayment = (order != null && order.PaymentMethodSystemName.IsCaseInsensitiveEqual(AmazonPayPlugin.SystemName));
                var tokenValue      = (isAmazonPayment ? _services.Localization.GetResource("Plugins.Payments.AmazonPay.BillingAddressMessageNote") : "");

                model.AmazonPay = new Dictionary <string, object>
                {
                    { "BillingAddressMessageNote", tokenValue }
                };
            }
        }
コード例 #2
0
        public void HandleEvent(MessageModelCreatedEvent message)
        {
            if (!_templateNames.Contains(message.MessageContext.MessageTemplate.Name))
            {
                return;
            }

            try
            {
                dynamic model = message.Model;
                if (model?.Order == null)
                {
                    return;
                }

                var paymentMethod = (string)model.Order.PaymentMethodSystemName;
                if (!paymentMethod.IsCaseInsensitiveEqual(PayPalInstalmentsProvider.SystemName))
                {
                    return;
                }

                var orderId = (int)model.Order.ID;
                var storeId = (int)model.Order.StoreId;

                var order = _orderService.Value.GetOrderById(orderId);
                if (order == null)
                {
                    return;
                }

                // Note, the order attribute has probably not been created at this time!
                decimal?costs = null;
                decimal?total = null;
                var     state = _httpContext.Session.SafeGetValue <CheckoutState>(CheckoutState.CheckoutStateSessionKey);

                if (state != null && state.CustomProperties.ContainsKey(PayPalInstalmentsProvider.SystemName))
                {
                    var session = state.CustomProperties.Get(PayPalInstalmentsProvider.SystemName) as PayPalSessionData;
                    costs = session.FinancingCosts;
                    total = session.TotalInclFinancingCosts;
                }
                else
                {
                    var str = _genericAttributeService.Value.GetAttribute <string>(nameof(Order), orderId, PayPalInstalmentsOrderAttribute.Key, storeId);
                    if (str.HasValue())
                    {
                        var orderAttribute = JsonConvert.DeserializeObject <PayPalInstalmentsOrderAttribute>(str);
                        costs = orderAttribute.FinancingCosts;
                        total = orderAttribute.TotalInclFinancingCosts;
                    }
                }

                if (costs.HasValue && total.HasValue)
                {
                    var store          = _services.StoreService.GetStoreById(storeId);
                    var language       = _languageService.Value.GetLanguageById(message.MessageContext.LanguageId ?? order.CustomerLanguageId);
                    var targetCurrency = _currencyService.Value.GetCurrencyByCode(order.CustomerCurrencyCode) ?? store.PrimaryStoreCurrency;

                    var convertedCosts = _currencyService.Value.ConvertFromPrimaryStoreCurrency(costs.Value, targetCurrency, store);
                    var convertedTotal = _currencyService.Value.ConvertFromPrimaryStoreCurrency(total.Value, targetCurrency, store);

                    var formattedFinancingCosts          = _priceFormatter.Value.FormatPrice(convertedCosts, true, targetCurrency, language, false, false);
                    var formattedTotalInclFinancingCosts = _priceFormatter.Value.FormatPrice(convertedTotal, true, targetCurrency, language, false, false);

                    model.PayPalInstalments = new HybridExpando();
                    model.PayPalInstalments = new Dictionary <string, object>
                    {
                        ["FormattedFinancingCosts"]          = formattedFinancingCosts,
                        ["FormattedTotalInclFinancingCosts"] = formattedTotalInclFinancingCosts,
                    };
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }