c# - 调用PayU rest api(创建订单)返回html而不是json响应

标签 c# rest payumoney payu

我正在尝试向 PayU 支付网关发布订单,使用诸如 postman 之类的 Rest Client 工具,我也遇到了同样的问题。

enter image description here

我正在尝试使用 C# 发布,订单创建成功但响应不符合预期,它应该是一个包含插入的订单 ID 和重定向 url 的 json 对象,但当前是 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;
        }
    }

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

最佳答案

经过一些尝试,我发现 PayU rest api 返回 302 (找到)还有 ResponseUri不是 OK 200正如预期的那样。

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

解决办法是:

client.FollowRedirects = false;

希望这对任何人有用。

关于c# - 调用PayU rest api(创建订单)返回html而不是json响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56837519/

相关文章:

python - 如何在 Django 中为第 3 方 REST 服务进行分页/分页

android - Payu SDK,解析元元素内容时出错

c# - 在任务管理器中更改我的程序名称

javascript - 如何判断请求是否应该呈现在服务器端? (ReactJS)

java - @JsonProperty 未按预期工作

java - Spring REST - 创建 ZIP 文件并将其发送到客户端

android - Android 中的 PayuMoney 集成 : Some error occured! 再试一次

angularjs - 支付成功后重定向到 AngularJS 路由

c# - 存储更新、插入或删除语句影响了意外的 .自加载实体后修改或删除的实体

c# - 将数据从 View 传输到 JavaScript 的最佳方式