租户应用授权信息同步接口
接口说明
- 管理员被授权管理某企业后,在买家中心登录,对企业内用户授权该企业已绑定的应用,云商店异步调用该接口请求商家同步该企业应用的用户授权信息,商家接口需要执行授权信息同步,保存用户授权信息,并返回通知云商店。
- 针对租户应用授权信息同步场景接口调用失败的情况,由企业管理员选择是否要继续进行同步。并用短信或邮件的形式通知ISV商家接口调用失败。
- 商家的服务器在处理接口请求时,需要做好幂等性处理。
对于同一个实例,相同的租户,相同的应用,相同的userName,要支持多次请求新增,或者删除,多次新增不应产生新的数据,且需要返回成功,如果是删除,多次删除也需要返回成功,不能因已删除返回失败,删除时不需要校验(新购商品)接口产生的实例是否存在。
租户同步流程如下图所示:
请求方法:POST
接口URL:生产地址+固定子路径,其中固定子路径为/produceAPI/authSync;
接口示例:生产地址为https://example.isv.com,则接口URL为https://example.isv.com/produceAPI/authSync
Headers请参数
参数 |
必选 |
参数类型 |
描述 |
---|---|---|---|
authToken |
M |
String(255) |
签名信息,请参考auth Token取值说明。 |
BODY请求参数
参数 |
必选 |
参数类型 |
描述 |
---|---|---|---|
instanceId |
M |
String(64) |
说明:
卖家申请应用凭证的时候传空,买家必传。 |
tenantId |
M |
String(64) |
租户ID,与租户同步的接口租户ID保持一致,这个ID是买家 |
appId |
M |
String(64) |
应用ID,与应用同步的应用ID保持一致的 |
userList |
M |
String |
授权用户信息,包含userName:账号名(M)、name:姓名(M)、position:职位(O)、orgCode:部门(M)、role:角色(user-普通用户,admin-管理员)(M)、enable:账号状态(true-启用,false-禁用)(M)、employeeCode:工号(O)、employeeType:人员类型(1:正式 2:实习 3:劳务派遣 4:劳务外包)(O)、mobile:手机号(O)、email:邮箱(O)、workPlace:工作所在地(O)、entryDate:入职时间(yyyy-MM-d)(O) JSON串,例: [{\"userName\":\"zhangsan01\",\"name\":\"张三\",\"position\":\"系统管理员\",\"orgCode\":\"123456789\",\"role\":\"admin\",\"enable\":\"true\",\"employeeCode\":\"\",\"mobile\":\"\",\"email\":\"\",\"extension\":{\"entryDate\":\"2022-11-9\",\"employeeType\":\"4\",\"workPlace\":\"南京\"}},{\"userName\":\"lisi02\",\"name\":\"李四\",\"position\":\"运营经理\",\"orgCode\":\"123456789\",\"role\":\"user\",\"enable\":\"true\",\"extension\":{\"entryDate\":\"2022-11-16\",\"employeeType\":\"4\",\"workPlace\":\"南京\"}}] ISV需要根据角色给用户进行赋权,如果admin赋予管理员角色 最大一次同步用户数是500个 |
currentSyncTime |
M |
String |
默认时区东8区,时间戳,时间格式:20220420114117642 |
flag |
M |
Integer(2) |
0-删除 1-新增 2-修改 |
testFlag |
M |
Integer(2) |
0-生产正式数据 1-调测数据 |
timeStamp |
M |
String |
默认时区东8区,时间戳,时间格式:20220420114117642 |
响应参数
参数 |
必选 |
参数类型 |
描述 |
resultCode |
M |
String(6) |
响应码,具体请参见调用结果码说明。 |
resultMsg |
O |
String(255) |
响应信息 |
示例:
POST https://example.isv.com/produceAPI/authSync Connection: keep-alive Content-Type: application/json authToken: "stbNYl*****************Ubt271qDr6WDAVLtLRb” Host: example.isv.com User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_191) { "instanceId": "huaiweitest123456", "tenantId": "68cbc86ab******92f36422fa0e", "appId": "KSID******34456", "userList": "[{ userName:\"zhangsan01\",name:\"张三\",position:\"系统管理员\",orgCode:\"123456789\",role:\"admin\" enable:\"true\"},{ userName:\"lisi\",name:\"李四\",position:\"用户\",orgCode:\"123456789\",role:\"user\" enable:\"true\"},]", " currentSyncTime": "20220413093539534", "flag": 1, "testFlag": 0, "timeStamp": "20220413093539534", } HTTP/1.1 200 OK Body-Sign: sign_type="HMAC-SHA256", signature= "xxxxxxxxxx" Content-Type: application/json { " resultCode": "000000", " resultMsg": "Success" }
HTTP Body签名:
Body-Sign: sign_type="HMAC-SHA256", signature= "xxxxxxxxxxxxx" ,详情参考《HTTP Body签名》。