1. 3 技术规范与扩展开发

1.1. 3.1用户绑定

3.1.1推送

REST认证地址:/seeyon/rest/token/{username}/{password}

可绑定多个用户推送接口地址:/seeyon/rest/thirdpartyUserMapper/binding

单用户推送接口地址:/seeyon/rest/thirdpartyUserMapper/binding/singleUser

{"userlist": [ {"registerCode": "注册系统编码","thirdUserId": "第三方系统用户主键","thirdLoginName": "","thirdName": "","thirdCode": "","thirdMobile": "","thirdEmail": "","param0": "扩展参数或属性","param1": "扩展参数或属性","noneBindingSender":"发起人的登录名称、人员编码、邮件、手机号","noneBindingReceiver":"接收人的登录名称、人员编码、邮件、手机号" } ]}

3.1.2主动绑定

/***绑定用户主动取模式下的第三方系统接口定义*@authorzhangyong*/publicinterfaceThirdpatyUserProvider {/***需要和系统注册中编码一致**@return注册系统编码*/ String registerCode();/***实现此方法可实现批量绑定用户**@returnThirdpartyUserMapperImporter的集合*/ List<ThirdpartyUserMapperImporter> getBatchThirdpartyUsers(String...registerCode);/***实现此方法可返回第三方用户信息*@paramthirdLoginName:第三方用户登录名 ;thirdCode: 第三方用编码*@returnThirdpartyUserMapperImporter实体对象*/ ThirdpartyUserMapperImporter findSingleThirdpartyUser(StringthirdLoginName,StringthirdCode,String...registerCode);/***第三方用户账号密码验证,个人绑定第三方用户需要有安全校验,如果不需要校验可以直接返回true,但不建议这么做*@paramthirdLoginName: 第三方用户登录名; thirdPassword:第三方用户密码*@return检查通过返回true,检查不通过返回false*/booleancheckThirdpartyUserAccount(StringthirdLoginName,StringthirdPassword,String...registerCode);

3.1.3接口定义方式

接口类型 接口地址 请求内容类型 请求参数
自动匹配 自定义 application/x-www-form-urlencoded isBatch=true
新建用户匹配 自定义 application/x-www-form-urlencoded loginName/code
修改用户匹配 自定义 application/x-www-form-urlencoded loginName/code
个人用户认证匹配 自定义 application/x-www-form-urlencoded loginName/passWord

3.1.4 用户绑定数据字段列表

字段名称 描述 是否必填
thirdUserId 第三方人员主键(保证唯一) 必填
registerCode 为第三方配置的系统注册编码 必填
thirdLoginName 第三方人员登录名称,默认匹配项 必填
thirdName 第三方人员姓名 非必填
thirdCode 第三方人员编码(协同如果设置了按人员编码匹配则必填) 非必填
thirdMobile 第三方人员手机号(协同如果设置了按手机号匹配则必填) 非必填
thirdEmail 第三方人员电子邮件(协同如果设置了按邮件匹配则必填) 非必填

1.2. 3.2消息集成开发

3.2.1推送

3.2.1.1接口地址:

REST认证地址:/seeyon/rest/token/{username}/{password}

多条消息:/seeyon/rest/thirdpartyMessage/receive/messageList

单条消息:/seeyon/rest/thirdpartyMessage/receive/singleMessage

3.2.1.1/receive/messageList的json格式如下:

{"messages": [ {"thirdpartyRegisterCode": "注册系统编码","thirdpartyMessageId": "第三方系统消息主键","messageContent": "消息内容","thirdpartySenderId": "第三方系统发送者主键","thirdpartyReceiverId": "第三方系统接收人主键","creation_date": "消息创建日期,格式yyyy-MM-dd HH:mm","downloadUrl": "原生app的下载地址","messageH5URL": "H5穿透地址","messageURL": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" } ]}

注:穿透地址需要完整的http/https格式

3.2.1.2/receive/messageList的json格式如下:

{"thirdpartyRegisterCode": "注册系统编码","thirdpartyMessageId": "第三方系统消息主键","messageContent": "消息内容","thirdpartySenderId": "第三方系统发送者主键","thirdpartyReceiverId": "第三方系统接收人主键","creation_date": "消息创建日期,格式yyyy-MM-dd HH:mm","downloadUrl": "原生app的下载地址","messageH5URL": "H5穿透地址","messageURL": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" }

3.2.2主动取消息

实现ThirdpartyMessagePullProvider类,会依据定时任务取外部系统消息,和注册应用一一对应

/****@ClassName: ThirdpartyMessagePullProvider*@Description:第三方消息拉取模式接口,实现后CIP会定时抓取此第三方系统做过绑定映射人的待办 **/publicabstractclassThirdpartyMessagePullProvider {/***需要和系统注册中编码一致**@return注册系统编码*/ String registerCode();/***自行实现,系统指定第三方系统人员主键列表**@return返回 MessageReceiveVo 集合*/abstractprotectedList<MessageReceiveVo> pull(List<String>thirdAccountList, StringregisterCode,String...serviceURL);

3.2.3取消息触发URL和接口:

接口类型 接口地址 请求内容类型 输入参数 内容
URL 自定义 application/json 无需配置 [绑定第三方用户主键id,......]
接口 自定义 application/json [绑定第三方用户主键id,......]

3.2.4消息数据字段列表

字段名称 描述 是否必填
thirdpartyMessageId 第三方消息主键(保证唯一) 必填
thirdpartyRegisterCode 为第三方配置的系统注册编码 必填
messageContent 消息内容 必填
thirdpartySenderId 第三方消息发起人主键(保证唯一) 非必填
thirdpartyReceiverId 第三方消息接收人主键(保证唯一) 必填
creation_date 消息创建时间(格式:yyyy-MM-dd HH:mm:ss) 必填
downloadUrl 原生应用下载地址(仅选则原生类型后提供),移动端没有安装程序跳转到此地址 非必填
messageURL PC端穿透链接 非必填
messageH5URL 移动端穿透链接 非必填
appParam 原生应用穿透命令,穿透命令需要按这个顺序:iphone\ ipad\ android\ wp,其中用户登录名称由v5提供则可代替{$userName$},如果外部系统需要验证v5登录状态,可使用{$token$}标识 非必填

3.2.5消息单点登录

【穿透认证】无认证、V5auth认证、第三方认证。

【V5auth认证】如果是移动URL接入,如果是v5auth认证在PC和移动端穿透时都会带上第三方系统的URL?v5ticket=***;

l外部系统回调v5人员状态,如:http://v5地址+port/seeyon/login/sso?from=m3token&token=ticket

【无认证】完全依据第三方链接穿透,无单点登录认证过程。

【第三方认证】需要配置认证接口(接口应用类型为认证接口),自定义认证参数名称。

1.3. 3.3待办集成开发

3.3.1 接口地址:

REST认证地址:/seeyon/rest/token/{username}/{password}

单条待办:/seeyon/rest/thirdpartyPending/receive

多条待办:/seeyon/rest/thirdpartyPending/receive/pendings

更新待办状态:/seeyon/rest/thirdpartyPending/updatePendingState

3.3.2 receive/pendings的json格式:

{"pendingList": [ {"registerCode": "注册系统编码","taskId": "第三方系统待办主键","title": "待办标题","senderName": "待办发起人姓名","classify": "类别","contentType": "内容类型","state": "状态0待办,1已办","thirdSenderId": "第三方系统发送者主键","thirdReceiverId": "第三方系统接收人主键","creationDate": "待办发起日期,格式yyyy-MM-dd HH:mm","content": "原生app的下载地址","h5url": "H5穿透地址","url": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" } ]}

3.3.3 receive的json格式:

{"registerCode": "注册系统编码","taskId": "第三方系统待办主键","title": "待办标题","senderName": "待办发起人姓名","classify": "类别","contentType": "内容类型","state": "状态0待办,1已办","thirdSenderId": "第三方系统发送者主键","thirdReceiverId": "第三方系统接收人主键","creationDate": "待办发起日期,格式yyyy-MM-dd HH:mm","content": "原生app的下载地址","h5url": "H5穿透地址","url": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" }

3.3.4主动取待办

实现ThirdpartyPendingPullProvider类,会依据定时任务取外部系统待办,和注册应用一一对应

/***第三方待办拉取模式接口,实现后CIP会定时抓取此第三方系统做过绑定映射人的待办*@authorzhangyong*/publicabstractclassThirdpartyPendingPullProvider {/***需要和系统注册中编码一致**@return注册系统编码*/ String registerCode();/***自行实现,系统指定第三方系统人员主键列表**@param第三方用户账号列表*@return返回ThirdPendingVO 集合*/abstractprotectedList<ThirdPendingVO> pull(List<String>thirdAccountList,StringregisterCode,String...serviceURL);

取待办触发URL和接口:

接口类型 接口地址 请求内容类型 输入参数 内容
URL 自定义 application/json 无需配置 [绑定第三方用户主键id,......]
接口 自定义 application/json [绑定第三方用户主键id,......]

3.3.5待办数据字段列表

字段名称 描述 是否必填
taskId 第三方待办主键(保证唯一) 必填
registerCode 系统注册编码 必填
title 待办标题 必填
thirdSenderId 第三方待办发起人主键 非必填
senderName 第三方待办发起人姓名 必填
thirdReceiverId 第三方待办接收人主键(保证唯一) 必填
creationDate 待办创建时间(格式:yyyy-MM-dd HH:mm:ss) 必填
state 状态:0:未办理;1:已办理 必填
subState 处理后状态:0/1/2/3同意已办/不同意已办/取消/驳回 非必填
content 生应用下载地址(仅选择原生类型后提供),移动端没有安装程序跳转到此地址 非必填
url PC端穿透链接 非必填
h5url 移动端穿透链接 非必填
appParam 原生应用穿透命令,穿透命令需要按这个顺序:iphone\ ipad\ android\ wp,其中用户登录名称如是代替{$userName$},如果外部系统需要验证v5登录状态,可使用{$token$}标识 非必填

3.3.6更新待办状态

字段名称 描述 是否必填
taskId 第三方待办主键(保证唯一) 必填
registerCode 系统注册编码 必填
state 状态:0:未办理;1:已办理 必填
subState 处理后状态:0/1/2/3同意已办/不同意已办/取消/驳回 必填

3.3.7待办单点登录

【穿透认证】无认证、V5auth认证、第三方认证。

【V5auth认证】如果是移动URL接入,如果是v5auth认证在PC和移动端穿透时都会带上外部系统URL?v5ticket=***;

l外部系统回调v5人员状态,如:http://v5地址+port/seeyon/login/sso?from=m3token&token=ticket

【无认证】完全依据第三方链接穿透,无单点登录认证过程。

【第三方认证】需要配置认证接口(接口应用类型为认证接口),自定义认证参数名称。

1.4. 3.4单点登录

操作说明:目前【认证模式】分为门户认证机制、第三方认证机制、用户密码认证、第三方Token认证机制这4种。

3.4.1门户认证机制

1)流程图

2)详细说明

(一)v5获取到“SSO接口”地址会带上当前登录人员信息ticket如下,“SSO接口”+“&ticket=***”访问

(二)第三方系统获取ticket后调此地址完成握手:http://a8:80/seeyon/thirdpartyController.do?ticket=\*\*,OA返回HTTP头信息里面包括:LoginName\(协同OA或外部用户登录名称\),MemberId\(协同OA用户ID\),MemberName\(协同OA人员姓名\)M3URL\(M3代理服务器地址\),如果做了用户映射,则LoginName为第三映射的用户登录名称,MemberId和MemberName则不返回,

(三)验证此用户成功后,返回给OA字符串为SSOOK,如果失败返回SSOLogoutError字符串

(四)外部系统需要自行保存下ticket信息和第三方用户的映射信息

(五)协同OA依据接入类型获取到PC登录地址获取或H5登录地址后带上&ticket=***&from=A8&interneturl=**访问外部系统, interneturl为协同OA地址。

3.4.2第三方认证机制

/*****/publicinterfaceThirdpartyAuthenticationPortal {/***第三方系统认证page获取 ,返回自定义的参数,如aa=***&bb=***系统会自动依据PC登录地址和H5登录地址进行拼接跳转*@parammemberId*@paramloginAccountId*@return*/ String getpageUrl(longmemberId,longloginAccountId);/***注册第三方系统编码*@return*/ String registerCode();}

3.4.3用户名和密码认证

图 用户密码认证

3.4.4 第三方Token认证机制

【请求过程】认证接口或多个认证接口->页面跳转接口定义->第三方登录

图 第三方Token认证

3.4.5 以携程接入举例说明:

图 认证接口语义定义

图 输入参数

图 返回参数

图 页面跳转接口语义定义

图 页面跳转接口传入参数定义

results matching ""

    No results matching ""