public override ReverseResponse Reverse(string transactionId) { try { this._action = "/reversePayment"; var package = new XElement("internalReference", transactionId ); XElement reverse = new XElement(p2p + "reversePayment", package); string response = this.CallWebService(reverse); JObject res = JObject.Parse(response); var data = res["ns1:reversePaymentResponse"]["reversePaymentResult"]; return(JsonConvert.DeserializeObject <ReverseResponse>(data.ToString())); } catch (Exception ex) { Status status = new Status("ERROR", "WR", PlacetoPayException.ReadException(ex), (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz")); ReverseResponse reverseResponse = new ReverseResponse(null, status); return(reverseResponse); } }
/// <summary> /// Make a soap request. /// </summary> /// <param name="body">formatted xml body.</param> /// <returns>the response string from service.</returns> private string MakeRequest(XElement body) { try { SoapClient client = new SoapClient(HttpClientFactory); XmlDocument header = new XmlDocument(); header.LoadXml(Auth.AsSoapHeader()); HttpResponseMessage message = client.Post( new Uri(location), SoapVersion.Soap12, body: body, header: header); return(message.Content.ReadAsStringAsync().Result); } catch (Exception exeption) { return(new JObject { { "status", new JObject { { "status", Status.ST_ERROR }, { "reason", "WR" }, { "message", PlacetoPayException.ReadException(exeption) }, { "date", (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz") }, } }, }.ToString()); } }
public override RedirectResponse Request(RedirectRequest redirectRequest) { try { this._action = "/createRequest"; string request = Serializer.JsonSerializer.SerializeObject(redirectRequest); var node = JsonConvert.DeserializeXmlNode(request, "payload"); XElement createRequest = new XElement(p2p + "createRequest", XElement.Parse(node.OuterXml)); string response = this.CallWebService(createRequest); JObject res = JObject.Parse(response); var data = res["ns1:createRequestResponse"]["createRequestResult"]; return(JsonConvert.DeserializeObject <RedirectResponse>(data.ToString())); } catch (Exception ex) { Status status = new Status("ERROR", "WR", PlacetoPayException.ReadException(ex), (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz")); RedirectResponse redirectResponse = new RedirectResponse(null, null, status); return(redirectResponse); } }
public override RedirectResponse Request(RedirectRequest redirectRequest) { try { string endpoint = "api/session"; string method = "POST"; var response = this.MakeRequest(method, endpoint, redirectRequest); return(JsonConvert.DeserializeObject <RedirectResponse>(response)); } catch (Exception ex) { Status status = new Status("ERROR", "WR", PlacetoPayException.ReadException(ex), (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz")); RedirectResponse redirectResponse = new RedirectResponse(null, null, status); return(redirectResponse); } }
public override ReverseResponse Reverse(string transactionId) { try { Object internalReference = new { internalReference = transactionId }; string endpoint = "api/reverse"; string method = "POST"; var response = this.MakeRequest(method, endpoint, internalReference); return(JsonConvert.DeserializeObject <ReverseResponse>(response)); } catch (Exception ex) { Status status = new Status("ERROR", "WR", PlacetoPayException.ReadException(ex), (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz")); ReverseResponse reverseResponse = new ReverseResponse(null, status); return(reverseResponse); } }
public override RedirectInformation Query(string requestId) { JToken responseJObject = null; try { string endpoint = "api/session/" + requestId; string method = "POST"; var response = this.MakeRequest(method, endpoint); responseJObject = JObject.Parse(response); JToken fields = responseJObject["request"]["fields"]; responseJObject["request"]["fields"] = null; RedirectInformation information = JsonConvert.DeserializeObject <RedirectInformation>(responseJObject.ToString()); List <NameValuePair> items = new List <NameValuePair>(); foreach (var field in fields) { NameValuePair item = JsonConvert.DeserializeObject <NameValuePair>(field.ToString(), Serializer.JsonSerializer.Settings); items.Add(item); } information.Request.Fields = new Fields(items); return(information); } catch (Exception ex) { Status status = new Status("ERROR", "WR", PlacetoPayException.ReadException(ex), (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz")); if (responseJObject != null) { status = new Status(responseJObject["status"]["status"].ToString(), responseJObject["status"]["reason"].ToString(), responseJObject["status"]["message"].ToString(), responseJObject["status"]["date"].ToString()); } RedirectInformation redirectInformation = new RedirectInformation(0, status, null, null, null); return(redirectInformation); } }
/// <summary> /// Make rest request. /// </summary> /// <param name="method">string</param> /// <param name="uri">string</param> /// <param name="arguments">JObject</param> /// <returns>string</returns> private string MakeRequest(string method, string uri, JObject arguments) { try { RestClient client = new RestClient(baseUrl); RestRequest request = null; IRestResponse response = null; if (config.ContainsKey(TIMEOUT)) { client.Timeout = (int)config.GetValue(TIMEOUT); } if (config.ContainsKey(CONNECT_TIMEOUT)) { client.ReadWriteTimeout = (int)config.GetValue(CONNECT_TIMEOUT); } arguments.Merge(new JObject { { AUTH, Auth.ToJsonObject() } }, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Union }); if (method == "POST") { request = new RestRequest(uri, Method.POST); request.AddParameter("application/json", arguments, ParameterType.RequestBody); response = client.Execute(request); } else if (method == "GET") { request = new RestRequest(uri, Method.GET); response = client.Execute(request); } else if (method == "PUT") { request = new RestRequest(uri, Method.PUT); request.AddParameter("application/json", arguments, ParameterType.RequestBody); response = client.Execute(request); } else { throw new PlacetoPayException("No valid method for this request"); } if (!response.IsSuccessful && response.ErrorMessage != null) { throw new PlacetoPayException(response.ErrorException.Message); } else { return(response.Content); } } catch (Exception ex) { return(new JObject { { "status", new JObject { { "status", Status.ST_ERROR }, { "reason", "WR" }, { "message", PlacetoPayException.ReadException(ex) }, { "date", (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz") }, } }, }.ToString()); } }
public override RedirectInformation Collect(CollectRequest collectRequest) { try { this._action = "/collect"; string request = Serializer.JsonSerializer.SerializeObject(collectRequest); var node = JsonConvert.DeserializeXmlNode(request, "payload"); XElement collect = new XElement(p2p + "collect", XElement.Parse(node.OuterXml)); string response = this.CallWebService(collect); response = Regex.Replace(response, @"(\s*)""@(.*)"":", @"$1""$2"":", RegexOptions.IgnoreCase); JObject res = JObject.Parse(response); if (res["ns1:collectResponse"]["collectResult"]["payment"] != null) { var transaction = res["ns1:collectResponse"]["collectResult"]["payment"]["transaction"]; res["ns1:collectResponse"]["collectResult"]["payment"] = null; var data = res["ns1:collectResponse"]["collectResult"]; RedirectInformationSOAP redirectInformationSOAP = JsonConvert.DeserializeObject <RedirectInformationSOAP>(data.ToString(), Serializer.JsonSerializer.Settings); if (transaction.Type.ToString() == "Object") { List <TransactionSOAP> transactions = new List <TransactionSOAP>(); TransactionSOAP transactionSOAP = JsonConvert.DeserializeObject <TransactionSOAP>(transaction.ToString()); transactions.Add(transactionSOAP); redirectInformationSOAP.Payment = transactions; } else { List <TransactionSOAP> transactions = new List <TransactionSOAP>(); TransactionSOAP transactionSOAP; foreach (var item in transaction.Children()) { transactionSOAP = JsonConvert.DeserializeObject <TransactionSOAP>(item.ToString()); transactions.Add(transactionSOAP); } redirectInformationSOAP.Payment = transactions; } List <Transaction> paymentTransaction = new List <Transaction>(); foreach (var tSOAP in redirectInformationSOAP.Payment) { Transaction T = new Transaction(tSOAP.Status, tSOAP.Reference, tSOAP.InternalReference, tSOAP.PaymentMethod, tSOAP.PaymentMethodName, tSOAP.IssuerName, tSOAP.Amount, tSOAP.Authorization, tSOAP.Receipt, tSOAP.Franchise, tSOAP.Refunded, tSOAP.ProcessorFields.item); paymentTransaction.Add(T); } RedirectInformation redirectInformation = new RedirectInformation(redirectInformationSOAP.RequestId, redirectInformationSOAP.Status, redirectInformationSOAP.Request, paymentTransaction, null); return(redirectInformation); } else if (res["ns1:collectResponse"]["collectResult"]["subscription"] != null) { var data = res["ns1:getRequestInformationResponse"]["getRequestInformationResult"]; RedirectInformationSOAP redirectInformationSOAP = JsonConvert.DeserializeObject <RedirectInformationSOAP>(data.ToString()); SubscriptionInfomationSOAP subscriptionInfomationSOAP = redirectInformationSOAP.Subscription; SubscriptionInformation subscriptionInformation = new SubscriptionInformation(subscriptionInfomationSOAP.Type, subscriptionInfomationSOAP.Status, subscriptionInfomationSOAP.Instrument.item); RedirectInformation redirectInformation = new RedirectInformation(redirectInformationSOAP.RequestId, redirectInformationSOAP.Status, redirectInformationSOAP.Request, null, subscriptionInformation); return(redirectInformation); } else { var data = res["ns1:collectResponse"]["collectResult"]; return(JsonConvert.DeserializeObject <RedirectInformation>(data.ToString())); } } catch (Exception ex) { Status status = new Status("ERROR", "WR", PlacetoPayException.ReadException(ex), (DateTime.Now).ToString("yyyy-MM-ddTHH\\:mm\\:sszzz")); RedirectInformation redirectInformation = new RedirectInformation(0, status, null, null, null); return(redirectInformation); } }