应用场景
在企业会员后台注册系统中,为验证企业名称是否输入完整且是有效存在的,则可以通过云API服务的方式进行验证及提取相关的基本信息,自动化提取的企业工商其它信息如法人、企业性质、经营地址等也可以提高录入效率和准确率。
本文将以阿里云提供的 API 服务,实现通过企业名称查询工商数据的功能。
关于阿里云企业工商数据查询API
官方介绍其每天更新全国企业、个体工商户的数据。
1. 注册阿里云账号。
2. 获取开发者 AppCode,后继开发会用到。
开发运行环境
操作系统: Windows Server 2019 DataCenter
.net版本: .netFramework4.0 或以上
开发工具:VS2019 C#
类设计
类 Company (企业类) 设计见下表:
类属性
序号 | 属性名 | 类型 | 说明 |
1 | ErrorMessage | string | 发生任何异常返回的错误信息 |
2 | ResultJson | string | 请求返回结果Json完整数据 |
3 | creditCode | string | 社会统一信用代码 |
4 | faRen | string | 法人 |
5 | address | string | 注册地址 |
6 | bussinessDes | string | 经营范围 |
7 | regType | string | 公司类型 |
8 | regMoney | string | 注册资金 |
9 | bussiness | string | 营业期限 |
类方法
queryName 和 queryName2 方法均可以查询(调用地址和方式不同,参数一致),调用均返回对应的类属性数据,参数见如下表格:
序号 | 参数名 | 类型 | 说明 |
1 | CompanyName | string | 传递完整的企业名称 |
本方法返回 string 类型的对应属性值(如果成功的话)。
实现代码
创建 Company 类
public class Company { public string ResultJson=""; public string ErrorMessage = ""; public string creditCode = ""; public string faRen = ""; public string address = ""; public string bussinessDes = ""; public string regType = ""; public string regMoney = ""; public string bussiness = ""; public void queryName(string CompanyName) { String host = "http://qianzhan1.market.alicloudapi.com"; String path = "/CommerceAccurate"; String method = "GET"; String appcode = "您的AppCode"; String querys = "comName=" + System.Web.HttpUtility.UrlEncode(CompanyName); String bodys = ""; String url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { ErrorMessage = ex.Message; httpResponse = (HttpWebResponse)ex.Response; return; } Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); ResultJson=(reader.ReadToEnd()); if (ResultJson.IndexOf("查询成功") == -1) { return; } Newtonsoft.Json.Linq.JObject jsonObj = Newtonsoft.Json.Linq.JObject.Parse(ResultJson); creditCode = jsonObj["result"]["creditCode"].ToString(); faRen = jsonObj["result"]["faRen"].ToString(); address = jsonObj["result"]["address"].ToString(); bussinessDes = jsonObj["result"]["bussinessDes"].ToString(); regType = jsonObj["result"]["regType"].ToString(); regMoney = jsonObj["result"]["regMoney"].ToString(); bussiness = jsonObj["result"]["bussiness"].ToString(); } public void queryName2(string CompanyName) { //Zm1qSqdjl2296ixnA6ODXpglwQKYxkSD String host = "https://cardnotwo.market.alicloudapi.com"; String path = "/company"; String method = "POST"; String appcode = ""您的AppCode";"; String querys = "com=" + System.Web.HttpUtility.UrlEncode(CompanyName); String bodys = ""; String url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { ErrorMessage = ex.Message; httpResponse = (HttpWebResponse)ex.Response; return; } Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); ResultJson = (reader.ReadToEnd()); if (ResultJson.IndexOf("查询成功") == -1) { return; } Newtonsoft.Json.Linq.JObject jsonObj = Newtonsoft.Json.Linq.JObject.Parse(ResultJson); creditCode = jsonObj["result"]["creditCode"].ToString(); faRen = jsonObj["result"]["faRen"].ToString(); address = jsonObj["result"]["address"].ToString(); bussinessDes = jsonObj["result"]["bussinessDes"].ToString(); regType = jsonObj["result"]["regType"].ToString(); regMoney = jsonObj["result"]["regMoney"].ToString(); bussiness = jsonObj["result"]["bussiness"].ToString(); } }
调用举例
调用判断是否返回社会统一信用代码,示例代码如下:
Company cp = new Company(); cp.queryName2("天津XXXX数码有限公司"); if (cp.creditCode != "") { Response.Write("社会统一信用代码:" + cp.creditCode + "<br>"); Response.Write("法人:" + cp.faRen + "<br>"); Response.Write("注册地址:" + cp.address + "<br>"); Response.Write("营业范围:" + cp.bussinessDes + "<br>"); Response.Write("企业性质:" + cp.regType + "<br>"); Response.Write("注册资金:" + cp.regMoney + "<br>"); Response.Write("营业期限:" + cp.bussiness + "<br>"); } else { Response.Write("错误信息:" + cp.ErrorMessage + "<br>"); Response.Write("JSON返回信息:" + cp.ResultJson + "<br>"); }
小结
调用云接口服务需要费用,我们需要根据实际应用进行成本考虑,官方说明如果查询失败则不扣除费用,具体内容可参考本文第二小节关于阿里云企业工商数据查询API中的链接。
感谢您的阅读,希望本文能够对您有所帮助。