Exemplo n.º 1
0
        private RegisterPreAuthResponse RegisterPreAuth(RegisterPreAuthRequest registerParams)
        {
            RegisterPreAuthResponse res = null;

            try
            {
                // single-phase payment
                var url = _sberbankSettings.BaseUrl.Trim('/') + "/register.do";

                // payment with holding
                //var url = _sberbankSettings.BaseUrl.Trim('/') + "/registerPreAuth.do";


                registerParams.token = _sberbankSettings.Token;


                var urlParams = ObjectToQueryString(registerParams);
                url += "?" + urlParams;


                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                                       | SecurityProtocolType.Tls11
                                                       | SecurityProtocolType.Tls12;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method          = "POST";
                request.ContentType     = "application/json";
                request.Proxy           = null;
                request.KeepAlive       = false;
                request.ProtocolVersion = HttpVersion.Version10;
                request.ServicePoint.ConnectionLimit = 1;
                request.Headers.Add("UserAgent", "Pentia; MSI");


                try
                {
                    HttpWebResponse getResponse = (HttpWebResponse)request.GetResponse();
                    using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
                    {
                        string json   = sr.ReadToEnd();
                        var    result = (RegisterPreAuthResponse)JsonConvert.DeserializeObject <RegisterPreAuthResponse>(json);

                        return(result);
                    }
                }
                catch (Exception e)
                {
                    _logService.LogError(e);

                    throw;
                }
            }
            catch (Exception e)
            {
                _logService.LogError(e);
            }
            return(res);
        }
        /// <summary>
        /// Иницциирование двухстадийной оплаты заказа
        /// </summary>
        public RegisterPreAuthResponse RegisterPreAuth(RegisterPreAuthParams registerParams)
        {
            var url = _settings.BaseUrl + "/registerPreAuth.do";
            RegisterPreAuthRequest request = new RegisterPreAuthRequest(registerParams)
            {
                userName = _settings.Username,
                password = _settings.Password
            };
            var result = _networkClient.PostObjectViaUrlParams <RegisterPreAuthResponse>(url, request);

            return(result);
        }
Exemplo n.º 3
0
        public string ProcessPayment(int orderNumber, decimal amount, string returnUrl)
        {
            RegisterPreAuthRequest req = new RegisterPreAuthRequest();

            //TODO: Могут возникать проблемы из-за одинаковых номеров, если одновременно подключена оплата и для заявок в формах,
            //и для корзины магазина
            req.orderNumber = orderNumber.ToString();
            req.returnUrl   = returnUrl;
            req.amount      = Decimal.ToInt32(Math.Round(amount * 100)); //копейки
            req.currency    = 643;
            var result = RegisterPreAuth(req);

            return(result.formUrl);
        }