“i厦门”平台系统接入及入驻规范V1.11.docx
ICS35.240CCSL7711B3502福建省厦门市地方标准DB3502/TXXXX-XXXXtti厦门”平台系统接入及入驻规范SystemaccessandsettlingspecificationsforiXiamenplatform(征求意见稿)在提交反馈意见时,请将您知道的相关专利连同支持性文件一并附上。2023-XX-XX发布2023-XX-XX实施厦门市市场监督管理局发布目次前言II1范围12规范性引用文件13术语和定义14缩略语15接入原则16接入流程27接入接口规范48接入安全要求269接入运维要求2710接入界面要求27附录A(资料性)授权函32附录B(资料性)界面设计样式33,1z.*刖百本文件按照GB/T1.1-2020标准化工作导则第1部分:标准化文件的结构和起草规则的规定起草。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。本文件由提出。本文件由归口。本文件起草单位:本文件主要起草人:“i厦门”平台系统接入及入驻规范1范围本文件规定了厦门”平台系统接入及入驻的接入原则、接入流程、接入接口规范、接入安全要求、接入运维要求及接入界面要求。本文件适用于厦门市政府部门、厦门市行政事业单位和公共服务企业的服务应用在“i厦门”平台系统上的接入及入驻工作。2规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T222392019信息安全技术网络安全等级保护基本要求GB/T352732020信息安全技术个人信息安全规范3术语和定义下列术语和定义适用于本文件。a1"i厦门"平台XiaMenplatform为市民和企业提供权威综合公共服务和便民服务的统一入口,整合各类分散应用,提供政务、生活、健康、教育、文化、交通、社保等多领域在线服务,构建市民、企业和政府互联互通体系,“一云多端”一站式便民利企的服务平台。4缩略语下列缩略语适用于本文件。APP:移动端应用程序(Application)H5:第五版标准通用标记语言(HyperTextMarkupLanguageV5.0)JS:开发互联网页面的脚本语言(JavaScript)Json:基于JaVaSCriPt语法子集的开放标准数据交换格式(JavaScriptObjectNotation)PC:个人电脑(PerSOnalComputer)SDK:软件开发工具包(SOftWareDevelopmentKit)5接入原则耳1统一接入流程接入服务应按照统一的接入流程进行接入、开发与发布。55统一接口规范接入服务应按照统一的接口规范与“i厦门”平台进行数据交互和服务能力开发。K1统一安全要求接入服务应符合“i度门”平台统一的安全要求,保障服务应用及数据安全。KA统一运维要求接入服务应符合“i厦门”平台统一的运维要求,保障服务应用的稳定性及可用性。弓A统一界面风格接入服务应符合“i厘门”平台统一的界面设计要求,实现界面风格统一、用户交互体验一致。6接入流程A1接入总体流程“i厘门”平台接入流程分为接入申请、应用创建、应用开发、应用发布、应用变更、应用撤销六个步骤,具体见图1。图1“i厦门”平台接入总体流程A0接入申请6.2.1提交申请接入单位应填写授权函见附录A,向“i厘门”平台运营方发起邮件申请。6.2.2分配账号“i厦门”平台运营方审核通过后,接入单位会收到账号分配邮件,账号分配邮件内容包含“ill门”接入平台地址、登录账号及登录密码。A3应用创建6.3.1创建系统接入单位收到分配账号邮件后,可登录接入“i厦门”平台填写系统信息、承建单位信息、系统保护评定评级后创建系统。6.3.2创建应用接入单位填写应用基本信息、测试环境信息、正式环境信息、承建单位信息,创建应用后可获取应用联调参数。A4应用开发6.4.1功能开发接入单位依据“授权函”业务内容对应用进行开发。6.4.2测试联调接入单位在开发过程中,使用平台提供的服务能力,应指定专人与“i厦门”平台进行开发对接与测试联调。A弓应用发布6.5.1测试版发布测试版发布应遵循以下流程: 上传测试版程序包,生成版本记录; 生成测试二维码,扫码进行测试; 测试通过后,生成正式环境密钥。6.5.2正式发布服务应用正式发布前应提交审核,需进行以下操作:一角认发布的版本号、版本更新说明、应用类型、首页地址和单点登录地址;上传“测试报告”和“操作手册”;选择是否审核通过后立即上线。若“是”,则审核通过后生产版本立即切换,若“否”,则审核通过后可通过版本管理页面,设置版本上线时间;提交正式版本审核。提交审核后,等待运营方对服务版本进行审核,审核结果将同步推送通知给接入单位;接入单位可在审核记录中查看提交审核版本与审核情况。AA应用变更6.6.1应用变更接入单位根据实际需求对应用进行变更,应用变更应填写更新内容,且应再次进行测试版本发布。6. 6.2测试版发布应用变更测试版发布应遵循以下流程:上传变更后的测试版程序包,生成版本记录;生成测试二维码,扫码进行测试。6.6.3正式发布应用变更正式发布前应提交审核,需进行以下操作:确认发布的版本号、版本更新说明、应用类型、首页地址和单点登录地址;上传变更后版本“测试报告”与变更后版本“操作手册”;选择是否审核通过后立即上线。若“是”,则审核通过后生产版本立即切换,若“否”,则审核通过后可通过版本管理页面,设置版本上线时间;一提交正式版本审核。提交审核后,等待运营方对服务版本进行审核,审核结果将同步推送通知给接入单位;一接入单位可在审核记录中查看提交审核版本与审核情况。61应用撤销6. 7.1撤销申请服务应用需暂停或终止的,应至少提前5个工作日向“ill门”平台建设单位报备。平台建设单位在收到申请后5个工作日内完成审核,审核通过后通知平台运营单位办理服务暂停或下线。7. 7.2正式下线需暂停或终止的服务应用,应由平台运营单位提前10个工作日通过“i厦门”平台统一发布公告。7接入接口规范8. 1单点登录7.1,1第三方应用接入流程第三方系统接入流程见图2。图2第三方系统接入流程图7.1.2推送式单点登录接口7.1,2.1获取授权码获取授权码接口说明见表1。用户允许授权后,将会重定向到redirecl_uri的网址上,并附带COde参数,返回结果参数见表2。表1推送式单点登录获取授权码接口说明前端发起请求,获取授权码请求URL认证服务器地址oauthauthorize请求方式GET参数名必选类型说明参数名client-id是string第三方系统唯一标识responsetype是string固定值=COdegrant_type是string固定值=authorization_codescope是string固定值=SnSaPi_baseredirect_uri是string授权后重定向的回调链接地址,此参数需放在后面注:将参数组装拼接在请求URL后。示例:redirect_uri?Code=CoDE&state=STATE表2推送式单点登录获取授权码返回参数参数名类型说明codestring授权码,用于后台获取调用凭证(access_token)7.1,2.2获取调用凭证获取调用凭证接口说明见表3,返回结果参数见表4,表4中接口作用域(SCoPe)的可调用接口列表见表5。表3推送式单点登录获取调用凭证接口说明采用0Auth2.0的授权码模式,根据授权码获取调用凭证(access_token)请求URL认证服务器地址oauthIoken请求方式POST参数名必选类型说明code是string填写第一步获取的Code参数client_id是string第三方系统唯一标识clientsecret是string第三方系统密钥grant_type是string填authorization_coderedirect_uri是string回调地址,必须与上一步一致注:参数组装在请求URL上,如:请求URL?Code=XXX&client_id=XXXo表4推送式单点登录获取调用凭证接口返回参数参数名类型说明access.tokenstring接口调用凭证refresh_tokenstring用户刷新access_tokenexpires_instringaccess_token接II调用凭证超时时间,单位(秒)scopestring用户授权的作用域,使用逗号(,)分隔rolesstring角色(ROLE_USER,RaE.CLIENT)UserNamestring用户名useridstring用户id(userid)表5接口作用域可调用接口列表授权作用域获取用户资源接口说明snsapi_base/resource/user/base只包括用户id,用户名snsapi_baseinforesourceuserbaseinfo用户基本信息SnSaPi_userinfo/resource/user/userinfo用户基本信息和敏感信息(身份证,认证资料,资料库等)示例:“access.token”:*ACCESS_TOKEN",*token_typew:”bearer”,*refresh_token*:"REFRESHjOKEN",*expires-in*:604799,*scope*:“snsapi_base”,*roles*:"authority”:*ROLE.USER*,"userName":"18859959795”,"userid":"0854579e9cea4be98c6122c9f0671135”,"jti":"1578a3e2-26a4-4252-8a54-0c44a7447763w)7.1.2.3获取用户信息获取用户信息接口说明见表6。表6获取用户信息接口说明获取用户信息,根据第一步获取授权码的参数scope,调用对应的获取用户接口请求URL资源服务器地址/resource/user/base请求方式POST参数名必选类型说明access,Oken是string调用凭证注:参数组装在请求URL上,如:请求URL?access_token=XXX示例:"status":1,请求状态1成功0失败"code”:0,异常码"content”:请求结果"id":",/用户标识"nickname":用户呢称"photoUri”:null,/用户头像"phone":用户账号"gender”:1,用户性别"name":用户真实姓名"telephone":用户联系号码"email":用户邮箱"userType”:1,用户类型"authType”:1,认证类型"userTypeEn":"CitiZerr,用户类型英文"authTypeEn":"PASSED_BASICREALNAME",认证类型英文"userAuth”:用户认证信息"realName":姓名"cardld":身份证号码*cardType*:1,身份证类型"cardTypeCn":"大陆身份证","status":2/认证状态I3enterAuth:nullI,"message”:null异常信息)7.1.3SDK方式单点登录7.1,3.1获取调用凭证获取调用凭证接口说明见表7,返回结果参数见表8。表7SDK方式单点登录获取调用凭证接口说明采用0auth2.0的客户端模式获取accessOkCn请求URL认证服务器地址oauthtoken请求方式POST参数名必选类型说明granJtype是string填Client.credentialsscope是string填clientbaseinfoclient_id是string第三方系统唯标识client_secret是string第三方系统密钥注:参数组装在请求URL上,如:请求URL?scope=XXX&client_id=XXX.表8SDK方式单点登录获取调用凭证返回参数参数名类型说明access_tokenstring接口调用凭证token_typestring接口调用凭证类型expires_instringaccess-token接口调用凭证超时时间,单位(秒)scopestring用户授权的作用域,使用逗号(,)分隔注:客户端模式获取的accesstoken只能调用客户端特有的功能示例:("access.token”:*ACCESS_TOKEN*,*tokentype*:“bearer”,*expiresin*:604799,*scope*:*clientbaseinfo*,"jti”:*24fl0f91-49b0-46e9-95fc-e07el2b89895*I7.1.3.2获取用户信息获取用户信息接口说明见表9。表9SDK方式单点登录获取用户信息说明根据APP的ToKEN获取用户信息请求URL资源服务器地址/resource/CIient/user/getUserByToken?accesstoken=XXX请求方式POST参数名必选类型说明token是string客户端APP的TOKEN,APP打开第三放SDK时以参数的形式传进SDK示例:“status”:1,"code”:0,*content*:,用户信息*message*:null)7)移动端开放能力接入7.2.1开放能力接入流程“i厦门”移动端开放能力流程见图3,目前系统支持iOS、AndrOid和HarmonyOS,其中HarmonyoS系统接口兼容AndrOid系统接口,因此鸿蒙系统调用方法名与参数与安卓方法基本一致。图3“i厦门”移动端开放能力流程7.2.2APP与H5交互接口7.2.2.1获取与设置7.2.2.1.1获取设备id用于获取APP设备id。其中:Android/HarmonyOS方法:android.getDeviceld();iOS方法:innoPlus,device,uuido7.2.2.1.2获取APP系统类型判断在APP嵌在AndrOid、iOS内,分别判断android、harmony和innoPlus对象是否存在。其中:AndrOid方法:typeof(android)!="undefined”;HarmonyOS方法:typeof(harmony)!="undefined”;IOS方法:typeof(innoPlus)!="undefined”。7.2.2.1.3获取APP名称用于判断是否是在市民云环境,方法返回字符串CitiZeneIoud。其中:Android/HarmonyOS方法:android.getppName0;iOS方法:innoPlus,device,appname<>7.2.2.1.4获取APP基础参数用于获APP基础参数。返回结果见示例。其中:Android/HarmonyOS方法:android,getBaseParanis();iOS方法:innoPlus.baseParamo示例:appTd:w,Siteld:SiteAreaCode:t0,7.2.2.1.5设置APP头部标题用于设置APP标题栏的标题。其中:Android/HarmonyOS方法:android.setTitle(title);iOS方法:innoPlus,native.setTitle(title)。7.2.2.2控制类操作7.2.2.2.1打开APP页面用于跳转到APP内部页面。其中:Android/HarmonyOS方法:android.openWindow(path);iOS方法:innoPlus,native.OpenWindow(path)。7.2.2.2.2后退用于调用APP后退方法。其中:Android/HarmonyOS方法:android,back();iOS方法:innoPlus,native,back()。7.2.2.2.3关闭用于调用APP关闭Webview窗口的方法。其中:Android/HarmonyOS方法:android,close();iOS方法:innoPlus,native,close()。7.2.2.2.4隐藏头部用于隐藏APP头部(标题栏)。其中:一Android/HarmonyOS方法:android.hideHeader();IOS方法:innoPlus,native.HideNavbarO。7.2.2.3登录与认证7.2.2.3.1打开登录页用于跳转到APP内部页面。其中:Android/HarmonyOS方法:android.openLogin();iOS方法:innoPlus,native.OpenLoginPageO。7.2.2.3.2根据身份证信息进行人脸认证用于调用APP人脸认证,传入json字符串(jsonStr)。安卓设备,应在全局对象WindOW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:AndrOid/HarmonyOS方法:android.faceAuthWithRegister(*functionNamezz,jsonStr);iOS方法:innoPlus,native.faceAuthWithRegister(callback,jsonStr)。示例1:cardId:"3505.X",name:"张三”示例2:安卓设备window,functionName=function(data)android.faceAuthWithRcgisterCfunctionName*,jsonStr)示例3:iOS设备varcallback=function(data)innoPlus,native.faceAuthWithRegister(cal!back,jsonStr)7.2.2.3.3调用APP人脸认证页面(是否高级认证)用于调用APP人脸认证,传入json字符串(jsonStr)。安卓设备,应在全局对象WindoW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:AndrOid/HarmonyOS方法:android,faceAuthWithAEO(z,functionNamez,jsonStr);iOS方法:innoPlus,native.faceAuthWithAEO(callback,jsonStr)<>示例1:isAEO:"true"I"false”示例2:安卓设备window,functionName=function(data)android.faceAuthWithAEO(*functionName*,jsonStr)示例3:iOS设备varcallback=function(datainnoPlus,native.FaceAuthWithAEO(cal!back,jsonStr)7.2.2.3.4APP登录回调用于调用APP登录后回调获取用户信息以及处理登录后续操作。安卓设备,应在全局对象WindOW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.APPLoginWithCa11back(functionName,z);iOS方法:innoPlus,native.APPLoginWithCalIback(callback)。示例1:安卓设备window.FunctionName=function(data)android.APPLoginWithCalIback(rtfunctionNamew)示例2:iOS设备varcallback=Function(data)innoPlus,native.APPLoginWithCalIback(callback)7.2.2.4功能类操作7.2.2.4.1选择代理企业列表用于选取代理企业列表。安卓设备,应在全局对象WindoW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.SelectAgentEnterprise(,zfunctionNamez,);iOS方法:innoPlus,native.SelectAgentEnterprise(Callback)。示例1:安卓设备window,functionName=function(data)android.selectAddress("functionName")示例2:iOS设备varcallback=function(data)innoPlus,native.SelectAddress(cal!back)7.2.2.4.2硼APP地址选择用于调用APP地址选择控件,获取地址。安卓设备,应在全局对象window下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.SeleCtAddreSS("functionName");iOS方法:innoPlus,native.selectddress(callback)o示例1:安卓设备window.FunctionName=function(data)android,seIectAddress(*fUnctionNamev)示例2:iOS设备varcallback=function(data)innoPlus,native.SelectAddress(cal!back)7.2.2.4.3获取当前位置信息用于获取当前位置信息。安卓设备,应在全局对象WindOW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.getLocationlnfo("functionName");iOS方法:innoPlus,native.getLocationlnfo(callback)。示例1:安卓设备window.functionName=function(data)android.getLocationinfo("functionName")示例2:iOS设备varcallback=function(data)innoPlus,native.getLocationlnfo(cal!back)7.2.2.4.4获取当前位置坐标用于获取当前位置坐标。安卓设备,应在全局对象WiIKloW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.getLocationCoordinate("functionName");iOS方法:innoPlus,native.getLocationCoordinate(callback)o示例1:安卓设备window.functionName=function(data)Android.getLocationCoordinate("functionName")示例2:iOS设备varcallback=function(data)innoPlus,native.gctLocationCoordinate(callback)7.2.2.4.5调用导航用于调用APP导航,传递json字符串。其中:Android/HarmonyOS方法:android,navigation(JSON.Stringify(obj);iOS方法:innoPlus.map.nav(JSON.Stringify(obj)o示例:varobj=("starting":"起点经度”,"starlLat":"起点纬度”,"ending":"终点经度”,"endLat":"终点纬度”7.2.2.4.6APP搜索地址页用于调用APP搜索地址的页面,可传入建筑物名称,勾选对应的地址,选择后回调返回地址信息。安卓设备,应在全局对象WindoW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.SelectLocalAddress("functionName");iOS方法:innoPlus,native.SelectLocalAdclress(name,callback)o示例1:安卓设备window.functionName=function(data)android.SelectLocalAddress("functionName")示例2:iOS设备varcallback=function(datainnoPlus,native.SelectLocalAddress(name,callback)7.2.2.4.7复制文本用于复制文本。其中:Android/HarmonyOS方法:android.copyToClipboard(str);iOS方法:innoPlus,native,paste(str)。7.2.2.4.8拨打电话安卓系统通过调用原生方法传入电话,实现拨打电话,iOS系统通过h5的a标签实现。其中:Android/HarmonyOS方法:android.OpenDial(phoneNumber);iOS方法:<ahref=z,tekllOzz><a>o7.2.2.5图文操作7.2.2.5.1APP扫码功能调用APP端扫码功能。其中:ndroid/HarmonyOS方法:调用android.OpenScanningO:iOS方法:innoPlus,native.OpenScanningO。7.2.2.5.2APP扫码功能(异步返回扫码信息)用于获取扫描二维码信息。安卓设备,应在全局对象WindOW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.OpenScanningWithBlock(z,fUnctionNamez,);iOS方法:innoPlus,native.OpenScanningWithBlock(callback)。示例1:返回参数格式(“result”:result,"content”:content示例2:安卓设备window,functionName=function(data)android.OpenScanningWithBlock("functionName")示例3:iOS设备varcallback=function(data)innoPlus,native.openScannIngWithBlock(ca11back)7.2.2.5.3APP图片预览调用APP端图片预览功能。其中:一Android/HarmonyOS方法:android.photoBroswer(JSON.Stringify(obj);iOS方法:innoPlus,native.photoBroswer(JSON.Stringify(obj)。示例:json文件格式varobj=index:0,当前显示的图片pictures:“imgSrc","imgSrc2”图片路径数组7.2.2.5.4预览PDF文档用于预览PDF文档。传入文档名称,文档的路径,iOS方法传递的参数为对象的字符串。其中:AndrOid/HarmonyOS方法:android.openPDF(fiIeName,fileUrl);iOS方法:innoPlus,native.previewPDF(JSON.Stringify(params)。示例:varparams=fiIeName:fiIeName,fileUrl:fileUrl;JSON.Stringify(params)7.2.2.6材料操作7.2.2.6.1选择材料用于选取材料附件。安卓设备,应在全局对象WindoW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.SelectMalerialCfunctionName”,MAX_SIZE);iOS方法:innoPlus.native.SelectMaterial(callback,MAXSIZE)o注:MAX_SIZE为可选材料大小,最大限制单位为byte,目前限制为MAX_SIZE="4194304"。示例1:安卓设备window,functionName=function(data)android.SelectMateriaKrtFunctionNamew)示例2:iOS设备varcallback=function(data)innoPlus,native.SelectMaterial(callback)7.2.2.6.2生成材料用于选取生成材料。安卓设备,应在全局对象WindoW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android,generatefaterial("functionName”,MAXSIZE);iOS方法:innoPlus,native.generateMaterial(callback,MAXSIZE)。注:MAX_SIZE为可选材料大小,最大限制单位为byte,目前限制为MAX_SIZE=*4194304*.示例1:安卓设备window.functionName=function(data)android.generateMaterial(FunctionNamew)示例2:iOS设备varcallback=function(data)innoPlus,native.generateMaterial(callback)7.2.2.6.3生成材料(自定义材料名)用于选取生成材料,可自定义材料名。安卓设备,应在全局对象WindoW下注册一个方法,将方法名作为参数传递给安卓提供的方法。iOS设备,将js函数传递给方法,,js函数需设置一个参数来接收传递的地址数据。其中:Android/HarmonyOS方法:android.CreateMaterial("functionName”,MAXSIZE);iOS方法:innoPlus.native,createfaterial(callback,MAXSIZE)o注:NfAXSIZE为可选材料大小,最大限制单位为byte,目前限制为MAX_SlZE="4194304"。示例1:安卓设备window,functionName=function(data)android.CreateMaterial(rtfunctionNamew)示例2:iOS设备varcallback=function(data)innoPlus,native.CreateMaterial(callback)1. 2.3H5调用APP接口7. 2.3.1概述在需调用JS接口的页面引入JS文件:ixm-jssdk.js。8. 2,3.2设备类型在H5页面,调用APP方法,判断当前APP系统,返回设备类型H5iOSAndroid/HarmonyOS。方法名为ixm.getDeviceType()。示例:ixm.getDeviceType();/返回设备类型H5iOSAndroidHarmonyOS7.2.3.3分享接口7.2.3.3.1初始化分享描述接口初始化分享描述接口说明见表10。表10初始化分享描述接口说明入H5页面,页面右上角出现分享按钮,可分享自定义内容至微信好友,微信朋友圈。方法名ixm.ShareInitO参数名类型说明titlestring分享标题descstring