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); }
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); }