Exemple #1
0
        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());
            }
        }
Exemple #3
0
        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);
            }
        }
Exemple #7
0
        /// <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());
            }
        }
Exemple #8
0
        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);
            }
        }