.net 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

我知道,Cybersource在这里不太熟悉,但我真的遇到了一些问题,也许有人能帮我

我尝试了赛博资源支持中心,但显然他们不支持测试帐户

我有以下代码,其中我正在尝试执行对Cybersource的post请求:

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;