【问题标题】:how to get json result from payfort Apis in C#如何从 C# 中的 payfort APIs 获取 json 结果
【发布时间】:2017-01-06 15:44:57
【问题描述】:

我面临的问题是,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);
        }

【问题讨论】:

  • 您找到任何解决方案了吗?我现在面临同样的问题。此代码是否将参数发送到 api 并从中接收数据。或仅发送 .如果只是发送,我如何在发送请求后接收响应。

标签: c# asp.net json payfort


【解决方案1】:

首先对响应进行编码

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", "");

【讨论】:

    【解决方案2】:

    尝试为下面的标题添加值

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

    为我工作!!

    【讨论】:

    • 我应该在这里添加什么值
    • 可以由为您提供网络服务的人提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多