浙里办上架流程文档详细教程

Posted 林中静月下仙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浙里办上架流程文档详细教程相关的知识,希望对你有一定的参考价值。

简介

浙里办是一款基于浙江政务服务网一体化平台能力的APP。2021年8月,“浙里办”APP上线为长三角居民服务的“一卡通”专区。浙里办”囊括“掌上办事”、“掌上咨询”、“掌上投诉”三大核心功能板块,以及查缴社保、提取公积金、交通违法处理和缴罚、缴学费等数百项便民服务应用。

浙里办”APP也已推出公共支付、生育登记、诊疗挂号、社保证明打印、公积金提取、交通违法处理等17个类别、300余项便民应用,提供省级掌上办事168项、市级平均452项、县级平均371项。

* 官方地址—请记住这里

  1. “浙里办”服务接入相关技术规范
  2. “浙里办”及浙江政务服务网服务上架申请单
  3. “浙里办”应用开发管理平台
  4. 浙里办上架规范:《“浙里办”H5微应用上架审核规范》
  5. 浙里办H5应用技术文档
  6. 政府服务部门账号: 《政府组织易和账号》
  7. 政务中台-应用开发管理平台
  8. 政务中台-应用开发管理平台账号获取:《政府组织易和账号》
  9. 浙江政务服务网统一用户体系对接: 《用户认证体系对接申请流程》
  10. IRS应用开发子系统
  11. 浙里办上架审核资料附件密码:xas7
  12. 浙里办-IRS应用发布问题说明

钉钉技术对接群

1群:31376954
2群:34340559
3群31419900

上架流程

一、申请账号

需要对接浙里办个人信息则使用个人,对接法人则使用法人账号

  • 看一下官方地址-6,政务中台使用政府组织易和账号登录新建发布应用,需要易和账号按流程申请下来,用到的有三个信息,一个是政府组织机构名,一个是账户,一个是密码
  • 个人信息直接登录浙里办应用即可使用

  • 法人账号信息需要企业可以登录到浙里办app的最佳

二、申请应用

1.先使用申请到的政府易和账号登录政务中台官方地址-3;选择对应的政府组织机构,输入申请到的账户密码

登录后大概是这个样子的

下一步新建应用:

 

下一步填写应用研发信息: 是否同时创建服务端系统: 否!!!

下一步预览一下基本应用就创建好了,这里基本就用到部署发布、配置操作

 

点击配置获取 appid 和appkey

四、开发应用

如果不需要对接用户信息,直接开发H5应用就ok,如果需要对接用户信息个人和法人;请往下看:

点击官方地址-9,按流程申请对接用户信息组建,申请通过之后会有接入码以及对接资料(个人有,法人天谷会拉钉钉群)发送到邮箱,接入码获取到,后端人员如需要个人用户/政府用户对接(杭州易和互联软件技术有限公司):俞锦涛;法人用户对接(杭州天谷信息科技有限公司):杨佳炜/昆极-张东辉;

后端人员对接用户信息的一部分关键代码:

工具类

  • 工具类:
