/// <summary> /// Will fetch data from Klarna endpoint to find customer information /// </summary> /// <param name="url">Url to poll</param> /// <returns>OrderDtails Object if purchase is complete</returns> public OrderDetails pollData(Uri url) { var digestCreator = new Klarna.Helpers.DigestCreator(); var digest = digestCreator.CreateOffline(_config.MerchantId, _config.SharedSecret); WebRequest request = WebRequest.Create(_statusUrl); request.Method = "GET"; request.ContentType = "application/json"; request.Headers.Add("Authorization", "Basic " + digest); try { WebResponse response = request.GetResponse(); using (var reader = new StreamReader(response.GetResponseStream())) { string result = reader.ReadToEnd(); // do something fun... Helpers.JsonConverter.GetOrderFromString(result); var jsreader = new JsonTextReader(new StringReader(result)); var details = new JsonSerializer().Deserialize <OrderDetails>(jsreader); return(details); } } catch (Exception) { return(null); } }
/// <summary> /// Cancels the order /// </summary> public void Cancel() { if (_klarnaId == String.Empty) { throw new Exception("Cannot cancel an order that has not been created"); } var digestCreator = new Klarna.Helpers.DigestCreator(); var digest = digestCreator.CreateOffline(_config.MerchantId, _config.SharedSecret); WebRequest request = WebRequest.Create(GetBaseUrl() + "/v1/" + _config.MerchantId + "/orders/" + _klarnaId + "/cancel"); request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("Authorization", "Basic " + digest); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.NoContent) { throw new Exception("Something went wrong with the cancellation"); } }
private HttpWebResponse SendRequest(Uri url, string method, JObject data = null) { var digestCreator = new Klarna.Helpers.DigestCreator(); var digest = digestCreator.CreateDigest(_config.MerchantId, _config.SharedSecret); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = method; request.ContentType = "application/json"; request.UserAgent = "Mnording Instore SDK - " + Assembly.GetExecutingAssembly().GetName().Version; request.Headers.Add("Authorization", "Basic " + digest); if (data != null) { using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(data.ToString()); } } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); return(response); }
private void SendOrder() { WebRequest request = WebRequest.Create(GetBaseUrl() + "/v1/" + _config.MerchantId + "/orders"); request.Method = "POST"; JsonSerializer jsonWriter = new JsonSerializer { NullValueHandling = NullValueHandling.Ignore }; JObject ob = JObject.FromObject(this, jsonWriter); var digestCreator = new Klarna.Helpers.DigestCreator(); var digest = digestCreator.CreateOffline(_config.MerchantId, _config.SharedSecret); request.ContentType = "application/json"; request.Headers.Add("Authorization", "Basic " + digest); using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(ob.ToString()); } WebResponse response = request.GetResponse(); _status = Status.Sent; using (var reader = new StreamReader(response.GetResponseStream())) { string result = reader.ReadToEnd(); // do something fun... JObject orderResponse = JObject.Parse(result); _klarnaId = orderResponse["id"].ToString(); _status = Status.Pending; if (orderResponse["status_uri"] != null) { _statusUrl = new Uri(orderResponse["status_uri"].ToString()); _status = Status.Polling; } } }