Moh*_*nem 7 c# rest payu payumoney
我正在尝试使用 Post Man 等 Rest 客户端工具向 PayU 支付网关发布订单,我也遇到了同样的问题。
我尝试使用 C# 发布,订单创建成功,但响应不符合预期,它应该是一个 json 对象,包含插入的订单 id 和重定向 url ,但当前是 html 响应!
我使用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)
谁能告诉我我在这里错过了什么?
经过一番尝试后,我发现 PayU Rest api 返回302(发现)也不ResponseUri如OK 200预期。
默认情况下,rest 客户端会自动重定向到此 url,因此我收到了支付页面的 html 内容。
解决方案是:
client.FollowRedirects = false;
Run Code Online (Sandbox Code Playgroud)
希望这对任何人都有用。
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |