admin管理员组

文章数量:1533119

2024年7月2日发(作者:)

ISV产品接入指南

目 录

1

2

3

4

5

文档目的 .......................................................................................................................... 4

ISV接入提交项 ............................................................................................................... 4

接口开发与测试环境 ....................................................................................................... 4

ISV接入工作内容 ........................................................................................................... 5

接口定义 .......................................................................................................................... 6

5.1

5.2

接口实现形式 ........................................................................................................... 6

平台提供给ISV的接口 ........................................................................................... 6

Web Service(参数为实体对象) .................................................................... 6

Web Service(参数为XML字符串) .............................................................. 6

Post方式 ............................................................................................................ 6

5.2.1

5.2.2

5.2.3

5.3 ISV需要实现的接口定义 ........................................................................................ 7

实现方式1:Web Service(参数为实体对象) .............................................. 7

实现方式2:Web Service(参数为XML字符串) ....................................... 7

实现方式3:Post方式 ..................................................................................... 7

5.3.1

5.3.2

5.3.3

5.4

5.5

ISV接口实现注意事项 ............................................................................................ 7

接口调用示例 ........................................................................................................... 9

示例:Web Service(参数为实体对象) ......................................................... 9

示例:Web Service(参数为XML字符串) ................................................ 10

示例:Post方式 .............................................................................................. 11

1 / 47

5.5.1

5.5.2

5.5.3

5.6 接口消息格式 ......................................................................................................... 14

请求消息.......................................................................................................... 14

返回消息.......................................................................................................... 16

5.6.1

5.6.2

5.7

5.8

6

消息体加密处理 ..................................................................................................... 18

消息调用返回码定义 ............................................................................................. 18

接口开发与产品改造指南 ............................................................................................. 21

6.1

6.2

6.3

接口实现过程步骤 ................................................................................................. 21

配置文件 ................................................................................................................. 21

接口实现 ................................................................................................................. 22

产品订购.......................................................................................................... 22

用户授权.......................................................................................................... 26

健康检查.......................................................................................................... 35

产品登录.......................................................................................................... 38

心跳保持.......................................................................................................... 42

数据同步.......................................................................................................... 43

客户端登录 ...................................................................................................... 43

6.3.1

6.3.2

6.3.3

6.3.4

6.3.5

6.3.6

6.3.7

7 接口测试指南 ................................................................................................................ 44

7.1 测试准备工作 ......................................................................................................... 44

基本数据准备 .................................................................................................. 44

基本数据检查 .................................................................................................. 45

7.1.1

7.1.2

7.2

7.3

7.4

加解密算法测试 ..................................................................................................... 45

开通企业客户测试 ................................................................................................. 45

企业用户授权测试 ................................................................................................. 46

集成授权测试1 ............................................................................................... 46

2 / 47

7.4.1

7.4.2

7.5

集成授权测试2 ............................................................................................... 46

产品登录测试 ......................................................................................................... 46

3 / 47

1 文档目的

本文档用于帮助ISV了解其产品接入平台时需要进行哪些工作、如何进行这些工作、

完成后如何进行测试等,ISV在开始接入工作前,请详细阅读此文档内容。

2 ISV接入提交项

类型 提交项

重要

程度

必需

描述

产品图标 用户订购时显示的产品图标

产品简介,介绍产品的宣传亮点、在技术、功

能、应用等方面的特点,以及产品能为用户在

哪些方面带来价值等

产品介绍 必需

用户手册

文档

安装手册

必需

必需

详细介绍产品的管理功能与应用功能的使用

方法,指导企业的管理员与最终用户使用系统

系统的安装部署说明文档,能让平台维护人员

参照此文档即可自行完成产品部署

提供最终用户在使用系统中遇到一些常见的

问题时的一般解决方法

Flash、视频或其它形式的多媒体培训材料

产品可运行程序与数据库等

产品接口可运行程序

产品接口部署后的访问地址,其中的主机名与

端口可替换为实际部署环境的主机名与端口

产品部署后的访问地址,其中的主机名与端口

可替换为实际部署环境的主机名与端口

FAQ

多媒体培训材料

系统程序

接口程序

程序

产品接口访问地址

可选

可选

必需

必需

必需

产品系统访问地址 必需

3 接口开发与测试环境

资源

222.92.117.85:7012

222.92.117.85:7011/

4 / 47

描述

沙箱环境平台登录地址

沙箱环境平台Web Service地址

222.92.117.85:7011/ 沙箱环境接收Post数据地址

222.92.117.85:7012/

222.92.117.85:7009

沙箱环境平台单点登录地址

提供示例程序、加解密算法、接

口调用日志查看、SDK等辅助调

试资源

4 ISV接入工作内容

 ISV产品改造

1) 平台中维护的数据,ISV产品中不可增加或删除,如企业、用户。

2) 平台中维护的数据,ISV产品中仅可编辑平台中不包含的数据属性的值。

3) 去掉登录页面

4) 去掉注销、退出等功能

5) 去掉修改密码、修改个人信息等功能

6) 平台用户的ID为GUID,ISV需实现此ID与其产品中的用户身份的对应。

