2016-08-30 2 views
0

Проблема, с которой я столкнулся, заключается в том, что API-интерфейс payfort должен вернуть мне некоторый json. Но вместо этого я получаю некоторый html, у которого есть скрытые поля. и я не вижу ошибок там.Как получить результат json от payfort Apis в C#

Вот мой код

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 = "[email protected]"; 
     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); 
     } 
+0

Вы нашли какие-либо решения. я сталкиваюсь с тем же вопросом сейчас. этот код отправляет параметры в api и получает от него данные. или только отправить. если он только отправляет, как получить ответ после отправки запроса. – Mariam

ответ

3

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

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

Works для меня !!

+0

Какие значения я должен добавить здесь – Zawar

+0

, которые могут быть предоставлены людьми, предоставившими вам веб-сервис. –

0

Первый Encode ответ

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", ""); 
Смежные вопросы