private ProcessPaymentResult OldCreateKlarnaOrder(KlarnaLocalization localization, ProcessPaymentEvaluationContext context)
        {
            var retVal = new ProcessPaymentResult();

            var cartItems = CreateKlarnaCartItems(context.Order);

            //Create cart
            var cart = new Dictionary <string, object> {
                { "items", cartItems }
            };
            var data = new Dictionary <string, object>
            {
                { "cart", cart }
            };

            //Create klarna order "http://example.com" context.Store.Url
            var   connector = Connector.Create(AppSecret);
            Order order     = null;
            var   merchant  = new Dictionary <string, object>
            {
                { "id", AppKey },
                { "terms_uri", string.Format("{0}/{1}", context.Store.Url, TermsUrl) },
                { "checkout_uri", string.Format("{0}/{1}", context.Store.Url, CheckoutUrl) },
                { "confirmation_uri", string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, ConfirmationUrl, context.Order.Id) + "klarna_order={checkout.order.uri}" },
                { "push_uri", string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, "admin/api/paymentcallback", context.Order.Id) + "klarna_order={checkout.order.uri}" },
                { "back_to_store_uri", context.Store.Url }
            };

            var layout = new Dictionary <string, object>
            {
                { "layout", "desktop" }
            };

            data.Add("purchase_country", localization.CountryName);
            data.Add("purchase_currency", localization.Currency);
            data.Add("locale", localization.Locale);
            data.Add("merchant", merchant);
            data.Add("gui", layout);

            order =
                new Order(connector)
            {
                BaseUri     = new Uri(GetCheckoutBaseUrl(localization.Currency)),
                ContentType = _contentType
            };
            order.Create(data);
            order.Fetch();

            //Gets snippet
            var gui  = order.GetValue("gui") as JObject;
            var html = gui["snippet"].Value <string>();

            retVal.IsSuccess        = true;
            retVal.NewPaymentStatus = PaymentStatus.Pending;
            retVal.HtmlForm         = html;
            retVal.OuterId          = order.GetValue("id") as string;

            return(retVal);
        }