7) 提供体验功能,能让用户点击产品体验链接后,以一个默认体验帐号的身份直接

进入系统,让用户简单试用。

 ISV接口实现

1) 企业客户业务受理接口:企业订购时调用,平台会传送企业的信息给ISV;

2) 企业客户员工业务受理接口:企业建立用户时调用,平台会传送用户信息给ISV;

3) 角色列表同步(读取)接口:企业给用户分配权限时调用,如果产品无角色功能,

可不实现。

4) 用户角色权限同步(读取)接口:企业给用户分配权限时调用,如果产品无角色

功能,可不实现。

5) 用户角色权限同步(更新)接口:企业给用户分配权限时调用,如果产品无角色

功能,可不实现。

5 / 47

5 接口定义

5.1 接口实现形式

平台与ISV之间的交互接口的实现有三种形式,具体如下:

1) 双方提供Web Service供对方调用,参数与返回值使用实体对象(实体类),较适

用于.Net平台或Java平台。

2) 双方提供Web Service供对方调用,参数与返回值使用字符串(XML文本),较

适用于Java平台或其它异构平台。

3) 双方提供接收Post数据的页面,Post的数据及返回值均为字符串(XML文本),

较适用于Java平台或其它异构平台如PHP、ASP等。

5.2 平台提供给ISV的接口

5.2.1 Web Service(参数为实体对象)

方法名称

参数数据类型

返回值数据类型

SaaSISVInterfaceXMLString

RequestInfo

ResponseInfo

5.2.2 Web Service(参数为XML字符串)

方法名称

参数数据类型

返回值数据类型

SaaSISVInterfaceXMLString

String

String

5.2.3 Post方式

请求方法

参数形式

参数数据类型

POST

Msg=xml格式的字符串

String

6 / 47

返回值数据类型

String

5.3 ISV需要实现的接口定义

ISV从接口实现的三种方式中,选择一种适合自己平台的方式实现给平台调用的接口。

5.3.1 实现方式1:Web Service(参数为实体对象)

方法名称

参数数据类型

返回值数据类型

ISVSaaSInterface

RequestInfo

ResponseInfo

5.3.2 实现方式2:Web Service(参数为XML字符串)

方法名称

参数数据类型

返回值数据类型

ISVSaaSInterfaceXMLString

String

String

5.3.3 实现方式3:Post方式

请求方法

参数形式

参数数据类型

返回值数据类型

POST

Msg=xml格式的字符串

String

String

5.4 ISV接口实现注意事项

1) Web Service方法只有一个参数,通过传递不同的参数Code来指定调用的功能。

2) namespace 必须是:/,包括最后

一个反斜线。

几种实现方式提供的接口方法的功能一样,只是参数和返回值类型不同。具体的业务

功能和返回信息由请求消息头的操作码(操作码)决定,即接口调用只有一

个入口。示例如下:

7 / 47

public ResponseInfo ISVSaaSInterface(RequestInfo req)

{

ResponseInfo resp = new ResponseInfo();

switch ()

{

//企业客户业务受理接口

case "ISV10101":

{

resp = eBusiness(req);

return resp;

}

//企业客户员工业务受理接口

case "ISV10102":

{

resp = eBusiness(req);

return resp;

}

//角色列表同步(读取)接口

case "ISV10201":

{

resp = eBusiness(req);

return resp;

}

//用户角色权限同步(读取)接口

case "ISV10202":

{

resp = eBusiness(req);

return resp;

8 / 47

}

//用户角色权限同步(更新)接口

case "ISV10203":

{

resp = eBusiness(req);

return resp;

}

//未知接口,非法调用

default:

{

return null;

}

}

}

5.5 接口调用示例

5.5.1 示例:Web Service(参数为实体对象)

//构造RequestInfo对象并赋值

RequestInfo request = new RequestInfo();

RequestHeadInfo reqHead = new RequestHeadInfo();

Time = "23779";

= "PRO2";

= "ISV10101";

= "2055";

ty = "10";

n = "1";

= reqHead;

9 / 47

string body = "1变更原因……";

//加密Body并赋值,“ABCD1234”为密钥

= rypt(body, "ABCD1234");

//实例化Web Service

ISV2SaaSInterface service = new ISV2SaaSInterface();

//调用Web Service

ResponseInfo response = SInterface(request);

//解密ResponseInfo的Body,还原为XML

string bodyXml = rypt(, "ABCD1234");

5.5.2 示例:Web Service(参数为XML字符串)

//构造Body的XML字符串

string bodyXML = "1开通……";

//加密Body的XML字符串,“ABCD1234”为密钥

string body = rypt(bodyXML, "ABCD1234");

//构造请求消息XML字符串

string requestXML = "

encoding="utf-8" ?>ISV101012055P

RO2237791

ity>10" + body + "";

//实例化Web Service

ISV2SaaSInterface service = new ISV2SaaSInterface();

//调用Web Service

string responseXML = SInterfaceXMLString(requestXML);

10 / 47

//取出Body值

XmlDocument xmlDoc = new XmlDocument();

l(responseXML);

XmlNode root = ntElement;

string responseBody = SingleNode("Body").InnerText;

//解密Body,还原为XML

string bodyXml = rypt(responseBody, "ABCD1234");

5.5.3 示例:Post方式

///

/// Post方式请求Url,返回response字符串

///

/// 数据流

/// Url地址

/// 返回数据

private static string UrlPost(string postData,string postUrl)

{

try

{

HttpWebRequest RequestObject = (postUrl) as

HttpWebRequest;

// 设定Cookie

Container = new CookieContainer();

tials = tCredentials;

11 / 47

// = this._webProxy;

// 设定请求头。

olVersion = new Version(1, 0);

ive = true;

henticate = false;

= "*/*";

//r = postUrl;

("Accept-Language", "utf-8");

AuthenticatedConnectionSharing = true;

//ent = "SMPClient";

= "POST";

tType = "application/x-www-form-urlencoded";

utoRedirect = true;

// Post数据

byte[] postBuffer = es("Msg=" +

ode(postData));

tLength = ;

using ( postStream =

uestStream())

{

(postBuffer, 0, );

();

12 / 47

}

//网络响应对象

HttpWebResponse resp = ponse() as

HttpWebResponse;

respStream = ponseStream();

//获取返回数据保护包

Reader streamRead = new

Reader(respStream, t);

StringBuilder strRet = new StringBuilder();

(End());

();

();

return ng();

}

catch (Exception ex)

{

throw new Exception("URL方式调用错误." + e, ex);

//return e;

}

13 / 47

}

接收方示例:

protected void Page_Load(object sender, EventArgs e)

{

string msg = Request["Msg"];

//对请求消息msg进行解析并做业务处理,生成返回消息。

();

("SYS103012023

TID>"

+

"PRO2277500"

+ "1.010"

+ "30");

}

5.6 接口消息格式

5.6.1 请求消息

请求消息是指调用接口的一方发出的消息,即Web Service方法的传入参数。

ISV10101

2055

14 / 47

PRO2

23779

1

10

id9#F9904sfLO((%)@$DSKLDOFEKRXBFSDF@#$LCL_+@$LXV:"SFLOW(#$@DVS

5.6.1.1 消息头

所有接口的请求消息的消息头格式相同,具体属性说明见下表:

名称

Code 操作码

客户端交易序列号(在发起方唯一标识一个

交易的流水号,客户系统内16位唯一标示号)

CTID

组成方式:8位日期+8位唯一数,每天从

00000001开始,如2001

业务应用标识(标识是哪个ISV应用系统,由

平台统一分配)

提交时间,格式为:

SubmitTime

YYYYMMDDHHmmssfff

版本号(保留字段)

Version

当前值: 1

优先级(保留字段)

Priority

当前值: 10

Int 3

String 10

String 17

String 16

说明 数据类型 长度(字节)

String 8

AppID String 8

15 / 47

5.6.1.2 消息体

每一个接口的请求消息的消息体的格式各不相同,具体请参见各接口的详细消息格

式说明。

5.6.2 返回消息

请求消息是指接口被调用的一方返回的消息,即Web Service方法的返回值。

ISV10101

2055

2987

PRO2

23779

1

10

0

id9#F9904sfLO((%)@$DSKLDOFEKRXBFSDF@#$LCL_+@$LXV:"SFLOW(#$@DVS

5.6.2.1 消息头

所有接口的返回消息的消息头格式相同,具体属性说明见下表:

名称

Code 操作码

说明 数据类型 长度(字节)

String 8

16 / 47

客户端交易序列号(在发起方唯一标识一个

交易的流水号,客户系统内16位唯一标示号)

CTID

组成方式:8位日期+8位唯一数,每天从

00000001开始,如2001

服务端交易序列号(在接受方唯一标识一个

交易的流水号,平台系统内唯一20位唯一流

水)

STID

组成方式:AppID + “_” + 8位日期+8位

唯一数,每天从00000001开始,如

10000001

业务应用标识(标识是哪个ISV应用系统,由

平台统一分配)

请求接受时间,格式为:

RequestTime

YYYYMMDDHHmmssfff

ResponseTim

e

响应处理时间,格式为:

String

YYYYMMDDHHmmssfff

版本号(保留字段)

Version

当前值:1

优先级(保留字段)

Priority

当前值:10

(能转换为int的串)

返回结果状态

Status

(能转换为int的串)

(0: 正常;-1: 系统调用异常)

String 16

String 16

String 10

17

String 17

String 25

String 16

AppID String 16

17 / 47

5.6.2.2 消息体

每一个接口的返回消息的消息体的格式各不相同,具体请参见各接口的详细消息格

式说明。

5.7 消息体加密处理

消息体的原始数据为一段XML字符串,如:

"1变更原因

PRO229

List>2000020000

dTime>"

,在消息传输时,消息体需要加密后传输,即消息的Body部分为加密后的字符串。

无论是请求消息还是返回消息的消息体都需经过加密处理,具体加密算法为:

Base64(DES(MD5(消息体) + 消息体))

5.8 消息调用返回码定义

Code

0

1

所有消息

101

ResultCode ResultMessage

成功

对未定义错误的描

数据非法加密 ISV应用系统私钥与SaaS中的私钥

不一致

102

11010101

11010102

SSO鉴权消

11010103

11010104

11010105

非法的XML格式

获取登录信息异常

用户Token不存在

用户Token 已失效

用户Token非法

用户登录未知系统

消息格式与本规范中定义的不一致

在获取当前登录用户信息时出错

用户Token不存在,需要重新登录

用户Token过期,需要重新登录

用户Token非法,需要重新登录

SaaS对用户登录的系统未知

正常返回

未定义错误

描述

18 / 47

11010106 其他错误

110101**编码定义鉴权消息其他错

用户Token过期,需要重新登录

用户Token不存在,需要重新登录

用户Token非法,需要重新登录

在获取当前登录用户信息时出错

11010202

11010203

SSO心跳消

11010205

11010104

用户Token已失效

用户Token不存在

用户Token非法

获取用户登录信息

信息出错

更新令牌错误

用户名或密码出错

11010206

11020101

客户端登录

接口消息

11020103

更新令牌错误

用户名或密码出错

110201**编码定义产品访问鉴权消

息其他错误

用户Token过期,需要重新登录

用户Token不存在,需要重新登录

用户Token非法,需要重新登录

获取用户登录信息信息出错

其他错误

11020201

11020202

产品访问鉴

权消息

11020204

11020203

用户Token已失效

用户Token不存在

用户Token非法

获取用户登录信息

信息出错

11020205

11030101

企业信息接

11030102

11030103

11030201

11030202

判断逻辑错误

取得用户信息错误

未获得企业信息

获取企业信息异常

非法的UserIDs

获取用户信息错误

判断订购关系业务逻辑错误

获取企业管理员信息出错

返回信息为空

获取企业信息发生业务错误

UserIDs为空

获取用户信息错误

企业员工信

息接口

19 / 47

11040101 数据非法加密 ISV应用系统私钥与SaaS中的私钥

不一致

11040102

11040103

11010104

11040105

用户Token已失效

用户Token不存在

用户Token非法

用户订购关系不存

用户Token过期,需要重新登录

用户Token不存在,需要重新登录

用户Token非法,需要重新登录

用户没有权限使用该功能

计费消息

11040106

未知业务资费信息

SaaS管理平台未设置该业务的计费

策略

3**编码定义批价消息其他错误

业务订购配置不符合ISV应用系统

的约定

11040107

21010101

其他错误

业务配置参数错误

21010102

企业客户业

务受理消息

21010103

21010104

业务功能点订购错

License数量错误

未知操作类型

订购的功能点与ISV应用系统提供

的不一致

License可能不是非负的整数

ISV应用系统无法识别操作类型(订

购、取消、暂停、恢复)

21010105

21010201

企业客户员

工业务受理

消息

21010202

21010203

其他错误

未知企业客户帐号

4**编码定义该类消息其他错误

企业客户帐号在ISV应用系统中不

存在

用户手机号码非法

其他错误

用户手机号码错误

5**编码定义该类消息其他错误

20 / 47

6 接口开发与产品改造指南

6.1 接口实现过程步骤

序号

1

2

工作内容

联系平台管理员,在平台中录入ISV和产品信息,获取ISVID、AppID、密钥

建立配置文件,填入平台管理员提供的ISVID、AppID、密钥、平台接口地址、

平台单点登录地址

建立Web Service并声明好方法,发布在外网,然后将Web Service的地址和

产品地址发给平台管理员,在平台的产品信息中录入。

实现产品订购功能

测试产品订购功能

实现用户授权功能

测试用户授权功能

实现产品登录功能

测试产品登录功能

实现心跳保持功能

测试心跳保持功能

3

4

5

6

7

8

9

10

11

6.2 配置文件

ISV需提供一个配置文件,其中包括以下可修改的配置参数:

参数

Web Service接口地址(或Post数据的页面地址)

ISVID

AppID

正式环境的平台接口地址

ISV在平台中的唯一标识码

ISV的某一产品在平台中的唯一标

识码

ISV分配的加解密密钥

正式环境的平台单点登录页面

加解密密钥

平台单点登录页面

.Net应用的文件中添加配置信息示例,其它平台类似:

21 / 47

6.3 接口实现

6.3.1 产品订购

6.3.1.1 应用场景

1

企业用户

2

3:新建或更新订购企业信息

风云在线

平台管理员

企业客户业务受理接口

22 / 47

6.3.1.2 企业客户业务受理接口(ISV实现,平台调用)

接收平台传入的参数

解密Body信息,读取Head和Body

根据收到的企业信息,进行初始化

或续订处理

新增企业信息及相关参数,并

为该企业客户进行初始化处理

是否初次开通?

更新企业客户信息及相关参数,

执行相应的续订或暂停等处理

返回处理结果

企业客户业务受理接口由ISV提供给平台调用,平台向ISV输入待增加的企业客户,

ISV给企业客户创建一个新的实例,并配置数据库等相关资源。注意事项如下:

1) ISV给企业创建实例时如果需要特殊的参数,则需事先整理出来,交给平台管理

员维护。这样用户在订购的时候就可以输入这些参数的值,然后平台会将这些参

数值传递给ISV的Web Service,ISV再根据这些参数值给企业开通服务。

