Ejemplo n.º 1
0
        public PaymentRequestECommerceResponse MakePaymentRequest(string phonenumber, int amount, string message)
        {
            try
            {
                var requestData = new PaymentRequestECommerceData()
                {
                    payeePaymentReference = _payeePaymentReference,
                    callbackUrl           = _callbackUrl,
                    payerAlias            = phonenumber,
                    payeeAlias            = _payeeAlias,
                    amount   = amount.ToString(),
                    currency = "SEK",
                    message  = message
                };

                HttpClientHandler handler;
                HttpClient        client;
                PrepareHttpClientAndHandler(out handler, out client);

                var httpRequestMessage = new HttpRequestMessage
                {
                    Method     = HttpMethod.Post,
                    RequestUri = new Uri(_baseAPIUrl + "/swish-cpcapi/api/v1/paymentrequests"),
                    Content    = new StringContent(JsonConvert.SerializeObject(requestData), Encoding.UTF8, "application/json")
                };

                var response = client.SendAsync(httpRequestMessage).Result;

                string errorMessage = string.Empty;
                string location     = string.Empty;

                if (response.IsSuccessStatusCode)
                {
                    var headers = response.Headers.ToList();

                    if (headers.Any(x => x.Key == "Location"))
                    {
                        location = response.Headers.GetValues("Location").FirstOrDefault();
                    }
                }
                else
                {
                    var readAsStringAsync = response.Content.ReadAsStringAsync();
                    errorMessage = readAsStringAsync.Result;
                }

                client.Dispose();
                handler.Dispose();

                return(new PaymentRequestECommerceResponse()
                {
                    Error = errorMessage,
                    Location = location
                });
            }
            catch (Exception ex)
            {
                return(new PaymentRequestECommerceResponse()
                {
                    Error = ex.ToString(),
                    Location = ""
                });
            }
        }
Ejemplo n.º 2
0
        public PaymentRequestECommerceResponse MakePaymentRequest(string phonenumber, int amount, string message)
        {
            try
            {
                var requestData = new PaymentRequestECommerceData()
                {
                    payeePaymentReference = _payeePaymentReference,
                    callbackUrl           = _callbackUrl,
                    payerAlias            = phonenumber,
                    payeeAlias            = _payeeAlias,
                    amount   = amount.ToString(),
                    currency = "SEK",
                    message  = message
                };

                // Create a RestSharp RestClient objhect with the base URL
                var client = new RestClient(_baseAPIUrl);

                // Create a request object with the path to the payment requests
                var request = new RestRequest("swish-cpcapi/api/v1/paymentrequests");

                // Create up a client certificate collection and import the certificate to it
                X509Certificate2Collection clientCertificates = new X509Certificate2Collection();
                clientCertificates.Import(_certDataBytes, _certificatePassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

                // Add client certificate collection to the RestClient
                client.ClientCertificates = clientCertificates;

                // Add payment request data
                request.AddJsonBody(requestData);

                var response = client.Post(request);
                var content  = response.Content;

                if (response.ErrorException != null)
                {
                    return(new PaymentRequestECommerceResponse()
                    {
                        Error = response.ErrorException.ToString(),
                        Location = ""
                    });
                }
                else
                {
                    string location = string.Empty;

                    var headers = response.Headers.ToList();

                    if (headers.Any(x => x.Name == "Location"))
                    {
                        location = response.Headers.ToList().Find(x => x.Name == "Location").Value.ToString();
                    }

                    return(new PaymentRequestECommerceResponse()
                    {
                        Error = "",
                        Location = location
                    });
                }
            }
            catch (Exception ex)
            {
                return(new PaymentRequestECommerceResponse()
                {
                    Error = ex.ToString(),
                    Location = ""
                });
            }
        }