public class ZlbLoginUtil 

	
	private static String servicecode = "";//接入码
	private static String servicepwd = "";//接入密码
	private static String datatype = "json";
	
	public static JSONObject getZlbUserInfo(String ticket) throws Exception 
		JSONObject jsonObject = ticketValidation(ticket);
		if(jsonObject!=null&&"0".equals(jsonObject.getString("result")))
			jsonObject = getUserInfo(jsonObject.getString("token"));
		
		return jsonObject;		
	
	
	public static JSONObject ticketValidation(String ticket) throws Exception 
		JSONObject jsonObject = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		String time = sdf.format(new Date());
		String sign = Md5Utils.getMd5(servicecode+servicepwd+time);
		String url = "https://appapi.zjzwfw.gov.cn/sso/servlet/simpleauth";
		String content = "method=ticketValidation";
		content += "&servicecode="+servicecode;
		content += "&time="+time;
		content += "&sign="+sign;
		content += "&st="+ticket;
		content += "&datatype="+datatype;
		jsonObject = sendGet(url,content);
		return jsonObject;	
	
	
	public static JSONObject getUserInfo(String token) throws Exception 
		JSONObject jsonObject = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		String time = sdf.format(new Date());
		String sign = Md5Utils.getMd5(servicecode+servicepwd+time);
		String url = "https://appapi.zjzwfw.gov.cn/sso/servlet/simpleauth";
		String content = "method=getUserInfo";
		content += "&servicecode="+servicecode;
		content += "&time="+time;
		content += "&sign="+sign;
		content += "&datatype="+datatype;
		content += "&token="+token;
		jsonObject = sendGet(url,content);
		return jsonObject;	
	

	public static JSONObject sendGet(String urlstr,String content) 
    	String result = "";
    	JSONObject jsonObject = null;
    	try
    		String urlName = urlstr + "?"+content;
    		URL U = new URL(urlName);
    		URLConnection connection = U.openConnection();
    		connection.setRequestProperty("Content-Type","application/json");
			System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
			System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
    		connection.connect();
    		BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
    		String line;
    		while ((line = in.readLine())!= null) 
    			result += line;
    		
    		jsonObject = JSON.parseObject(result.toString());
    		in.close();   
    	catch(Exception e)
    		e.printStackTrace();
    	
    	return jsonObject;
    
	
	public static JSONObject sendPost(String urlstr,String content)
		JSONObject jsonObject = null;
		try 
			URL url = new URL(urlstr);
			HttpURLConnection http = (HttpURLConnection) url.openConnection();
			http.setRequestMethod("POST");
			http.setRequestProperty("Content-Type","application/json");
			http.setDoOutput(true);
			http.setDoInput(true);
			System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
			System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
			http.connect();
			OutputStream os = http.getOutputStream();
			os.write(content.getBytes("UTF-8"));// 传入参数
			os.flush();
			os.close();
			StringBuilder sb = new StringBuilder();
			BufferedReader reader = new BufferedReader(new InputStreamReader(http.getInputStream(),"utf-8"));      
			String line = null; 
	        while ((line = reader.readLine()) != null)       
	        	sb.append(line);      
	        
	        jsonObject = JSON.parseObject(sb.toString());
	        sb.setLength(0);
		 catch (Exception e) 
			e.printStackTrace();
		
		return jsonObject;
	

  • 个人部分:
        try 
            String ticket = req.getParameter("ticket");//ticket 票据
            String sp = req.getParameter("sp");
            if(StringUtils.isNotEmpty(ticket))
                //获取浙里办用户信息
                JSONObject jsonObject = ZlbLoginUtil.getZlbUserInfo(ticket);
//                System.out.println("获取浙里办用户信息:"+jsonObject.toString());
   
                else
                    return ResultVoUtil.error("获取用户信息失败,错误码:"+jsonObject.get("result")+",错误信息:"+jsonObject.get("errmsg"));
                
            else
                return ResultVoUtil.error("校验信息丢失");
            
         catch (Exception e) 
            e.printStackTrace();
            return ResultVoUtil.error("失败");
        

  • 法人部分:
        // 跳转Url
        String redirectUrl = "";
        // 从Request请求的参数中获取ssotoken
        String ssotoken = request.getParameter("ssotoken");
        System.out.println("ssotoken = " + ssotoken);

        // 取具体办事事项地址(若此项有值,成功登录后请跳转此地址到具体事项,否则跳转系统首页)
        String sp = request.getQueryString();
        JSONObject jsonObj=new JSONObject();
        if (null != sp && !sp.trim().equals("")) 
            // 清理事项地址前的“goto=”标识
            sp = sp.substring(5);
            System.out.println("具体业务办理地址: " + sp);
            response.sendRedirect(gotoUrl);
        

        // 验证令牌并获取用户的登录信息
         jsonObj = doQuery(ssotoken, projectId, projectSecret);
        int errCode = jsonObj.getInt("errCode");
        // errCode = 0 表示认证成功
        if (0 == errCode) 
            // 验证成功
            String info = jsonObj.getString("info");
            System.out.println("验证令牌并获取用户的登录信息接口返回数据:" + info);

            JSONObject legalInfo = JSONObject.fromObject(info);
            
            // 企业名称
            String companyName = legalInfo.get("CompanyName").toString();
            if (null != companyName) 
                System.out.println("企业名称 = " + companyName);
            

    
         else 
            // 验证失败,跳转登录失败的页面
            return ResultVoUtil.error("验证失败");
        


后端人员本地开发完毕,需要把个人和法人的地址提供给个人用户对接人和法人用户对接人;

前端人员对接用户信息的一部分关键代码:

//常规适老版本切换
ZWJSBridge.getUiStyle().then((result) => 
        console.log(result, "判断是常规,还是适老版本");
        getApp().globalData.condition = result.uiStyle;
        if (result.uiStyle == 'normal') 
          getApp().globalData.font = "0.7rem";
         else 
          getApp().globalData.font = "0.9rem";
        

      ).catch((error) => 
        console.log(error, "错误信息");
      );
      