2) 如果ISV的产品需要根据模块收费,则需要将模块信息整理并提交给平台管理

员。这样用户在订购的时候就可以选择需要的模块。然后平台会将模块信息传递

给ISV的Web Service。

3) 企业可以多次订购一个产品,例如初次订购和续订,ISV产品需要做相应处理,

续订时,注意新的时间区间的记录和处理。

消息类型编码 ISV10101

Request通用消息头

加密后的消息体

请求消

消息格式

未加密的消息

体格式

绑定标志

23 / 47

绑定说明

应用(产品)ID

企业客户ID

企业客户名称

企业客户简称

企业客户英文名称

企业客户英文简称

企业FQDN

企业营业执照号

企业法人

企业管理员GUID< /AdminGUID>

企业管理员联系电话

企业管理员联系手机

企业管理员联系邮件

企业地址

企业邮寄地址

邮编

企业电话

传真号码

邮箱地址

企业WEB网址

企业LogoURL

24 / 47

变更时间

业务配置参数代码

业务配置参数值

……

模块1,模块2,…

开始时间

结束时间

名称

OPType

说明

受理标志:1 : 开通2 : 暂停3 : 恢复4 : 更

新5 : 退订状态2、3、5只用企业客户ID和

应用(产品)ID字段

数据类型

长度(字节)

String 8

OPNote

AppID

CorpInfo

ParamName

ParamValue

ModuleList

StartTime

绑定说明,例如:业务变更原因

应用(产品)ID

企业客户的企业信息

业务订购配置参数名

业务订购配置参数值

订购模块列表(以逗号分割)

开始时间(只对OPType: 1,4有效)

格式为:YYYYMMDDHHmmssfff

String

String

String

String

String

String

String

256

16

16

64

256

17

25 / 47

EndTime 结束时间(只对OPType: 1,4有效)

格式为:YYYYMMDDHHmmssfff

String 17

返回消

消息格式

Response通用消息头

加密后的消息体

未加密的消息

体格式

名称

ResultCode

ResultDesc

返回结果代码

返回结果描述

说明

返回结果代码(0:成功;1:失败)

返回结果文字描述

数据类型

长度(字节)

String

String

16

256

6.3.2 用户授权

用户集成授权需要ISV实现4个接口,包括企业客户员工业务受理接口,及权限角

色相关的三个接口:

1) 企业客户员工业务受理接口:目前必须实现开通(代码为1)和停用(代码为4)两种

情况。

2) 角色列表同步(读取)接口,如果产品无角色功能,可不实现。

3) 用户角色权限同步(读取)接口,如果产品无角色功能,可不实现。

4) 用户角色权限同步(更新)接口,如果产品无角色功能,可不实现。

26 / 47

6.3.2.1 应用场景

2

1:进入产品授权界面

角色列表同步(读取)接口

3

4:保存用户授权信息

企业管理员

风云在线

5

6

用户角色列表同步(读取)接口

企业客户员工业务受理接口

用户角色权限同步(更新)接口

6.3.2.2 角色列表同步(读取)接口(ISV实现,平台调用)

接收平台传入的参数

解密Body信息,读取Head和Body

根据收到的企业ID,查询出该企

业所有的角色列表

返回角色列表

返回ISV产品中所有角色的列表。

消息类型编码

请求消息

消息格式

ISV10201

Request通用消息头

加密后的消息体

27 / 47

未加密的消息体格

应用提供商ID

应用(产品)ID

企业客户ID

名称

ISVID

AppID

CorpID

应用提供商ID

说明

数据类型

String

String

String

长度(字节)

16

16

16

应用(产品)ID

企业客户ID

返回消息

消息格式

Response通用消息头

加密后的消息体

未加密的消息体格

返回结果代码

返回结果描述

应用提供商ID

应用(产品)ID

企业客户ID

角色ID

角色名

角色描述

……

28 / 47

名称

ResultCode

ResultDesc

ISVID

AppID

CorpID

RoleList

RoleInfo

RoleID

RoleName

RoleDesc

说明

返回结果代码(0: 成功;1: 失败)

返回结果描述

应用提供商ID

应用(产品)ID

企业客户ID

角色列表

角色信息

角色ID(ISV系统内部角色ID)

角色名

角色描述

数据类型

String

String

String

String

String

--

--

String

String

String

长度(字节)

16

256

16

16

16

--

--

16

64

256

6.3.2.3 用户角色权限同步(读取)接口(ISV实现,平台调用)

接收平台传入的参数

解密Body信息,读取Head和Body

根据收到的企业ID和用户ID,查

询出当前用户所拥有的角色列表

返回角色列表

返回当前要授权的用户在ISV的产品中具有权限的角色列表。

消息类型编码

请求消息

消息格式

ISV10202

Request通用消息头

加密后的消息体

29 / 47

未加密的消息体格

应用提供商ID

应用(产品)ID

企业客户ID

用户ID

名称

ISVID

AppID

CorpID

UserID

应用提供商ID

说明

数据类型

String

String

String

String

长度(字节)

16

16

16

36

应用(产品)ID

企业客户ID

用户ID(可转换为Guid的串)

返回消息

消息格式

Response通用消息头

