Как получить результат JSON из PayPot Apis в C#

Проблема, с которой я сталкиваюсь, заключается в том, что Payfort API должен вернуть мне немного JSON. Но вместо этого я получаю HTML, который имеет некоторые скрытые поля. и я не вижу никакой ошибки, написанной внутри.

Вот мой код

string access_code = string.Empty,
            amount = string.Empty,
            currency = string.Empty,
            customer_email = string.Empty,
            merchant_reference = string.Empty,
            order_description = string.Empty,
            language = string.Empty,
            merchant_identifier = string.Empty,
            signature = string.Empty,
            command = string.Empty;

        access_code = "X78979879h8h8h8";
        amount = "1000";
        command = "AUTHORIZATION";
        currency = "AED";
        customer_email = "zetawars@hotmail.com";
        language = "en";
        merchant_identifier = "RaskdQuCc";
        merchant_reference = "ASASASASASADSS";
        order_description = "Some order details";
        signature = "";

        string signature_string = "PASSaccess_code="+access_code+"amount="+amount+"command="+command+"currency="+currency+"customer_email"+customer_email+"language"+language+"merchant_identifier"+merchant_identifier+"merchant_reference"+merchant_reference+"order_description"+order_description+"PASS";

        signature = getHashSha256(signature_string);
        string url = "https://sbcheckout.payfort.com/FortAPI/paymentPage";
        string param = "access_code" + access_code + "&amount=" + amount + "&currency=" + currency + 
            "&customer_email=" + customer_email + "&merchant_reference=" + merchant_reference + 
            "&order_description=" + order_description + "&language=" + language + "merchant_identifier=" 
            + merchant_identifier + "&signature=" + signature + "&command=" + command;


        using (WebClient wc = new WebClient())
        {
            wc.Headers[HttpRequestHeader.ContentType] = "application/json";
            //wc.Headers.Add("Content-Type", "application/json");
            string HtmlResult = wc.UploadString(url, param);
        }

2 ответа

Попробуйте добавить значения для заголовка ниже

wc.Headers[HttpRequestHeader.Authorization]
wc.Headers[HttpRequestHeader.TenantId]
wc.Headers[HttpRequestHeader.Client-Type]
wc.Headers[HttpRequestHeader.Protocol]

Работает для меня!!

Сначала закодируйте ответ

string responseString = Encoding.UTF8.GetString(response);

Использовать HtmlDocument (HtmlAgilityPack)

var html = new HtmlDocument();
var tokenValue = "";
html.LoadHtml(responseString);

После загрузки этого в HTML вы можете запросить поля и значения.

var tokenFormIdElement = 
          html.DocumentNode.SelectSingleNode("//input[@name='token']");
tokenValue = tokenFormIdElement.GetAttributeValue("value", "");
Другие вопросы по тегам