我通过 Payfast 的自定义集成合并了他们。我正在最后一步通过向以下网址发出请求来验证 Payfast 的请求:
https://sandbox.payfast.co.za/eng/query/validate
。
string concat = "pf_payment_id=185322&payment_status=COMPLETE&item_name=ON_123&amount_gross=261.50&merchant_id=00030878...etc";
using (var httpClient = new HttpClient())
{
string jsonString = JsonConvert.SerializeObject(concat);
HttpContent content = new StringContent(jsonString, Encoding.UTF8, "application/json");
var url = _configuration["Payment:Payfast:ValidateUrl"];
using (var response = await httpClient.PostAsync(url, content))
{
}
}
回应:
{StatusCode: 405, ReasonPhrase: 'Method Not Allowed', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Server: nginx/1.19.6
Date: Thu, 21 Sep 2023 18:52:08 GMT
Cache-Control: no-cache, private
Via: 1.1 google
Strict-Transport-Security: max-age=63072000 ; includeSubDomains
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-Type: text/html; charset=UTF-8
Content-Length: 630
Allow: GET, HEAD
}}
根据他们的文档,该方法是POST。我做错了什么?
首先将
httpclient
服务添加到您的项目中
builder.Services.AddHttpClient();
接下来使用依赖注入
private readonly IHttpClientFactory _clientFactory;
public SendDataController(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
_logger = logger;
}
并像这样发送数据:
var values = new Dictionary<string, string>()
{
{ "id", "1255" },
{ "status", "Complete"},
{ "item_name", "ON_123" },
//Other values
};
var content = new FormUrlEncodedContent(values);
using var Request = new HttpRequestMessage();
Request.Method = HttpMethod.Post;
Request.RequestUri = new Uri("YourURL");
Request.Content = content;
using var client = _clientFactory.CreateClient();
using var response = await client.SendAsync(Request);
Request.Dispose();
string result = await response.Content.ReadAsStringAsync();
response.Dispose();
//Other Operations
还有不清楚的地方可以联系我