调用 PayU Rest api(创建订单)返回 html 而不是 json 响应

Moh*_*nem 7 c# rest payu payumoney

我正在尝试使用 Post Man 等 Rest 客户端工具向 PayU 支付网关发布订单,我也遇到了同样的问题。

在此输入图像描述

我尝试使用 C# 发布,订单创建成功,但响应不符合预期,它应该是一个 json 对象,包含插入的订单 id 和重定向 url ,但当前是 html 响应!

C# 代码响应: 在此输入图像描述

我使用restsharp库的C#代码:

 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.");


    }
Run Code Online (Sandbox Code Playgroud)

我使用内置的 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我在这里错过了什么?

Moh*_*nem 6

经过一番尝试后,我发现 PayU Rest api 返回302(发现)也不ResponseUriOK 200预期。

默认情况下,rest 客户端会自动重定向到此 url,因此我收到了支付页面的 html 内容。

解决方案是:

client.FollowRedirects = false;
Run Code Online (Sandbox Code Playgroud)

希望这对任何人都有用。


Mat*_*usz 6

在邮递员中,解决方案是关闭重定向,如下图所示:

邮递员重定向草坪