//个人和法人用户免登录
ZWJSBridge.getUserType()
          .then(result => 
            console.log(result, '用户信息');
            //法人
            if (result.userType == 2) 
              window.location.replace(
                'https://esso.zjzwfw.gov.cn/opensso/spsaehandler/metaAlias/sp?spappurl=https://qiantang.llis.cc/qt_nj_api/external/login/legal/zlb'
              );
             else 
            //个人
              window.location.replace('https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=zsnj');
            
          )
          .catch(error => 
            console.log(error);
);
 

//判断浙里办支付宝入口
  if(支付宝浙里办小程序入口)
  windows.location.replace("https://puser.zjzwfw.gov.cn/sso/alipay.do?action=ssoLogin&servicecode=【接入代码】&goto=【附带跳转地址,以sp参数返回】")  
  else //同源APP入口(含浙里办APP 及 其他 同源适配APP容器环境)
  windows.location.replace("https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=【接入代码】&goto=【附带跳转地址,以sp参数返回】")
  

登录获取用户信息的整体流程为:

五、部署联调

应用需要先发布到政务中台,才可以进行具体的应用免登,用户登录信息对接;

点击直接上线后,会生成一个访问地址,后台携带用户信息重定向到应用链接即可

六、准备上架资料

1.开发完毕应用程序后需要准备上线申请单

**“浙里办”上架申请单

2.同时需要准备小程序上线的一系列资料-

上架资料模板去官方地址-11下载

  • [ ] 1.“浙里办”同源发布应用上线申请报告
  • [ ] 2.图标.png
  • [ ] 3.安卓苹果两端浙里办支付宝自测录屏(总共4个)
  • [ ] 4.1浙里办APP应用测试二维码.png
  • [ ] 4.2支付宝-浙里办小程序应用测试二维码.png
  • [ ] 5.应用上架的业务功能说明(必需提供).docx
  • [ ] 6.浙里办三方应用上架运维材料.docx
  • [ ] 7.H5应用程序包.zip
  • [ ] 8.掌上农机应用安全测试报告.docx
  • [ ] 9.”浙里办“服务适老化适配完成申请报告.xlsx
  • [ ] 10.[压测报告]钱塘农机浙里办.pdf

七、提交上架

PC端宜搭浙里办上架地址:联系申请到的政府组织易和账号实际所属人,扫码登录;

统一登录中心

使用序列 六、1. 填写上线申请单,六、2. 补充资料附件最后提交即可,审核期间每个环节都会有相关人员进行相应的审批

注意:请及时关注审批流程中每个环节的反馈,每个环节反馈(需要整改)的整改时长不得超过2个工作日,否则流程将予以拒绝!

直到最后一位应用上架负责人审批通过,即算上架浙里办成功

选择相对应的地区下面可以看到已经上架成功的小程序:

八、应用消失

官方回复:

1.政务中台-应用开发管理平台 如突发应用不可见,请联系应用业主单位确认是否通过 存量关联 至 IRS系统

1.1.如是IRS关联,在关联后 开发商通过 IRS-开发商工作台 进行操作。

1.2.如非IRS关联产生的应用不可见问题,请及时提交浙江省政务工单,可将 appid、应用名称、业主单位老师提交的浙里办上架申请详情url(宜搭) 填写在浙江省政务工单,工单编号发技术支持 协助您推进排查。 上架申请,可由提交申请老师 通过此链路查询 https://login-pro.ding.zj.gov.cn/ssoLogin.htm?APP_NAME=tianshu-zwdd&BACK_URL=https%3A%2F%2Fyida-pro.ding.zj.gov.cn%2FtaskCenter.html#/notifyme?_k=iw6vor

简单的说:

基本就是应用被迁移到了IRS-开发商工作台:官方地址-10,使用方法和政务中台一样

九、IRS 应用升级

详情看官方地址-12

If there is any help, please contact me at any time—XINGYULIN

以上是关于浙里办上架流程文档详细教程的主要内容,如果未能解决你的问题,请参考以下文章

浙里办APP的系统架构分析

使用vue框架搭建浙里办微应用(单点登录、埋点、适老化、RPC网关)

浙里办 - “我的票据”闪退怎么办?

2018最新苹果APP上架App Store流程(超详细)

2022最新整理iOS app上架app详细教程

通过伪代码结合理论模拟pc端接入单点登录(Oauth2浙里办)