Esempio n. 2
0
        private ProcessPaymentResult NewCreateKlarnaOrder(KlarnaLocalization localization, ProcessPaymentEvaluationContext context)
        {
            var retVal = new ProcessPaymentResult();

            var orderLineItems = GetOrderLineItems(context.Order);

            MerchantUrls merchantUrls = new MerchantUrls
            {
                Terms = new System.Uri(
                    string.Format("{0}/{1}", context.Store.Url, TermsUrl)),
                Checkout = new System.Uri(
                    string.Format("{0}/{1}", context.Store.Url, CheckoutUrl)),
                Confirmation = new System.Uri(
                    string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, ConfirmationUrl, context.Order.Id) + "klarna_order={checkout.order.uri}"),
                Push = new System.Uri(
                    string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, "admin/api/paymentcallback", context.Order.Id) + "klarna_order={checkout.order.uri}")
            };

            CheckoutOrderData orderData = new CheckoutOrderData()
            {
                PurchaseCountry  = localization.CountryName,
                PurchaseCurrency = localization.Currency,
                Locale           = localization.Locale,
                OrderAmount      = (int)(context.Order.Sum * 100),
                OrderTaxAmount   = (int)(context.Order.Tax * 100),
                OrderLines       = orderLineItems,
                MerchantUrls     = merchantUrls
            };

            var connector = ConnectorFactory.Create(
                AppKey,
                AppSecret,
                Client.TestBaseUrl);
            Client client = new Client(connector);

            var checkout = client.NewCheckoutOrder();

            checkout.Create(orderData);

            orderData               = checkout.Fetch();
            retVal.IsSuccess        = true;
            retVal.NewPaymentStatus = PaymentStatus.Pending;
            retVal.OuterId          = orderData.OrderId;
            retVal.HtmlForm         = string.Format("<div>{0}</div>", orderData.HtmlSnippet);

            return(retVal);
        }
		private ProcessPaymentResult ProcessKlarnaOrder(KlarnaLocalization localization, ProcessPaymentEvaluationContext context)
		{
			var retVal = new ProcessPaymentResult();

			var cartItems = CreateKlarnaCartItems(context.Order);

			//Create cart
			var cart = new Dictionary<string, object> { { "items", cartItems } };
			var data = new Dictionary<string, object>
					{
						{ "cart", cart }
					};

			//Create klarna order "http://example.com" context.Store.Url
			var connector = Connector.Create(AppSecret);
			Order order = null;
			var merchant = new Dictionary<string, object>
					{
						{ "id", AppKey },
						{ "terms_uri", string.Format("{0}/{1}", context.Store.Url, TermsUrl) },
						{ "checkout_uri", string.Format("{0}/{1}", context.Store.Url, CheckoutUrl) },
						{ "confirmation_uri", string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, ConfirmationUrl, context.Order.Id) + "klarna_order={checkout.order.uri}" },
						{ "push_uri", string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, "admin/api/paymentcallback", context.Order.Id) + "klarna_order={checkout.order.uri}" },
						{ "back_to_store_uri", context.Store.Url }
					};

			var layout = new Dictionary<string, object>
					{
						{ "layout", "desktop" }
					};

			data.Add("purchase_country", localization.CountryName);
			data.Add("purchase_currency", localization.Currency);
			data.Add("locale", localization.Locale);
			data.Add("merchant", merchant);
			data.Add("gui", layout);

			order =
				new Order(connector)
				{
					BaseUri = new Uri(GetCheckoutBaseUrl(localization.Currency)),
					ContentType = _contentType
				};
			order.Create(data);
			order.Fetch();

			//Gets snippet
			var gui = order.GetValue("gui") as JObject;
			var html = gui["snippet"].Value<string>();

			retVal.IsSuccess = true;
			retVal.NewPaymentStatus = context.Payment.PaymentStatus = PaymentStatus.Pending;
			retVal.HtmlForm = html;
			retVal.OuterId = context.Payment.OuterId = order.GetValue("id") as string;

			return retVal;
		}
		private ProcessPaymentResult NewCreateKlarnaOrder(KlarnaLocalization localization, ProcessPaymentEvaluationContext context)
		{
			var retVal = new ProcessPaymentResult();

			var orderLineItems = GetOrderLineItems(context.Order);

			MerchantUrls merchantUrls = new MerchantUrls
			{
				Terms = new System.Uri(
					string.Format("{0}/{1}", context.Store.Url, TermsUrl)),
				Checkout = new System.Uri(
					string.Format("{0}/{1}", context.Store.Url, CheckoutUrl)),
				Confirmation = new System.Uri(
					string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, ConfirmationUrl, context.Order.Id) + "klarna_order={checkout.order.uri}"),
				Push = new System.Uri(
					string.Format("{0}/{1}?sid=123&orderId={2}&", context.Store.Url, "admin/api/paymentcallback", context.Order.Id) + "klarna_order={checkout.order.uri}")
			};

			CheckoutOrderData orderData = new CheckoutOrderData()
			{
				PurchaseCountry = localization.CountryName,
				PurchaseCurrency = localization.Currency,
				Locale = localization.Locale,
				OrderAmount = (int)(context.Order.Sum * 100),
				OrderTaxAmount = (int)(context.Order.Tax * 100),
				OrderLines = orderLineItems,
				MerchantUrls = merchantUrls
			};

			var connector = ConnectorFactory.Create(
				AppKey,
				AppSecret,
				Client.TestBaseUrl);
			Client client = new Client(connector);

			var checkout = client.NewCheckoutOrder();
			checkout.Create(orderData);

			orderData = checkout.Fetch();
			retVal.IsSuccess = true;
			retVal.NewPaymentStatus = PaymentStatus.Pending;
			retVal.OuterId = orderData.OrderId;
			retVal.HtmlForm = string.Format("<div>{0}</div>", orderData.HtmlSnippet);

			return retVal;
		}