加密后的消息体

未加密的消息体格

返回结果代码

返回结果描述

应用提供商ID

应用(产品)ID

企业客户ID

用户ID

角色ID

……

30 / 47

名称

ResultCode

ResultDesc

ISVID

AppID

CorpID

UserID

RoleList

RoleID

说明

返回结果代码(0: 成功;1: 失败)

返回结果描述

应用提供商ID

应用(产品)ID

企业客户ID

用户ID

角色列表

角色ID(ISV系统内部角色ID)

数据类型

String

String

String

String

String

String

--

String

长度(字节)

16

256

16

16

16

36

--

64

6.3.2.4 企业客户员工业务受理接口(ISV实现,平台调用)

接收平台传入的参数

解密Body信息,读取Head和Body

根据收到的用户信息,进行用户的

初始化或更新等处理

新增用户,并执行开通等处理

是否初次开通?否

更新用户信息,并执行相应的开

通、暂停或取消授权等处理

返回处理结果

企业客户员工业务受理接口由ISV提供给平台调用,平台向ISV输入待增加的企业

用户(员工),ISV同步用户信息,并保存授权信息。

消息类型编码

请求消息

消息格式

ISV10102

31 / 47

Request通用消息头

加密后的消息体

未加密的消息体格

绑定标志

绑定说明

应用(产品)ID

企业客户ID

用户ID

用户类型

用户名称

别名

性别

用户登录名

用户AD 帐号

用户SAM帐户

邮箱地址

联系地址[HomeAddress]

身份证

出生日期

部门ID

职务

办公电话

32 / 47

移动电话

变更时间

……

开始时间

结束时间

名称

OPType

说明

操作类型:1:开通2:暂停3:恢复4 :

停用

数据类型

String

长度(字节)

8

OPNote

AppID

CorpID

Staffs

StartTime

绑定说明,例如:业务变更原因等。 String

应用(产品)ID

企业客户ID

被授权的企业客户员工信息列表

开始时间(只对OPType: 1有效)

格式为:YYYYMMDDHHmmssfff

String

String

String

256

16

16

17

EndTime 结束时间(只对OPType: 1有效)

格式为:YYYYMMDDHHmmssfff

String 17

返回消息

消息格式

Response通用消息头

加密后的消息体

33 / 47

未加密的消息体格

名称

ResultCode

ResultDesc

返回结果代码

返回结果描述

说明

返回结果代码(0:成功;1:失败)

返回结果文字描述

数据类型

String

String

长度(字节)

16

256

6.3.2.5 用户角色权限同步(更新)接口(ISV实现,平台调用)

接收平台传入的参数

解密Body信息,读取Head和Body

根据收到的企业ID、用户ID和角

色ID,更新当前用户所拥有的角

色列表

返回处理结果

将当前用户重新授权的角色列表更新。

消息类型编码

请求消息

消息格式

ISV10203

Request通用消息头

加密后的消息体

未加密的消息体格

应用提供商ID

应用(产品)ID

企业客户ID

用户ID

角色1,角色2,…

名称

说明

数据类型

长度(字节)

34 / 47

ISVID

AppID

CorID

UserID

应用提供商ID

应用(产品)ID

企业客户ID

用户ID

角色ID(ISV系统内部角色ID)列表

(以逗号分割)

String

String

String

String

16

16

16

36

RoleIDs String

返回消息

消息格式

Response通用消息头

加密后的消息体

未加密的消息体格

名称

ResultCode

ResultDesc

返回结果代码

返回结果描述

说明

返回结果代码(0:成功;1:失败)

返回结果文字描述

数据类型

String

String

长度(字节)

16

256

6.3.3 健康检查

6.3.3.1 应用场景

1:进入产品管理

->接口监控

企业管理员

风云在线

2

:获取

产品接

口健康

状态

健康状态检查接口

35 / 47

6.3.3.2 健康状态检查接口(ISV实现,平台调用)

接收平台传入的参数

解密Body信息,读取Head和Body

检查本产品的业务接口健康状态

返回检查结果

返回检查结果

消息类型编码

请求消息

消息格式

ISV10301

Request通用消息头

加密后的消息体

未加密的消息体格

应用提供商ID

应用(产品)ID

名称

ISVID

AppID

应用提供商ID

说明

数据类型

String

String

长度(字节)

16

16 应用(产品)ID

返回消息

消息格式

Response通用消息头

加密后的消息体

未加密的消息体格

名称

ResultCode

返回结果代码

返回结果描述

说明

返回结果代码(0:健康;1:不健康)

36 / 47

数据类型

String

长度(字节)

16

ResultDesc

示例代码:

string strResult = "";

//1、检查数据库是否工作

strResult = CheckDatabase();

返回结果文字描述

String 256

if (!OrEmpty(strResult))

{

resp = BindResponse(resp, "21010302", "检查CRM数据库出现错误," +

"错误信息:" + strResult);

return resp;

}

//2、检查DeploymentService

strResult = CheckDeploymentService();

if (!OrEmpty(strResult))

{

resp = BindResponse(resp, "21010303", "检查CRM部署服务出现错误,"

+

"错误信息:" + strResult);

return resp;

}

