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 } }; } }
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); } }