Hello World 起步
我们来注册一个名叫HelloWorld的软件,输入相关的软件基本信息之后,在ISV工作平台的软件列表中,将有一个HelloWorld的软件项目。其中,我们会得到两个代码,一个是APP ID(应用程序标识),另一个是CERT CODE(授权码)。这两个东西会在随后与平台的WEB API调用中经常用到。
当然,一个B/S结构的SaaS软件,一定有一个URL入口。因此,在注册完HelloWorld软件后,还需要补充编辑更多的软件信息,包括测试入口和使用入口的URL。这里,我们将HelloWorld程序的入口指定为http://helloworld.leadzen.cn/。当最终用户从阿里软件网站或旺旺客户端,以及阿里巴巴其他网站进入我们的HelloWorld时,就会将浏览器引导到我们设置的URL,当然后面会跟上一大堆调用参数。
我们的HelloWorld程序是在自己的服务器上运行的,并非运行在阿里软件的服务器上。因此,我们可以简单地这样理解,阿里旺旺软件平台是阿里巴巴用户使用软件的一个集中的启动入口,但软件一旦运行起来,就是主要是在ISV自己的服务上运行了。尽管将来阿里软件会提供有*.aliapp.com域名的应用程序宿主环境,但这也是属于与平台不同的服务器。
阿里旺旺软件平台与ISV应用服务器之间的交互关系如下图所示:
阿里平台与ISV服务器之间的交互关系 当最终用户在阿里旺旺软件平台上使用我们的HelloWorld软件时,我们的helloworld.leadzen.cn服务器会收到类似于下面的调用请求:
http://helloworld.leadzen.cn/?user_id=12176230&app_id=22875&app_instance_id=USERFB4B11067FC25455E32AC4F039B2CD38&token=
A2842BC81AE060C067017336B894F1B6E9AA7A8ED137A91903D1&target= 在这个请求中会带上一系列参数,各个参数的解释如下: ◆user_id 用于识别阿里巴巴用户的标识信息
◆app_id 要使用的应用程序标识,也就是注册软件时的APP_ID
◆app_instance_id 应用程序实例标识,一个实例服务于一个人或一个公司
◆token 身份认证令牌,只有10秒生存期并一次有效 当我们的服务器收到这样的请求之后,首先应该识别访问用户的身份是否合法,然后才能为其提供相关的服务。要验证用户的身份,这就需要调用阿里旺旺软件平台提供的validateUser服务。 目前,阿里旺旺软件平台采用的是REST风格的API调用格式。说白了就是从ISV的服务器发起一个HTTP请求到阿里旺旺软件平台,并得到以XML表示的返回结果。阿里旺旺软件平台提供了专门的API调用地址,开发测试的调用地址为: http://sipdev.alisoft.com/sip/rest 当软件开发测试完成并上线使用之后,必须使用正式的API调用地址: http://sipdev.alisoft.com/sip/rest 例如,开发测试中的validateUser服务调用形式可能如下: http://sipdev.alisoft.com/sip/rest?sip_appkey=22875 &sip_apiname=alisoft.validateUser &sip_timestamp=2008-10-28 20:00:00&sip_sign=23ed99f1a0a1eac5f3787d522afde1c4 &userId=12176230 &appId=22875 &appInstanceId=USERFB4B11067FC25455E32AC4F039B2CD38&token= A2842BC81AE060C067017336B894F1B6E9AA7A8ED137A91903D1 | 其中的参数分为系统级参数和应用级参数,以sip_开头的是系统级参数,而其他的是应用级参数。
系统级参数说明如下:
◆sip_appkey ISV应用的唯一编号,即APP_ID
◆sip_apiname 服务名,这里是alisoft.validateUser,其他服务有各自的名称
◆sip_timestamp 发出请求时间戳(yyyy-mm-dd hh:mm:ss.xxx),支持毫秒
◆sip_sign 请求数据的签名,系统级参数和应用参数按顺序拼接后签名
应用级参数说明如下:
◆userId 用户ID,也是客户端传过来的那个user_id
◆appId 应用标识,即APP_ID
◆appInstanceId 应用实例ID,也是客户端传过来的app_instance_id
◆token 身份验证令牌,也是客户端传过来的token
其中的sip_sign参数,是一个签名数据。为了防止非法的调用或调用数据被中途篡改,旺旺平台要求每一个WEB API调用必须进行签名。签名过程中会用到注册新软件时得到的CERT_CODE,这是每个ISV必须保密的重要数据,旺旺平台据此来识别ISV的真实身份。
ISV每个应用的CERT_CODE是放在待签名数据的最前面。接下来是本次调用的所用到的参数按名称的字母顺排列,依次将参数名及参数值填充到待签名数据中。待签名的数据是用UTF8编码的字节串。准备好待签名数据之后,要进行一次标准的MD5散列运算,得到签名结果。签名的结果要求是用十六进制字节码表示的字符串。
当调用旺旺平台的各个参数准备好之后,即可创建一个HTTP请求到阿里旺旺软件平台的服务器。而调用参数可以直接拼接在 http://sipdev.alisoft.com/sip/rest 这一URL的最后,也可以作为POST数据来传递。
而阿里旺旺软件平台会在收到调用请求后,对调用参数的签名进行比对,以确认ISV的身份。同事,还要核对token是否超期或失效,当然还要检查timestamp是否在合理的范围之内。
调用完成后,旺旺平台会返回响应的HTTP报文。在这个报文的头部信息中,有一个sip_status项目,是用来表示调用状态的。而HTTP报文的内容,是以XML形式返回的结果。因此我们还需要从XML中解析出结果的内容。例如,validateUser返回的结果可能是下列形式:
﹤?xml version="1.0" encoding="utf-8" ?﹥﹤String﹥1﹤/String﹥ | 不同WEB API接口所返回的数据格式是不同的,具体可以参阅阿里旺旺软件平台的在线文档。地址:http://isp.alisoft.com/apidoc/api/apiIndex.html
|