//3、检查报表服务器是否工作

37 / 47

strResult = CheckReportService();

if (!OrEmpty(strResult))

{

resp = BindResponse(resp, "21010303", "检查CRM报表服务出现错误,"

+

"错误信息:" + strResult);

return resp;

}

6.3.4 产品登录

用户点开登录页面

读取名称为“Token”的

QueryString

是否为空字符串?否

对当前用户的Token值调用平台

SSO鉴权接口进行用户鉴权

转到平台单点登录页面,且将

当前页面地址作为一个名称为

“Url”的QueryString值传入

否SSO鉴权通过?

对当前用户的Token调用平台产

品访问鉴权接口进行产品鉴权

提示当前用户未订购该产品否产品鉴权通过?

进入系统主界面

重新登录

当从平台中打开产品页面时,会在页面地址后附上名字叫“Token”的QueryString,

存放的是当前用户的身份标识。

38 / 47

当直接在IE中输入产品首页地址打开时,需要自动转到平台的单点登录界面,重新

登录。

在系统中指定一个页面,用于登录鉴权和产品鉴权等,可以是一个单独的页面,也

可以是系统运行的主界面,只要在页面加载时加入以上流程图中所示的处理即可。

在这个页面加载时,判断一个QueryString,名字叫“Token”,看有没有值,如果有

值,表示已经单点登录过,可以直接调用SSO鉴权接口与产品鉴权接口;如果没值,表

示还未登录,这时候,转到平台的单点登录页面地址,同时在地址后附上当前页面地址,

例如:222.92.117.85:7002/?Url=,其中的

为你自己的当前页面地址

当单点登录成功后,会自动转回那个,并会传一个名为“Token”的

QueryString回来,其中存放了一个GUID,这样,可以使用这个有效的token调用SSO

鉴权接口与产品鉴权接口。

6.3.4.1 SSO鉴权接口(平台提供给ISV调用)

消息类型编码

SYS10101

请求消

消息格式

Request通用消息头

加密后的消息体

未加密的消

息体格式

应用提供商ID

应用(产品)ID

令牌

名称

ISVID

AppID

Token

应用提供商ID

说明

数据类型

长度(字节)

String

String

String

16

16

36

应用(产品)ID

令牌(可转换为Guid的串)

39 / 47

返回消

消息格式

Response通用消息头

加密后的消息体

未加密的消

息体格式

返回结果代码

返回结果描述

企业客户ID

用户ID

用户类型

名称

说明

返回结果代码(0: 有效Token;1: 无

效Token)

返回结果文字描述

企业客户ID(可转换成Int类型)

用户ID(可转换成Guid类型)

用户类型:(1: 企业管理员;0:企业普

通用户)

数据类型

长度(字节)

ResultCode String 16

ResultDesc

CorpID

UserID

String

String

String

256

16

36

UserType String 1

6.3.4.2 产品访问鉴权接口(平台提供给ISV调用)

消息类型编码

请求消

消息格式

SYS10202

Request通用消息头

40 / 47

加密后的消息体

未加密的

消息体格

名称

Token

AppID

令牌

应用ID

说明

令牌(可转换为Guid的串)

应用(产品)ID

数据类型

长度(字节)

String

String

36

16

返回消

消息格式

Response通用消息头

加密后的消息体

未加密的

消息体格

名称

返回结果代码

返回结果描述

说明

返回结果代码(0: 有产品权限;1: 无

产品权限)

数据类型

长度(字节)

ResultCode String 16

ResultDesc 返回结果描述

String 256

41 / 47

6.3.5 心跳保持

在系统主界面设一个计时器(时间

在30分钟之内,建议设5~10分钟)

用户进入系统后即开始计时

到计时时间后,触发定时器事件

计时器当前时间清

0,从新开始计时

调用平台SSO心跳接口

是心跳处理是否成功?

转到平台单点登录界面,处理方式

与用户登录流程中相同

如果进入ISV应用后,就不受平台的管理,为了知道当前用户是否还在线的状态,ISV

应用需要实现心跳接口,定期向平台接口发送心跳,以更新当前用户的在线状态。如果

用户30分钟内还没有任何交互,那么他的Token就失效,需要重新登录。

6.3.5.1 SSO心跳接口(平台提供给ISV调用)

消息类型编码

请求消息

消息格式

SYS10102

Request通用消息头

加密后的消息体

未加密的消

息体格式

名称

Token

令牌

说明

令牌(可转换为Guid的字符串)

Response通用消息头

42 / 47

数据类型

String

长度(字节)

36

返回消息

消息格式

加密后的消息体

未加密的消

息体格式

名称

ResultCode

ResultDesc

返回结果代码

返回结果描述

说明

返回结果代码(0:成功;1:失败)

返回结果文字描述

数据类型

String

String

长度(字节)

16

256

6.3.6 数据同步

ISV可建立一个服务程序,定期同步企业客户、用户、及联系人等相关信息。如果需

要考虑及时性,也可以在需要企业信息和用户信息的时候直接调用平台的接口获取。

6.3.7 客户端登录

如果ISV的产品有智能客户端或者手机客户端,须实现客户端登录接口。

43 / 47

