1、1福建省市场监管信息共享平台技术对接方案福建省空间信息工程研究中心2014 年 10 月目 录1. 概述 11.1. 系统总体架构 11.2. 系统业务流程 21.3. 市场主体信息主动推送流程设计 31.4. 市场监管信息主动推送流程设计 41.5. 市场监管信息接收流程设计 42. 市场主体信息主动推送服务设计 52.1. 市场主体信息推送信息格式说明 52.2. 市场监管信息推送信息格式说明 62.3. 客户端返回编码约定 72.3.1. 客户端返回值列表 73. 市场监管信息接收接口设计 73.1. 接口地址 73.2. 编码约定 73.2.1. 应用 ID( AppID) .73.2
2、.2. 接口返回值列表 83.3. 用户身份验证接口 83.4. 组织机构代码信息推送 94. 调用范例 114.1.1. Java 调用 WEB 服务说明 .114.1.2. Eclipse 配置 JDK 小贴士 .144.1.3. Java 环境变量设置小贴士 .204.2. 市场主体信息主动推送服务示例 244.2.1. 示例概述 244.2.2. C#如何进行接收市场主体信息推送信息 .244.2.3. java 如何进行接收市场主体信息推送信息 254.3. 市场监管信息主动推送服务示例 294.3.1. 示例概述 294.3.2. C#如何进行接收市场监管信息推送信息 .294.3
3、.3. java 如何进行接收市场监管信息推送信息 3111. 概述福建省市场监管共享平台建设目标是通过整合各部门的审批、监管、执法等信息,形成完整、准确、动态的市场监管信息数据库,推进跨部门信息资源的共享。本 规范制定的目的是为了指导政府部门业务系统对接福建省市场监管共享平台,实现福建省市场监管共享平台向政府部门业务系统推送市场主体信息,促进政府部门进行税务登记、许可办理等业务的进行。各许可管理部门和市场监管部门可通过市场监管信息共享平台获取市场主体信息,并将市场主体的行政许可、监管信息、执法信息和信用信息上传到平台中进行共享。1.1. 系统 总体架构21.2. 系统业务流程市场主体在工商局
4、办理登记后,由省工商局将市场主体信息推送到福建省市场监管共享平台,市场监管共享平台将市场主体信息主动推送给质监局、国税局、地税局和各许可部门。质监局接收到市场主体信息后给市场主体附上组织机构代码,并将组织机构代码信息推送至市场监管共享平台,市场监管共享平台接收到组织机构代码信息后将市场主体信息推送至地税局、国税局和各行政许可部门。流程图如下图所示:3图 1-11.3. 市场 主体信息主动推送流程设计部门业务系统接收市场监管共享平台推送的市场主体信息,首先各部门业务系统管理人员提供市场主体信息接收服务地址和验证信息,然后市场监管共享平台生成市场主体信息和验证消息并推送至各业务部门管理人员提供的市
5、场主体信息接收服务(【注意】质监局、国税局和地税局市场监管平台会主动完成主体信息的推送,其他行政许可部门需要到市场监管平台“主体登记” 模块进 行市场主体 认领和推送)。具体流程图如下所示:图 1-241.4. 市场监管信息主动推送流程设计部门业务系统接收市场监管共享平台推送的市场监管信息,首先各部门业务人员提供市场监管信息接收服务地址和验证信息,然后市场监管共享平台生成市场监管信息和验证消息并推送至各业务部门业务人员提供的市场监管信息接收服务。具体流程图如下所示:图 1-31.5. 市场监管信息接收流程设计部门业务系统调用市场监管共享平台提供的信息接收接口时,首先需要5进行身份验证,通过身份
6、认证后将获取到一个会话秘钥,用户使用该会话秘钥就可以进行市场监管信息推送。具体流程图如下所示:图 1-42. 市场主体信息主动推送服务设计由福建省市场监管共享平台主动推送市场主体信息,各级政府部门通过提供 RESTFul 服务或者 HTTP/HTTPS 接受 请求服务进行数据接收可以实现市场主体信息对接。2.1. 市场主体信息推送信息格式说明福建省市场监管共享平台采用 JSON 消息格式推送市 场主体信息,6推送的 JSON 消息包括以下两部分内容;1. PushHeader:推送消息 头,由提供方提供的消息接收固定参数,通常用于身份验证来保证请求的合法性。2. PushContents:推送
7、消息体是市场主体信息的 JSON 数组格式。消息格式说明如下所示:“PushHeader“:“消息头xzw359482003“,“PushContents“:“Name“:“市场主体名称“,“GSRegCode“:“工商注册号“,“LegalName“:“法定代表“,“Lxdh“:“ 联系电话“,“Yzbm“:“邮政编码“,“Address“:“经营场所“,“RegFounds“:“注册资金“,“TradeRange“:“经营范围“,“TradeStartDate“:“经营起始时间“,“TradeEndDate“:“经营结束时间 “,“QYLXName“:“企业类型“,“RegInsName“
8、:“登记机关“,“IndustryName“:“行业“ ,“Name“:“市场主体名称“,“GSRegCode“:“工商注册号“,“LegalName“:“法定代表“,“Lxdh“:“联系电话“,“Yzbm“:“邮政编码“,“Address“:“经营场所“,“RegFounds“:“注册资金“,“TradeRange“:“经营范围“,“TradeStartDate“:“经营起始时间“,“TradeEndDate“:“经营结束时间 “,“QYLXName“:“企业类型“,“RegInsName“:“登记机关“,“IndustryName“:“行业“ 2.2. 市场监管信息推送信息格式说明福建省市
9、场监管共享平台采用 JSON 消息格式推送市 场主体信息,推送的 JSON 消息包括以下两部分内容;3. PushHeader:推送消息 头,由提供方提供的消息接收固定参数,通常用于身份验证来保证请求的合法性。4. PushContents:推送消息体是市场监管信息 XML 格式( 注意:由于各个监管事项的数据项都不一样,每个结点 Node 表示监管事项的一个数据项)。消息格式说明如下所示:“PushHeader“:“xzw359482003“,“PushContents“:“Compname“:“中航建工集团有限公司福鼎分公司(监管对象)“,“Msitemname“:“行政处罚(监管事项)“
10、,“Insname“:“福建省发展和改革委员会(监管部门)“,“Msdate“:“2014-10-15“,“Content“:“567344541中航建工集团有限公司福鼎分公司7行政处罚逾期年检案件名称:中航建工集团有限公司福鼎分公司逾期年检,结案日期:2012.08.24,立案机关:福鼎市工商行政管理局2012-08-24已结案2013-03-12福鼎市工商行政管理局“2.3. 客户端返回编码约定为了确定市场主体信息接收方是否接收到推送消息,信息接收方返回值约定如下:2.3.1. 客户端返回值列表返回值 编码描述00 推送信息接收成功其他 推送信息接收异常3. 市场监管信息接收接口设计3.1
11、. 接口 地址市场监管信息接收服务的 Web Service 服务 地址是: http:/10.6.88.24:88/83.2. 编码约定3.2.1. 应用 ID(AppID)应用 ID 是作为第三方应用系统跟系统对接的凭证。需要调用市场监管系统 WebService 接口的应用系统,在调用前,必须先向市场监管系统申请一个应用 ID(AppID),作为请求的参数。3.2.2. 接口返回值列表返回值编码 编码描述-1 接口调用失败00 接口调用成功01 未找到匹配的信息02 系统内部错误03 应用 ID 不存在04 签名验证失败05 时间戳过期06 必填信息为空07 信息格式错误 一般出现在时间
12、格式错误 应为 2012-12-01 或 2012-12-01 15:01:5911 身份验证不通过或 GUID 过期12 Xml格式不对13 Xml必要结点缺失Z01 未能找到匹配的企业 推送的组织机构代码信息在市场监管平台找不到相应的企业3.3. 用户身份验证接口接口地址:/ MainRegist.asmx部门业务系统调用市场监管接收推送接口时,市场监管平台首先会对调用方的身份进行验证,调用方的用户名和密码由省空间信息工程研究中心分配。本接口负责部门业务系统的身份认证功能,部门业务系统通过调用本接口,通过数字福建政务通身份认证后将获取到一个身份验证串,用户使用该身份验证串就可以调用市场接管
13、接收推送接口。9原型接口:public string Authorization (string userName, string password)参数说明:userName 用户帐号 必填password 用户密码必填返回值:guid 验证串,通过身份验证用户,将获取身份验证串;如果身份验证失败,将返回失败内容(格式是 ERR:具体原因,如ERR:账号不存在! ) 。功能描述:用于对访问该接收推送服务进行身份验证,只有已经注册为市场监管用户的才能过身份验证获得身份验证串。通过身份验证串来访问该服务的其它接口。3.4. 组织机构代码信息推送接口地址:/ MainRegist.asmx组织机构
14、代码信息推送接口用于质监局进行企业组织机构代码信息的推送。 方法名称: public string ReceiveOrgCode(string guid, string appid, string xmlstr) 参数说明:参数名称 取值类型 是否必填 说明guid string 必填 身份认证验证串appid string 必填 应用 ID,由本接口服务分配xmlstr string 必填 组织机构代码信息 xml其中,参数 xml 格式参考如下, 实现不同的操作则参考具体的接口说明:123456789测试企业201500111111111XXXX35090000测试地址建设35000110
15、xml 元素说明:节点 /属性 是否必填 说明 示例ZZJGDM 节点 必填 Xml 的根节点,固定名称 ORGCODE 结点 必填 企业组织机构代码 组织机构代码ORGNAME 结点 必填 企业名称 企业名称GSZCH 结点 必填 企业工商注册号 企业工商注册号LEGALNAME 结点 可选企业法人 企业法人ZJHM 结点 必填 证件号码 证件号码ORGADDRESS结点 必填 企业地址 企业地址YZBM结点 可选 邮政编码 邮政编码DHHM结点 可选 电话号码 电话号码BZRQ结点 必填 颁证日期 颁证日期NJRQ结点 可选 年检日期 年检日期NJQX结点 可选 年检期限 年检期限ZFRQ
16、结点 必填 作废日期 作废日期XZQH结点 可选 行政区划 行政区划BZJG结点 必填 颁证机构 颁证机构JGLX结点 必填 机构类型 机构类型 返回值 00推送组织机构代码成功35000012014-04-15 10:51:392014/04/15 10:51:392014-11-282014-11-28福建省漳州市福建省质监局企业法人1112Xml文件格式不对4. 调用范例4.1.1. Java 调用 WEB 服务说明(1) 接口所在服务 URL,如 http:/localhost:11842/MainRegist.asmx?wsdl。(2) 在 eclipse 中,选择 file-new
17、-other,然后选择 web service client。如下图所示:(3) 在service definition 里面,先将 WSDL 地址中的 https 改成 http 后,再黏贴进去,如下图所示:12(4) 点击 Finish(5) 在代码中选中项目目录按 Ctrl+H,弹出框选择 File Search,如下图:点击 Search 搜索 http:/120.35.29.217/xxjhtsxtservice/InfoShare.asmx?wsdl 字符串,双击查询到匹13配的字符串,并将 http 改回 https,如下图:(6) 在代码中创建 Common 类,代码如下:im
18、port .ssl.HostnameVerifier;import .ssl.HttpsURLConnection;import .ssl.SSLSession;import org.apache.axis.AxisProperties;public class Common public static void addTop()String path = Common.class.getResource(“/“).getPath();System.setProperty(“.ssl.trustStore“, path+“kind/business2/zwt/keystore/zwt.keys
19、tore“);/ zwt.keystore 为导出的证书System.setProperty(“.ssl.trustStorePassword“, “111111“);/“111111”为导出证书时所设置的密码System.setProperty(“java.protocol.handler.pkgs“, “.ssl“);HostnameVerifier hv = new HostnameVerifier()public boolean verify(String urlHostName, SSLSession session) return urlHostName.equals(sessio
20、n.getPeerHost(); ;HttpsURLConnection.setDefaultHostnameVerifier(hv);14(7) 在代码中先调用引用证书代码,然后声明一个对象实例Common.addTop(); /引用证书代码调用InfoShareSoapProxy test = new InfoShareSoapProxy();/声明一个对象实例,然后通过 test 调用政务信息接收推送系列接口。(8) 如果运行出现以下情况,则可能你使用的 JDK 版本不适用于 HTTPS 的请求,建议使用 jdk1.5、jdk1.6、jdk1.7 版本,并在开发软件中加载相应版本的 JD
21、K:4.1.2. Eclipse 配置 JDK 小贴士(1) 打开 eclipse 软件,等待加载完成来到主界面15(2) 在主界面工具栏上找到 window preferences 选项,如图所示:16(3) 在新弹出界面选择 Java Installed JREs,先不管当前的配置,选择 ADD17(4) ADD 之后选择 standard VM,然后点击 next(5) 在新弹出框中,这里就要用到 JRE home 和 JRE name 18(6) 选择 directory,在弹出框中选择你安装 Java jdk 的位置,默认的是 C:Program FilesJava(7) 选择 jd
22、k 文件夹,单击确定19(8) 在之后点击 finish,然后回到了第一个界面20(9) 可以看到已经添加了 jdk,记得要给之前4.1.3. Java 环境变量设置小贴士 以 Win7 系统为例(1) 右键点击“计算机” ,在弹出的窗口中选择“属性” ;(2) 点击“高级系统设置” ,如下图:21(3) 点击“环境变量” ,如下图:(4) 设置 JAVA_HOME 变量,在系统变量中选择 “新建” (如果已存在,可先删除) ,如下图: 22(5) 输入变量名:“JAVA_HOME” ,输入变量值:“JDK 物理路径” ,单击“确定”保存,如下图;(6) 设置 Path 变量,在系统变量中选择
23、“Path” ,单击“编辑” ,如下图:23(7) 在变量值中添加:“%JAVA_HOME%bin;”或“JDK 物理路径; ”,单击“确定”保存,如下图:(8) 设置 CLASSPATH 变量,在系统变量中选择“新建” (如果已存在,可先删除) ,如下图:(9) 输入变量名:“CLASSPATH” ,输入变量值:“C:Program FilesJavajdk1.6.0libtools.jar; C:Program FilesJavajdk1.6.0librt.jar;” (jar 的物理路径),单击 “确定”保存,如下图;244.2. 市场主体信息主动推送服务示例4.2.1. 示例概述本节主
24、要通过一个简单的 C#示例和 java 示例,描述部门业务系统如何进行接收市场主体信息推送信息。4.2.2. C#如何进行接收市场主体信息推送信息(1) 新建 HTTP 请求接收处理程序,如下图所示:(2) 具体代码如下:/ / GetCompanyInfos的摘要说明/ public class GetCompanyInfos: IHttpHandler25public void ProcessRequest(HttpContext context)tryStreamReader reader = new StreamReader(context.Request.InputStream);/
25、获取到推送的消息内容string jsonStr = reader.ReadToEnd();/推进采用下列操作PushMessagePackage model = JsonConvert.DeserializeObject(jsonStr);/todo: 获取到数据后操作 建议不要进行复杂的逻辑操作 不然导致请求操作/* model.PushHeader 消息头 可以进行身份验证等等model.PushContents内容*/成功接收到数据后返回00context.Response.Write(“00“);catch (Exception ex)/错误返回错误信息context.Respons
26、e.Write(ex.Message);public bool IsReusablegetreturn false;4.2.3. java 如何进行接收市场主体信息推送信息(1) 用 MyEclipse 新建项目,如图所示:2627(2) 具体代码如下:public class CompanyInfoReceive extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(re
27、quest, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException BufferedReader br = null;OutputStream os = null;28try br = new BufferedReader(new InputStreamReader(ServletInputStream) request.getInputStream(), “UTF-8“);String line = n
28、ull;StringBuilder sb = new StringBuilder();while (line = br.readLine() != null) sb.append(line);String data = sb.toString();JSONObject json = JSONObject.fromObject(data);/字符串转jsonJSONArray dataArray = JSONArray.fromObject(json.get(“PushContents“);List list = new ArrayList();for (int i = 0, len = dat
29、aArray.size(); i len; i+) JSONObject jsonObject = dataArray.getJSONObject(i);CompanyInfo c = new CompanyInfo();c.setName(jsonObject.getString(“Name“).replace(“null“, “);c.setGSRegCode(jsonObject.getString(“GSRegCode“).replace(“null“, “);c.setLegalName(jsonObject.getString(“LegalName“).replace(“null“
30、, “);c.setLxdh(jsonObject.getString(“Lxdh“).replace(“null“, “);c.setYzbm(jsonObject.getString(“Yzbm“).replace(“null“, “);c.setAddress(jsonObject.getString(“Address“).replace(“null“, “);c.setRegFounds(jsonObject.getString(“RegFounds“).replace(“null“, “);c.setTradeRange(jsonObject.getString(“TradeRang
31、e“).replace(“null“, “);c.setTradeStartDate(jsonObject.getString(“TradeStartDate“).replace(“null“, “);c.setTradeEndDate(jsonObject.getString(“TradeEndDate“).replace(“null“, “);29c.setQYLXName(jsonObject.getString(“QYLXName“).replace(“null“,“);c.setRegInsName(jsonObject.getString(“RegInsName“).replace
32、(“null“, “);c.setIndustryName(jsonObject.getString(“IndustryName“).replace(“null“, “);list.add(c);response.setHeader(“Content-type“, “text/html;charset=UTF-8“);os = response.getOutputStream();os.write(“00“.getBytes(“UTF-8“); catch (Exception e) System.out.println(e.toString(); finally if (br != null) br.close();if (os != null) os.close();4.3. 市场监管信息主动推送服务示例4.3.1. 示例概述本节主要通过一个简单的 C#示例和 java 示例,描述部门业务系统如何进行接收市场主体信息推送信息。4.3.2. C#如何进行接收市场监管信息推送信息(3) 新建 HTTP 请求接收处理程序,如下图所示: