.net Cybersource post请求始终获取会话超时
我知道,Cybersource在这里不太熟悉,但我真的遇到了一些问题,也许有人能帮我 我尝试了赛博资源支持中心,但显然他们不支持测试帐户 我有以下代码,其中我正在尝试执行对Cybersource的post请求:.net Cybersource post请求始终获取会话超时,.net,xamarin.forms,cybersource,.net,Xamarin.forms,Cybersource,我知道,Cybersource在这里不太熟悉,但我真的遇到了一些问题,也许有人能帮我 我尝试了赛博资源支持中心,但显然他们不支持测试帐户 我有以下代码,其中我正在尝试执行对Cybersource的post请求: private async void Confirm_Payment(object sender, EventArgs e) { var randomGuid = Guid.NewGuid().ToString(); var currentDateTime = GetUT
private async void Confirm_Payment(object sender, EventArgs e)
{
var randomGuid = Guid.NewGuid().ToString();
var currentDateTime = GetUTCDateTime();
var referenceNumber = "1594706148080";
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
var values = new Dictionary<string, string>
{
{"access_key", "ACCESS_KEY"},
{"profile_id", "PROFILE_ID"},
{"transaction_uuid", randomGuid},
{"signed_field_names", "access_key,profile_id,transaction_uuid,signed_field_names,unsigned_field_names,signed_date_time,locale,transaction_type,reference_number,amount,currency"},
{"unsigned_field_names", ""},
{"signed_date_time", currentDateTime},
{"locale", "en"},
{"transaction_type", "authorization"},
{"reference_number", referenceNumber},
{"amount", "100.00"},
{"currency", "USD"},
{"submit", "Submit"}
};
var signature = Security.Sign(values);
foreach (var keyValuePair in values)
{
content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
}
content.Add(new StringContent(signature), "signature");
var requestUri = "https://testsecureacceptance.cybersource.com/pay";
var result = await client.PostAsync(requestUri, content);
if (result.IsSuccessStatusCode)
{
var resp = await result.Content.ReadAsStringAsync();
await Navigation.PushAsync(new WebScreen(requestUri));
}
}
}
}
我尝试使用相同的代码,并在Xamarin表单中执行它,但没有成功
我认为问题在于,我们应该添加特定的头,以使Cybersource Gateway不会出现会话超时问题。有人知道会出现什么问题吗?我不知道是否有人会遇到这个问题,但我通过在
网络视图中添加cookie解决了这个问题
即使在网络视图中导航
也会引发相同的错误(会话超时)。
但通过添加以下代码可以解决此问题:
var domain = new Uri(webSource.BaseUrl).Host;
var cookie = new Cookie
{
Secure = true,
Expired = false,
HttpOnly = false,
Name = "cookie",
Expires = DateTime.Now.AddDays(10),
Domain = domain,
Path = "/"
};
cookies.Add(cookie);
paymentWebView.Cookies = cookies;
我也有同样的问题,但是关于javascript和html。我将尝试cookie参数。
var domain = new Uri(webSource.BaseUrl).Host;
var cookie = new Cookie
{
Secure = true,
Expired = false,
HttpOnly = false,
Name = "cookie",
Expires = DateTime.Now.AddDays(10),
Domain = domain,
Path = "/"
};
cookies.Add(cookie);
paymentWebView.Cookies = cookies;