7 接口测试指南

7.1 测试准备工作

7.1.1 基本数据准备

7.1.1.1 第一步:平台管理员准备

1. 在沙箱环境中新建相应的ISV,产生唯一的ISVID。

2. 在沙箱环境中新建相应的产品,产生唯一的AppID。

3. 在沙箱环境中新建相应的解决方案(注意选择不需要审核)。

4. 在沙箱环境中维护ISV的密钥。

5. 通知ISV以下信息:

(1) ISVID

(2) AppID

(3) 密钥

(4) 沙箱环境平台Web Service地址

(5) 沙箱环境平台单点登录地址

7.1.1.2 第二步:ISV需要准备

1. 将ISVID、AppID、密钥、沙箱环境平台Web Service地址、沙箱环境平台单点

登录地址放到配置文件中。

2. 将应用程序与Web Service接口放在公网上。如果不放在公网上,平台不能调用

ISV提供的Web Service接口。

3. 将单点登录入口页面及Web Service地址通知平台管理员。

7.1.1.3 第三步:平台管理员维护产品属性

1. 将ISV的单点登录入口页面及Web Service地址维护到产品属性中。

44 / 47

7.1.2 基本数据检查

7.1.2.1 ISV检查

1. 验证平台的Web Service是否可以在IE中直接访问,能否在IE中查看到WSDL。

2. 验证平台单点登录的URL是否可以在IE中访问。

3. 检查密钥的长度是否为8位,并且与平台中保存的值一致。

7.1.2.2 平台检查

1. 验证ISV的Web Service是否可以在IE中访问,能否在IE中查看到WSDL。

2. 产品的登录入口页面地址是否可以在IE中访问。

3. 验证数据库中密钥的长度是否为8位。如果数据库中密钥为GUID,则有可能出

错,部分加解密没有截取前8位。

7.2 加解密算法测试

在测试接口之前,首先测试加解密是否正确,加解密算法实现时需注意,所有用到

的字节(byte数组中的数据)均应该为utf-8格式,否则当数据中存在中文时,将会有出

现加解密的结果不一致的可能。

为了比较ISV实现的加解密算法与平台加解密的结果是否一致,平台提供了辅助测

试工具,具体请参考如下:

加密过程请参考222.92.117.85:7009/test_whole_

解密过程请参考 222.92.117.85:7009/test_whole_

7.3 开通企业客户测试

1) ISV用EC账号登录(如无帐号,可重新注册一个)。

2) 进入“订购管理”――>“新增订单”,新增订购。

3) 平台管理员登录,审核EC之订购,并审核通过(如果解决方案被设为“不需要

审核”,则该步骤可省略)。

4) 检查订购是否成功(提示信息为“开通成功”时,订购成功,提示信息为“操作

45 / 47

成功”时,订购未成功)。

5) 如果需要,ISV应该在此方法中调用企业信息接口获取企业信息,并保存到产品

系统的数据库中,可在产品系统中查询或打开数据库查看是否有企业增加或更新,

以判断调用是否成功。

7.4 企业用户授权测试

7.4.1 集成授权测试1

1) ISV用EC用户登录。

2) 进入“权限管理”――>“用户管理”――>选择一个用户――>点击“产品授

权”――>进入已订购产品授权功能,此时会调用“角色列表同步(读取)接口”

和“用户角色权限同步(读取)接口”。ISV可以通过日志查看调用是否成功。

3) 对订购成功的产品进行授权。在产品左边的checkbox打勾然后点击保存,平台

会调用“企业员工业务受理接口”。在产品的子结点(即角色)左边的checkbox

打勾,然后点击保存,平台会调用“用户角色权限同步(更新)接口”。

4) 如果有必要,ISV应该在“企业员工业务受理接口”中调用“同步企业员工信息”

的接口,并保存到产品系统的数据库中,可在产品系统中查询或打开数据库查看

是否有用户增加或更新,以判断调用是否成功。

7.4.2 集成授权测试2

1) 关闭集成授权页面。重新进入集成授权页面。

2) 检查上次的授权是否成功。

3) 取消授权(去掉checkbox上的勾),点击保存。从日志查看调用是否成功。同时

ISV检查产品系统中,该用户是否已经无权限访问产品。

4) 关闭授权页面并重新进行,检查上次的授权是否成功。

7.5 产品登录测试

在产品登录过程中,ISV在首页中调用SSO鉴权接口,对传过来的Token进行鉴权,

如果鉴权不成功,转向平台单点登录界面。SSO鉴权通过后,进行产品鉴权,如果产品

46 / 47

鉴权不成功,提示用户未订购该产品,如果产品鉴权成功,进入系统主界面。

测试登录方式有两种,一种直接从IE中输入ISV产品首页地址进入,另一种是从平

台中登录后点击产品链接后进入,具体如下:

1. 从IE中直接输入ISV页面地址,可自动跳转到平台登录页面。在平台登录后可

回转到ISV系统主界面。

2. 给某个EC用户授权,然后用该EC帐号登录,从“个人配置”――>“我的产

品”――->点击具体的产品,判断是否可以转到ISV的系统主界面。

47 / 47

本文标签: 平台产品接口企业用户