Вызов PayU rest api (создание заказа) возвращает html вместо ответа json - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь отправить заказ на платежный шлюз PayU, используя инструменты Rest Client, такие как почтальон, и у меня возникла та же проблема.

enter image description here

Я пытаюсь опубликовать сообщение с использованием C #, порядок создан успешно, но ответ не такой, как ожидалось, это должен быть объект json, содержащий вставленный идентификатор заказа и URL-адрес перенаправления, но текущий ответ html!

C # Код ответа: enter image description here

Мой код C # с использованием библиотеки restsharp:

 public IRestResponse<CreateOrderResponseDTO> CreateOrder(CreateOrderDTO orderToCreate)
    {

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        var actionUrl = "/api/v2_1/orders/";

        var client = new RestClient(_baseUrl);

        var request = new RestRequest(actionUrl, Method.POST)
        {
            RequestFormat = DataFormat.Json
        };

        request.AddJsonBody(orderToCreate);


        request.AddHeader("authorization", $"Bearer {_accessToken}");
        request.AddHeader("Content-Type", "application/json");

        var response = client.Execute<CreateOrderResponseDTO>(request);

        if (response.StatusCode == HttpStatusCode.OK)
        {
            return response;
        }

        throw new Exception("order not inserted check the data.");


    }

Мой код C # с использованием встроенного WebRequest также возвращает тот же HTML:

 public string Test(string url, CreateOrderDTO order)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Accept = "application/json";

        httpWebRequest.Method = "POST";
        httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + _accessToken);

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {

            streamWriter.Write(new JavaScriptSerializer().Serialize(order));
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            return result;
        }
    }

Кто-нибудь может посоветовать, что я здесь пропустил?

1 Ответ

0 голосов
/ 02 июля 2019

После нескольких попыток я обнаружил, что PayU rest api возвращает 302 (найдено) также ResponseUri не OK 200, как ожидалось.

по умолчанию оставшийся клиент автоматически перенаправляет на этот URL, чтобы я получил html-содержимое страницы оплаты.

Решение:

client.FollowRedirects = false;

Надеюсь, это пригодится всем.

...