一、方案概述一.1、方案概述一.2、接口说明
本接口对接采用rest模式,post请求,编码格式为UTF-8。
一.3、接口地址
地址类型 | 地址 |
测试地址 | http:(略) |
正式地址 | http:(略) |
一.4、接口约定
约定 | 备注说明 |
1.服务器返回的所有数据均采用JSON格式。 | 1. JSON格式中“code”字段的值为整型,“msg”字段值为字符串 “data”为jsonarray数组返回。 2. 对象采用{}界定;数组采用[]界定; |
Token | Appkey:(略) Appsecret:(略) |
二、接口详细设计二.1、接口设计二.1.1、场地基本信息接口
接口编号 | 和田公共资源交易平台系统开发,三方调用 |
接口路径 | rest/mtrmanage/getallmtrinfo |
传参 | { token:(略) startdate:(略) enddate:(略) } |
传参说明 | token:(略) startdate:(略) enddate:(略) |
逻辑说明 | 用于获和田公共资源交易平台全部场地在指定时间内的占用情况 |
返回参数 | { epointdatabody:(略) data:(略) returninfo:(略) status:(略) description:(略) }, businessinfo:(略) status:(略) description:(略) }, returndata:(略) { mtrguid:(略) mtrname:(略) xiaqucode:(略) mtrtype:(略) useddetail:(略) { starttime:(略) endtime:(略) }, { starttime:(略) endtime:(略) } ] }, { mtrguid:(略) mtrname:(略) xiaqucode:(略) mtrtype:(略) } ] } } } |
返回说明 | status :(略) description:(略) mtrguid:(略) mtrname:(略) xiaqucode:(略) mtrtype:(略) starttime:(略) endtime:(略) usetype:(略) useddetail里没有数据,就说明这个标室全时间段都是空闲的,useddetail里有数据就返回具体占用时间段。 |
二.1.2、场地使用预约接口
接口编号 | 和田公共资源交易平台系统开发,三方调用 |
接口路径 | rest/mtrmanage/getmtrusedinfo |
传参 | { token:(略) biaoduanname:(略) biaoduanno:(略) dailiname:(略) jianshedanwei:(略) yuyueinfo:(略) { begindate:(略) enddate:(略) mtrguid:(略) yuyuedate:(略) yuyuestep:(略) usetype:(略) }, { begindate:(略) enddate:(略) mtrguid:(略) yuyuedate:(略) yuyuestep:(略) usetype:(略) } ] } |
传参说明 | token:(略) biaoduanname:(略) biaoduanno:(略) dailiname:(略) jianshedanwei:(略) yuyueinfo:(略) begindate:(略) enddate:(略) mtrguid:(略) yuyuedate:(略) yuyuestep:(略) usetype:(略) |
逻辑说明 | 用于获取和田公共资源交易平台在某个时间段内场地的使用情况,如未占用则直接预约成功 |
返回参数 | { epointdatabody:(略) data:(略) returninfo:(略) status:(略) description:(略) }, businessinfo:(略) status:(略) description:(略) }, returndata:(略) usedstatus:(略) yudingguid:(略) } } } } |
返回说明 | status:(略) description:(略) usedstatus:(略) yudingguid:(略) |
二.1.3、变更场地预约接口
接口编号 | 和田公共资源交易平台系统开发,三方调用 |
接口路径 | rest/mtrmanage/changemtrusedinfo |
传参 | { token:(略) yudingguid:(略) begindate:(略) enddate:(略) mtrguid:(略) dailiname:(略) jianshedanwei:(略) yuyuedate:(略) yuyuestep:(略) usetype:(略) } |
传参说明 | token:(略) yudingguid:(略) begindate:(略) enddate:(略) mtrguid:(略) dailiname:(略) jianshedanwei:(略) yuyuedate:(略) yuyuestep:(略) usetype:(略) ,6资格审查评审室 |
逻辑说明 | 用于变更已预约的场地 |
返回参数 | { epointdatabody:(略) data:(略) returinfo:(略) status:(略) description:(略) }, businessinfo:(略) status:(略) description:(略) }, returndata:(略) usedstatus:(略) } } } } |
返回说明 | status :(略) description:(略) usedstatus:(略) |
二.1.4、取消场地预约接口
接口编号 | 和田公共资源交易平台系统开发,三方调用 |
接口路径 | rest/mtrmanage/cancelmtrusedinfo |
传参 | { token:(略) mtrguid:(略) biaoduanno:(略) yudingguid:(略) dailiname:(略) jianshedanwei:(略) usetype:(略) } |
传参说明 | token:(略) mtrguid:(略) biaoduanno:(略) yudingguid:(略) dailiname:(略) jianshedanwei:(略) usetype:(略) ,6资格审查评审室 |
逻辑说明 | 用于取消某标段的场地预约信息 |
返回参数 | { epointdatabody:(略) data:(略) returninfo:(略) status:(略) description:(略) }, businessinfo:(略) status:(略) description:(略) }, returndata:(略) cancelstatus:(略) } } } } |
返回说明 | status :(略) description:(略) cancelstatus:(略) |
二.1.5、专家专业信息同步接口
接口编号 | 专家库系统开发,地市交易平台调用 |
接口路径 | rest/infotozhuanjiaht/getzylist |
传参 | { token:(略) platformcode:(略) } |
传参说明 | token:(略) platformcode:(略) 此接口主要用于各地市组建评标委员会的时候新增挑选专业使用,调用接口获取统一专家库专业进行组建。 |
逻辑说明 | 具体字段取值逻辑在传参已说明 |
返回参数 | { code:(略) msg:(略) zylist:(略) { zy_name:(略) zy_code:(略) zy_guid:(略) }, { zy_name:(略) zy_code:(略) zy_guid:(略) },... ] } |
返回说明 | code:(略) msg:(略) zylist:(略) |
| |
二.1.6、推送组建项目信息接口
接口编号 | 专家库系统开发,地市交易平台调用 |
接口路径 | rest/infotozhuanjiaht/receiveexpertproinfo |
传参 | { token:(略) platformcode:(略) isbuchou:(略) zujianpro:(略) project:(略) projectguid:(略) yushenprojectguid:(略) biaoduanno:(略) biaoduanname:(略) xiaqucode:(略) jianshedanwei:(略) dailiname:(略) daililianxiren:(略) daililianxirentel:(略) pingbiaofromdate:(略) pingbiaoinformdate:(略) pingbiaotime:(略) zjpingbiaoaddr:(略) isyuancheng:(略) iscopyproject:(略) remark:(略) kaibiaodate:(略) }, zhuanye:(略) specexpnum:(略) project_zy_guid:(略) pwxiaqu:(略) zy_guids:(略) zy_names:(略) piciguid:(略) }], jiafangpw:(略) pwname:(略) sex:(略) age:(略) xueli:(略) pwmobile:(略) shengfenzh:(略) workplace :(略) zhiwu:(略) zhicheng:(略) zhichengno:(略) zhuanye:(略) danrenwork:(略) pwtype:(略) }], huibidanwei:(略) danweiname:(略) unitorgnum :(略) }], huibipingwei:(略) pwhbname:(略) pwhbshenfenzh:(略) }] } } |
传参说明 | token:(略) platformcode区分不同平台; zujianpro为组建的项目信息,分多个节点,project节点为组建的项目基本信息,zhuanye为组建项目选择的专业信息,jiafangpw节点为组建项目选择的招标人代表信息,huibidanwei为组建项目选择的回避单位信息,huibipingwei为组建项目选择的回避评委信息。 此接口用于三方对接,将项目信息推送到专家抽取系统中的接口;不管是新增首次收取还是补抽,都调用该接口;如果是补抽逻辑,isbuchou值为1,专业送全量数据(正常抽取成功的专业也同步推送),专家库根据补抽前返回的评委确认参加信息及补抽所需人数计算抽取下一批次数据;其他数据均需更新,回避单位需要涉及招标人,招标代理,投标人信息。 针对敏感性字段,甲方代表姓名,联系方式,工作单位,身份证号,回避单位信息,回避评委信息使用sm2国密加密。 |
逻辑说明 | 具体字段取值逻辑在传参已说明 |
返回参数 | { code:(略) msg: } |
返回说明 | code:(略) msg:(略) |
| |
二.1.7、下发抽取结果接口
接口编号 | 地市开发,专家库系统请求 |
接口路径 | rest/infotozhuanjiaht/sendexpertinfo |
传参 | { token:(略) platformcode:(略) projectguid:(略) piciguid:(略) statuscode:(略) zhuanye:(略) project_zy_guid:(略) pbzyname:(略) pbzyno:(略) specexpnum:(略) querencanjianum:(略) expertinfo:(略) pingweiguid:(略) pwname:(略) shenfenzh:(略) },...] },...] } |
传参说明 | token:(略) platformcode区分不同平台; projectguid:(略) zhuanye:(略) piciguid抽取批次标识,如果涉及补抽逻辑,按照批次推送下发。 数据抽取前添加限制,项目开标时间到了才允许抽取。 |
逻辑说明 | 具体字段取值逻辑在传参已说明 |
返回参数 | { code:(略) msg: } |
返回说明 | code:(略) msg:(略) |
备注 | 此接口逻辑主要为专家库下发专家抽取结果,各地市开发,专家库系统抽取完成后调用推送专家,专业数据。 |
二.1.8、接收通知结果接口
接口编号 | 专家库系统开发,地市交易平台调用 |
接口路径 | rest/infotozhuanjiaht/receiveresultinfo |
传参 | { token:(略) platformcode:(略) projectguid:(略) statuscode:(略) zhuanye:(略) project_zy_guid:(略) pbzyname:(略) pbzyno:(略) specexpnum:(略) querencanjianum:(略) expertinfo:(略) pingweiguid:(略) pwname:(略) shenfenzh:(略) feedbackstatus:(略) },...] },...] } |
传参说明 | token:(略) platformcode区分不同平台; projectguid为组建项目标识; zhuanye为组建项目下专业信息,节点下expertinfo为专家信息,根据专家通知状态释放项目下对应专业未参加评委信息,专家信息使用sm2加密传输。 如存在补抽逻辑,该接口需要在补抽前调用一次,数据推送当前项目当前专业下确认参加评委信息;项目通知结束后调用一次,数据推送当前项目下抽取所有专家信息。 |
逻辑说明 | 具体字段取值逻辑在传参已说明 |
返回参数 | { code:(略) msg: } |
返回说明 | code:(略) msg:(略) |
备注 | 此接口逻辑主要为专家库新系统接收地市送来的对应项目的专家通知结果,接口由专家库系统开发,各地市在对应项目通知结束后调用,专家库根据专家的通知状态来释放评委。 |
二.1.9、获取专业下满足条件人数接口
接口编号 | 和田公共资源交易平台系统开发,三方调用 |
接口路径 | rest/infotozhuanjiaht/getexpertcountbycode |
传参 | { token:(略) platformcode:(略) zycode:(略) projectguid:(略) projectguid:(略) } |
传参说明 | token:(略) zycode:(略) platformcode:(略) projectguid:(略) 此接口主要用于各地市新增专业时查看专业下满足条件人数。 |
逻辑说明 | 具体字段取值逻辑在传参已说明 |
返回参数 | { code:(略) msg:(略) zylist:(略) { zy_code:(略) expert_count:(略) }, { zy_code:(略) expert_count:(略) },... ] } |
返回说明 | code:(略) msg:(略) zylist:(略) |
| |
三、接口安全验证说明
说明:(略)
一、生成规则
(1)失效时间戳(Unix时间戳)–P1
将未来的某个时间作为凭证的失效时间点(当前时间+5分钟,5分钟内有效),并将其转换为Unix时间戳,示例:(略)
(2)将P1进行UrlEncode,并转换成Base(略)编码-P2(待签名字符串)
(3)使用AppSecret对P2进行HMAC-SHA1签名,得到P3
l.NET示例代码如下:
System.Text.ASCIIEncodingencoding=newSystem.Text.ASCIIEncoding();byte[]keyByte=encoding.GetBytes(AppSecret);HMACSHA1hmacsha1=newHMACSHA1(keyByte);byte[]messageBytes=encoding.GetBytes(P2);byte[]P3=hmacsha1.ComputeHash(messageBytes);
lJAVA示例代码如下:
SecretKeySpec signingKey = new SecretKeySpec(AppSecret.getBytes(UTF-8), HmacSHA1);
Mac mac = Mac.getInstance(HmacSHA1);
mac.init(signingKey);
byte[] P3= mac.doFinal(P2.getBytes(UTF-8));
(4)将P3转换成Base(略)编码,得到P4
l.NET示例代码如下:
string encodedStr = Convert.ToBase(略)String (bs);
encodedStr = encodedStr.Replace ('+', '-').Replace ('/', '_');
lJAVA示例代码如下:
Base(略)Util.encode(b).replace(+, -).replace(/, _);
(5)将AppKey、P2、P4合并起来,形成凭证。
Token=AppKey+ @+P4+@+P2
二、验证方式
(1)拆解ValidateData得到AppKey、P4、P2
(2)根据AppKey得到AppSecret,若找不到则校验失败终止
(3)服务端应存储AppKey、AppSecret的对应关系
(4)对P2进行HMAC-SHA1签名
(5)将签名后的值与P4,若相等继续,若不等则校验失败终止
(6)比较P2与当前时间,若P2大于当前时间则校验通过,否则失败终止
三、其他说明
ValidateData组成中AppKey与AppSecret在对接前需双方约定好,作为固定配置项使用。