第三方集成用友待办
一、对接流程
1、三方系统注册监听待办事件订阅
2、YonBIP/YonSuite发送待办事件,三方系统接收到待办事件后根据事件编码确定走不同的逻辑(新增/更新待办)。
3、事件订阅返回的新增/更新待办中的businessKey是成对出现的,也就是说根据businessKey可以判断将哪条待办数据更新为已办。
4、三方在接收道待办信息后建议将businessKey和待办动作信息存储入库,原因事件订阅方式可能会存在消费失败的情况,如果配置了重试可能会造成接收到的更新待办早于新增待办。 从而三方可能会有一条无法删除的待办记录。所以在处理逻辑的时候需要判断数据库中是否存在对应的businessKey+动作,区分多种情况。
1)、新增事件逻辑:首先判断businessKey是否在系统中存在,如果存在,直接结束执行;如果不存在, 则正常走逻辑
2)、更新事件逻辑:首先判断businessKey是否在系统中存在,如果不存在说明消息顺序反了。需要存储入库。标记为更新动作;如果存在相同更新动作的businessKey,则不需要做后续执行操作;如果存在且不是更新动作,说明是新增动作。那就需要正常处理更新逻辑;
5、确定好逻辑后,需确定发送给哪个三方用户,建议三方系统和YonBIP/YonSuite的用户编码/手机号/邮箱一致。待办信息会返回yhtUserId。可以根据 yhtUserId调用开放平台接口(详见五章节)获取用户编码/手机号/邮箱。三方系统根据用户编码/手机号/邮箱获取三方的唯一标识。然后就可以发送给指定三方用户。
6、三方用户在三方系统中点击待办开始走单点登录相关逻辑(详见六章节)
二、指定租户开通接收待办
提交工单给指定租户开通接收待办事件; 工单说明如下:
需要开通接收待办事件
租户id: ******
租户名称:******
标注是哪个数据中心
三、订阅待办事件
请点击链接查看:- 添加以下两个事件,
四、待办数据格式
businessKey是成对出现的,一个新增待办对应一个更新待办
4.1、创建代办接收数据格式
{
"msgTsLong": 1635583234094,
"resendable": true,
"omitNotify": false,
"todoType": "approve",
"srcMsgId": "20211030202110307d0f6df7-d4d6-4f0e-ad11-76f26aa8819d:ubpm20200520",
"typeName": "待办消息",
"approveSource": "PU",
"richText": "来自倪帅臣于10-30 15:48提交的采购订单CGDD0000211030000002,请处理。 ",
"title": "待办提醒",
"content": "来自倪帅臣于10-30 15:48提交的采购订单CGDD0000211030000002,请处理。 ",
"mUrl": "https://mdf-node-yonsuite.diwork.com/meta/voucher/st_purchaseorder/2496594306814208?domainKey=upu&apptype=mdf&taskFlag=todo&typecode=approve&tenantId=aen06kxy&qzId=278401&code=${esncode}&isReturnNative=true&source=PU,u8c,UIT&yssource=PU,u8c,UIT",
"yyUserIds": ["0f059088-9c92-4769-a3e7-8f1a341cc3df"],
"webUrl": "https://mdf-node-yonsuite.diwork.com/meta/voucher/st_purchaseorder/2496594306814208?domainKey=upu&bipCasTag&taskFlag=todo&typecode=approve&tenantId=aen06kxy&qzId=278401&source=PU,u8c,UIT&code=${esncode}&uSpaceOpenType=_blank",
"appId": "59bcd8c644594106bf0",
"businessKey": "51938770-395c-11ec-80f7-3e3f15ddd04c",
"tenantId": "aen06kxy",
"srcAppId": "msgplatform",
"labelCode": "bizProcessGeneralDomain"
}
4.2、结束代办接收数据格式
{
"msgTsLong": 1635583194664,
"yyUserId": "0f059088-9c92-4769-a3e7-8f1a341cc3df",
"businessKey": "51938770-395c-11ec-80f7-3e3f15ddd04c",
"srcMsgId": "20211030202110306c3f383b-7f73-469a-9eb3-6c5d2b95d222:ubpm20200520",
"tenantId": "aen06kxy",
"srcAppId": "msgplatform",
"validApp": false
}
五、根据友户通userId获取用户信息
注意接口返回的手机号/邮箱默认是加密的,参考该文档获取解密数据 点击:手机号邮箱解密
六、三方系统单点YonBIP
6.1、背景
一般情况,【客开方】收到用友待办信息后,需要再调用三方消息接口,将该待办信息发送给三方系统。 这种情况存在一个问题:生成的单点登录地址只能使用一次,发送待办信息给三方系统时一般就会直接带上该地址。 这就造成使用者如果打开后未审批,或者想再次查看都会报错。
6.2、解决方案
【客开方】发送待办信息给三方系统时不要直接发送用友待办的mUrl或者webUrl,建议【客开方】发布一个接口作为地址信息,使用者点击后, 请求【客开方】服务然后重定向到单点地址。
可参考如下格式:
示例截图
6.3、 单点实现
请点击链接操作:七、测试
最基础的调通流程,不包含复杂判断逻辑,具体逻辑建议按照一章节描述编写代码- 提交采购订单单据
- 代码接收到待办事件,示例中解析出了webUrl
- 将webUrl复制到单点测试类