C#对接电子签章平台

C#对接电子签章


前言

   第一次写博客,记录下最近所做项目开发历程,遇到了很多坑,后续要坚持写博客,最近公司接到一个对接电子签章平台得项目,蛮有意思得,随着时代得发展,纸质得签名盖章逐渐被替代了,电子签名,电子签章逐渐普及,比如去银行办理卡证,去政府单位办理相关得都用到到了电子签章,本文就介绍了C#如何对接电子签章。

一、电子签章是什么?

  电子合同订立的法律效力与纸质版的书面合同订立的法律效力一样。依据《电子签名法》第三条规定,民事活动中的合同或者其他文件、单证等文书,当事人可以约定使用或者不使用电子签名、数据电文。当事人约定使用电子签名、数据电文的文书,不得仅因为其采用电子签名、数据电文的形式而否定其法律效力,当然这也是我去百度得,毕竟我也不是专业得,有兴趣得小伙伴可以去自行百度~~

二、使用步骤

首先对接得平台会提供相应得接口文档这个就不多做叙述了。按照文档要求对接即可

1.根据要求获取token

代码如下:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Web;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text; 
  
//调试模式获取token  Get请求
public static string TokenMQ()
    {
        string tokens = "";
        string appsecret = ConfigurationManager.AppSettings["appsecret"];
        string appId = ConfigurationManager.AppSettings["appId"];
        string url = ConfigurationManager.AppSettings["Url"] + "/base/login/oauth2/token?appId=" + appId + "&appKey=" + appsecret;

        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "GET";
        request.KeepAlive = true;
        request.AllowAutoRedirect = true;
        request.Timeout = 20 * 1000;
        request.UserAgent = "Apache-HttpClient/4.1.1";

        var response = (HttpWebResponse)request.GetResponse();
        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
        JObject obj = JObject.Parse(responseString);
        string Code = obj["code"].ToString();

        if (Code == "0")
        {
            tokens = obj["data"]["accessToken"].ToString();
        }
        else
        {
            tokens = obj["message"].ToString();
        }
       
        //要求token前使用时要加" "
        return " " + tokens;
    }  
        //加密模式token
    public static string Token()
    {
        string tokens = "";
        string timestamp = Convert.ToString(DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss").Replace("-", ""));//获取当前系统时间
        string appsecret = ConfigurationManager.AppSettings["appsecret"];
        string appId = ConfigurationManager.AppSettings["appId"];

        string sign = SHA256EncryptString(timestamp + appsecret);

        StringBuilder strb = new StringBuilder();
        strb.AppendLine("{");
        strb.AppendLine("\"appId\":\"" + appId + "\",");
        strb.AppendLine("\"sign\":\"" + sign + "\",");
        strb.AppendLine("\"timestamp\":\"" + timestamp + "\"");
        strb.AppendLine("}");

        WebClient client = new WebClient();
        client.Encoding = Encoding.UTF8;

        string url = ConfigurationManager.AppSettings["Url"] + "/base/login/oauth2/accessToken";

        byte[] postDatas = Encoding.UTF8.GetBytes(strb.ToString());
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        request.ContentLength = postDatas.Length;
        request.KeepAlive = true;
        request.AllowAutoRedirect = true;
        request.Timeout = 20 * 1000;
        client.Headers.Add(HttpRequestHeader.ContentType, "application/json; charset=UTF-8");
        request.UserAgent = "Apache-HttpClient/4.1.1";

        byte[] rvData = client.UploadData(url, postDatas);
        string rv = Encoding.UTF8.GetString(rvData);
        JObject obj = JObject.Parse(rv);
        string Code = obj["code"].ToString();

        if (Code == "0")
        {
            tokens = obj["data"]["accessToken"].ToString();
        }
        else
        {
            tokens = obj["message"].ToString();
        }
       //要求token前使用时要加" "
        return " "+tokens;
    }

2.相关接口调用

代码如下:

  [WebMethod(Description = "查询企业信息接口")]
    public string SelectCompanys(string companyName)
    {
        string Tokens = Token();
        //string companyId = "";//企业在本地电子签系统的唯一标识
        //string tpOrgId = "";//企业在第三方业务系统的唯一标识
        //string companyName = "";//公司名称
        //string creditNo = "";//统一社会信用代码

        string url = ConfigurationManager.AppSettings["Url"] + "/user/api/company/getCompany?companyName=" + companyName;
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "GET";
        request.KeepAlive = true;
        request.AllowAutoRedirect = true;
        request.Timeout = 20 * 1000;
        request.UserAgent = "Apache-HttpClient/4.1.1";
        request.ContentType = "application/x-www-form-urlencoded";
        request.Headers.Add("Authorization", "bearer" + Tokens);
        var response = (HttpWebResponse)request.GetResponse();
        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

//前端解析json返回
        return responseString;
}

总结

代码完了然后来讲讲遇到得一些坑吧

1.第一个就是第三方得文档给的一言难尽,一个接口差不多上百个字段,只言片语完全靠猜,折磨人,不过这个需要点耐心,需要去反复得调试,其中乐趣就需要用到的小伙伴自行体会妙趣。

2.这个代码得东西多了就需要细致和耐心了,可能一个字符和一个大小写能搞几十分钟或者几小时,这个属于自己的本身的原因,以后加以改善,做事仔细点

3.程序员这个行业拼的就是谁更努力谁更愿意去学,加油吧,骚年~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值