泰州市检票设施租赁服务招标公告(泰州市体育局2026)
一、比选信息
项目名称: 2026江苏省城市足球联赛检票设施租赁服务项目(泰州赛区)
项目编号: JSZC-321200-FW2026-12997
比选方式: 公开比选
评审方法: 综合评分法
服务品目: 商务服务/租赁服务(不带操作员)/其他租赁服务
项目预算: ¥488400.0
项目地点: 泰州市海陵区鼓楼南路368号
评审开始时间: 2026-04-21 17:42
评审地点: 会议室
采购单位: 泰州市体育局机关
联系人姓名: 综合处
联系电话: 19975156006
固定电话:
响应开始时间: 2026-04-16 17:40
响应截止时间: 2026-04-21 17:40
二、比选供应商资格条件
具有良好的商业信誉和健全的财务会计制度
具有独立承担民事责任的能力
有依法缴纳税收和社会保障资金的良好记录
具有履行合同所必需的设备和专业技术能力
参加政府采购活动前三年内,在经营活动中没有重大违法记录
本项目涉及的法律、行政法规规定的其他特定资格条件
2026江苏省城市足球联赛检票设施租赁服务项目(泰州赛区).pdf
附件1:苏超预约购票平台接口文档V2.0.docx
附件2:参考格式.docx
江苏省服务务类W苏服采上:商城2026江苏省城市足球联赛检票设施租赁服务项目(泰州赛区)采购单位:泰州市体育局机关项目编号:JSZC-321200-FW2026-12997评审方法:综合评分法服务品目:商务服务/租赁服务(不带操作员)/其他租赁服务项目联系人:综合处联系人电话:19975156006https://js.fwgov.cn/CONTENTS目录1比选公告2供应商须知3比选需求1.比选公告我单位泰州市体育局机关对2026江苏省城市足球联赛检票设施租赁服务项目(泰州赛区)采用网上比选进行采购。欢迎有资格的供应商参加比选。一、比选项目内容(一)项目名称:2026江苏省城市足球联赛检票设施租赁服务项目(泰州赛区)(二)项目编号:JSZC-321200-FW2026-12997(三)项目预算:¥488,400(四)项目地点:泰州市海陵区鼓楼南路368号(五)比选方式:公开比选(六)评审方法:综合评分法(七)服务品目:商务服务/租赁服务(不带操作员)/其他租赁服务(八)所属行业:租赁和商务服务业(九)服务周期:150天(十)其他:本项目不接受联合体参与比选二、资格要求供应商是指参加网上比选竞争,并符合比选文件规定条件的法人、其他组织或者自然人。合格的供应商应符合下列条件:1.具有良好的商业信誉和健全的财务会计制度2.具有独立承担民事责任的能力3.有依法缴纳税收和社会保障资金的良好记录4.具有履行合同所必需的设备和专业技术能力5.参加政府采购活动前三年内,在经营活动中没有重大违法记录6.本项目涉及的法律、行政法规规定的其他特定资格条件三、响应时间响应开始时间:2026-04-1617:40,响应截止时间:2026-04-2117:40四、项目评审预计评审时间:2026-04-21 17:42会议室的评审时间将在响应结束之后确定,并将通过平台消息通知所有参与评审地点:备注:具体评审的供应商。五、联系方式采购人:泰州市体育局机关项目联系人:综合处联系人电话:19975156006固定电话:暂无地址:泰州市海陵区鼓楼南路368号六、比选文件澄清修改(一)采购人对已发出的比选文件进行必要澄清或者修改的,将在网上比选开始时间前发布更正公告。(二)采购人在网上比选开始时间前,有权决定延长比选开始时间。应商须知一、比选响应(一)供应商凭用户名和密码登录比选响应系统,在网上比选截止时间前完成比选响应。(二)供应商应对用户名和密码妥善保管,如被他人盗用投标,后果自负。(三)供应商应当对比选文件提出的要求和条件作出实质性响应。(四)应急保障:供应商在操作比选时遇到问题,请按照比选邀请公布的“比选系统操作咨询”方式咨询。(五)供应商应当在比选响应截止时间前,将比选响应文件上传至比选响应系统。二、比选响应文件语言、计量单位、货币、技术标准和编制(一)供应商提交的响应文件、技术文件和资料,包括图纸中的说明等,应当使用中文。响应文件中若有英文或其他语言文字的资料,应提供相应的中文翻译资料。对不同文本响应文件的解释发生异议的,以中文文本为准。(二)供应商所使用的计量单位应为国家法定计量单位。(三)供应商应用人民币报价。(四)供应商所使用的技术标准应遵循国家最新标准及规范。三、比选费用(一)供应商应承担所有与准备和参加比选有关费用,采购人在任何情况下均无义务和责任承担这些费用。(二)本次比选服务商城不收取任何费用。四、比选报价(一)比选需求为一个包,若无具体要求则供应商应整体报价。(二)供应商应保证本次报价中及服务期内派驻本项目服务团队的每位员工的最低月工资标准不低于本地区最低标准;工作时间符合劳动法的规定。供应商应自行为员工办理必须的保险,有关人员伤亡及第三者责任险均由供应商考虑并包含在报价中。(三)供应商任何错漏、优惠、竞争性报价不得作为减轻责任、减少服务、增加收费、降低质量的理由。五、比选评审(一)比选工作由采购人组织,对供应商的响应文件开始评审。(二)符合性审查。依据比选文件的规定,从响应文件的有效性、完整性和对比选文件的响应程度进行审查,以确定是否对比选文件的实质性要求作出响应。符合性检查资料表如下:序号实质性要求1供应商需承诺闸机设备能够按招标人提供的《预约购票平台接口文档V2.0》配合完成与江苏省城市足球联赛预约购票平台的设备平台对接,完成在线检票的同时,检票数据第一时间回流,提供承诺函加盖公章。(格式自定,未提供承诺作无效响应处理)(三)有下列情形之一的,比选响应文件为无效响应文件(1)响应文件未对实质性要求作出实质性响应的;(2)响应文件含有采购人不能接受附加条件的;(3)评审小组认为供应商的报价明显低于成本价或市场合理水平,有可能影响产品质量或者不能诚信履约的,应当要求其在合理的时间内提供书面说明,必要时提交相关证明材料;供应商不能证明其报价合理性的,评审小组应当将其作为无效响应处理;(4)响应文件中提供虚假材料、隐瞒重要事实或存在重大遗漏,影响采购公正性或可能导致履约风险的。六、评审标准序号评分因素评分标准评分类型满分1报价满足比选文件要求且投标价格最低的总投标报价为评标基准价,其价格分为20分;其他投标人的价格分按下列公式计算:投标报价得分=(评标基准价/投标报价)×20分。1、小微型企业价格扣除(1)本项目对小型和微型企业给予10%的扣除价格,用扣除后的价格参与评审。(2)供应商需按照采购文件的要求提供相应的《企业声明函》。(3)企业标准请参照《关于印发中小企业划型标准规定的通知》(工信部联企业〔2011〕300号)文件规定自行填写。2、残疾人福利单位价格扣除客观分20(1)本项目对残疾人福利性单位视同小型、微型企业,给予10%的价格扣除,用扣除后的价格参与评审。(2)残疾人福利单位需按照采购文件的要求提供《残疾人福利性单位声明函》。(3)残疾人福利单位标准请参照《关于促进残疾人就业政府采购政策的通知》(财库〔2017〕141号)。3、监狱和戒毒企业价格扣除2026江苏省城市足球联赛检票设施租赁服(1)本项目对监狱和戒毒企业(简称监狱企业)视同小型、微型企业,给予10%的价格扣除,用扣除后的价格参与评审。(2)监狱企业参加政府采购活动时,需提供由省级以上监狱管理局、戒毒管理局(含新疆生产建设兵团)出具的属于监狱企业的证明文件。供应商如不提供上述证明文件,价格将不做相应扣除。(3)监狱企业标准请参照《关于政府采购支持监狱企业发展有关问题的通知》(财库〔2014〕68号)。4、残疾人福利单位、监狱企业属于小型、微型企业的,不重复享受政策。声明函格式见附件。务项目(泰州赛区)2类似业绩2023年1月1日以来(合同签订时间为准),供应商承担过的类似大型活动设备租赁案例,每提供一个得4分;注:项目须提供合同复印件加盖公章,本项最高20分。客观分203技术服务要求响应完全响应项目技术服务要求得20分,每有一条负偏离扣2分,扣完为止。注:提供技术服务要求偏离表作为得分依据,格式见附件客观分204服务总体模式与项目管理运作方案根据响应单位针对本项目制定的总体服务方案评定:服务总体模式清晰、配套措施全面,管理运作方案贴合本项目实际需求,针对性强,有完善的人员配置说明及人员调度保障措施、应变安排措施的得15分;服务总体模式内容较为详细,能够基本贴合项目需求,管理运作方案、人员配置说明以及人员调度和应变措施较好的得10分;服务总体模式内容简单、管理运作方案针对性欠缺、人员配置说明以及人员调度和应变措施较差的得5分;未提供相关说明不得分。主观分155设备配置情况根据响应单位针对本项目服务配置的设备情况评定:配置的设备贴合实际,完全满足项目需求得10分;配置的设备基本满足实际需求得7分;配置的设备未能够贴合项目实际情况、不够完善合理的得4分;未提供相关4主观分105设备配置情况2026江苏省城市足球联赛检票设施租赁服说明不得分。注:响应单位须提供详细的设备清单、技术参数说明。务项目(泰州赛区)6管理制度方案根据响应单位针对本项目服务制定的各项相关责任及规章管理制度方案评定:制度方案详实具体、科学合理、贴合项目实际情况需求的得6分;制度方案较为详细、较为合理、较为贴合项目需求的得4分;制度方案不够详细、与项目需求贴合度较差或合理性较差得2分;未提供相关说明不得分。主观分67应急预案根据响应单位针对本项目服务中可能出现的突发事件的应急措施及纠纷处置措施:方案内容对于突发事件描述清晰、处理方式合法合规且灵活可行,有利于顺利解决问题的得9分;方案内容对于突发事件描述较为清晰、处理方式较为可行的得6分;方案内容对于突发事件描述简单、处理方式简单、可操作性欠缺的得3分;未提供相关说明不得分。主观分9七、评审依据评审的依据为比选文件和响应文件(含有效的补充文件)。评审小组判断响应文件对比选文件的响应,仅基于响应文件本身而不靠外部证据。八、成交通知(一)自成交供应商确定之日起2个工作日内,发出成交通知书,并在服务类网上商城公告成交结果。(二)结果公告发出同时,采购人将以短信以及平台系统页面的形式发出《成交通知书》。九、关于质疑、询问(一)询问、质疑处理原则。在服务商城实施采购活动中出现询问、质疑等问题,按照谁采购谁负责、谁发起谁举证的原则,由服务商城平台统一受理询问、质疑工作。(二)不涉及交易,相关行为违反服务商城管理规则的,由服务商城平台负责解释处理,并在7日内给予回复。(三)涉及交易,相关行为违反法律法规和有关规范性文件规定的,由服务商城平台报送采购人,由采购人依据相关法律规定处理,并在30日内给予供应商答复,并将答复情况抄告服务商城平台。(四)供应商提出询问质疑时,应当向服务商城平台提交询问质疑书面材料,同时提供相关证据材料。未按程序和要求提出询问质疑的,或者未按要求提供证据材料的,服务商城平台一律不予受理。证据的种类和有效性以相关法律规定为准。十、签订合同(一)采购人与成交供应商应当在成交通知书发出后30天内,按照比选文件确定的合同文本以及采购标的、采购金额和服务要求等事项签订采购合同。(二)比选文件、成交供应商的响应文件及有效承诺文件等,均为签订合同的依据。(三)成交供应商未按照比选文件确定的事项签订合同,或者与采购人另行订立背离合同实质性内容协议的,将承担相关责任。(四)采购人不得向成交供应商提出超出比选文件以外的任何要求作为签订合同的条件,不得与成交供应商订立背离比选确定的合同文本以及采购标的、采购金额和服务要求等实质性内容的协议。(五)除不可抗力等因素外,成交通知书发出后,采购人改变成交结果,或者成交供应商无正当理由拒绝签订采购合同的,应当承担相应的责任,受到平台相关处罚。选需求一、项目概况为保障苏超常规赛主场赛事组织有序,根据省组委会和***门要求,观众入场检票需通过预检和检票两个环节,其中预检采用手持PDA的形式,检票则采用具备人脸识别的闸机形式。二、服务需求数量要求:1.手持PDA每场赛事需47个;2.闸机(具备人脸识别功能)每场赛事需40个;3.每场需技术人员4人,每场赛事需工作两天(赛前一天进行安装和志愿者的培训,比赛当天进行现场技术保障)。时间安排:第一轮5月2日,第二轮5月30日,第三轮7月4日,第四轮8月8日,第五轮8月22日,第六轮9月19日;轮次时间安排如有变动以最新安排为准。技术服务要求:1.支持携带身份证观众的强实名检票入场能力;2.支持没有携带身份证观众的强实名检票入场能力;3.支持持护照的外籍观众的实名检票入场功能;4.支持网络异常情况下观众有序检票入场的应急预案;5.支持观众检票入场后的座位小票打印能力;6.检票闸机支持工作人员芯片证件的强实名验证能力;7.检票闸机及PDA支持门票及证件的分组验票可配置化的功能;8.支持通过多种方式接入赛事场馆公安指挥中心的功能;9.支持与属地公安治安管控平台检票数据的实时推送功能;10.检票软硬件系统支持杜绝假、串证(票)的功能;★供应商需承诺闸机设备能够按招标人提供的《预约购票平台接口文档V2.0》配合完成与江苏省城市足球联赛预约购票平台的设备平台对接,完成在线检票的同时,检票数据第一时间回流,提供承诺函加盖公章。(格式自定,未提供承诺作无效响应处理)三、商务要求(1)项目报价包括完成本项目约定服务内容的报酬及完成约定服务内容所需支出的必要费用的总和,不再额外支付其他任何费用;项目6场次总预算48.84万元,报价超过预算作无效响应处理。(2)付款方式:每3场次结算一次。(3)本项目委托江苏经纬会计师事务所有限公司作为比选代理机构,代理机构按照《江苏省政府采购代理服务收费指导意见》收费标准收取代理服务费,供应商考虑在本次响应报价成本中,比选工作完成后由成交供应商支付。(代理机构联系电话:18652636963)。苏超预约购票平台接口文档2025年8月目录一、概述1(一)总体说明11.硬件支持内容12.设备对接方案13.平台对接方案24.厂家需要配合改造的工作内容2(二)接口调用规范说明21.接口请求URL地址....................32.调用方式33.APP_ID与APP_SECRET介绍....................34.统一请求参数....................35.统一响应参数....................46.签名算法....................47.接口调用信息,敏感字段加密规则88.接口响应信息,敏感字段解密规则8二、功能接口8(一)票务核验接口(设备对接)....................81.接口用途....................82.请求地址....................83.请求参数说明....................84.响应结果....................9(二)票务核销接口(设备对接)....................101.接口用途....................102.请求地址....................103.请求参数说明....................104.响应结果....................11(三)分页查询条码接口(平台对接)....................121.接口用途122.请求地址123.请求参数说明124.响应结果12(四)离线核销记录上传接口(平台对接)171.接口用途....................172.请求地址....................173.请求参数说明....................174.响应结果....................18附录A二维码信息及样例....................19附录B请求方法代码样例....................2112、概述(一)总体说明为满足城市足球联赛观赛人员入场检票业务需求,票务平台提供设备对接及平台对接两种方式。设备对接需要通过闸机或手持验票机等设备解决人证核验和票务核验问题,相关设备需要调用苏超预约购票平台接口实现票务核验和票务核销。1.硬件支持内容若进行设备对接,相关设备需要具备身份证识别能力,通过识别身份证信息并调用平台接口实现票务核验及核销。2.设备对接方案设备对接流程图设备对接流程设备供应商设备现场运维商苏超预约购票平台实2.现场安装设备,拿到平台的施3.设备检票软件接受二维码,设备参数二维码,在设备上1.提供设备基础参数二维码配并解析二维内容保存在本地扫码配置置4.设备读取身份证信息票务5.设备调用平台核票务核查接口查7.设备上显示门票场次信息6.提供票务核查接口票务核8.设备检票,调用平台核销接销9.提供票务核销接口口具体流程如下:(1)苏超预约购票平台通过基础参数生成二维码(二维码构成规则及生成样例见附录A二维码信息及样例);(2)设备读取二维码,解析并将二维码包含的业务信息存储到本地;(3)设备读到当前刷卡人的身份证信息并调用平台“票务核验接口”,判断当前人是否已购买当天的场次门票,返回核查结果;(4)在需要进行票务核销时,设备调用“票务核销接口”完成门票核销。3.平台对接方案具体流程如下:(1)厂家需要从苏超预约购票平台研发人员处获取关键配置信息(接口地址前缀,APP_ID,APP_SECRET,SM2密钥等);(2)厂家调用对应的接口,进行相应的动作(注意敏感信息的加解密)。4.厂家需要配合改造的工作内容(1)若需设备对接,设备需支持身份证识别、二维码扫描能力;(2)若需设备对接,设备需要支持更改控制板程序,厂家根据情况而定。(二)接口调用规范说明1.接口请求URL地址分正式环境接口地址和测试环境地址,仅前半部分域名不同(接口前缀获取方式:若是设备对接,见附录A二维码信息及样例;若是平台对接,从开发人员处获取),后半部分的路径和请求参数相同(具体路径及请求参数参照章节“二、功能接口”对应接口)。2.调用方式使用https协议调用接口。请求方式为post方式,除非接口方法特别说明支持get方式。请求和返回的数据格式均为:json3.APP_ID与APP_SECRET介绍请联系平台对接人员获取APP_ID与APP_SECRET。APP_ID:平台分配的第三方授权ID,调用接口时需要提供该ID,在本文档中也称为:第三方授权ID。APP_SECRET:平台分配给第三方的密钥,用于数据签名,详见签名算法;4.统一请求参数请求平台接口时,统一使用两个参数,这两个参数包含具体第三方授权ID、业务数据参数具体如下:参数类型是否必传描述appIdString是平台分配的第三方授权ID,详见APP_ID与APP_SECRET介绍具体业务参数String是具体业务请求所需的参数列表见功能接口。请求体示例:{"appId":"{{appId}}","checkip":"{{checkip}}","devicecode":"{{devicecode}}","barcode":"CUMS1000101202305082015099672","optcode":"{{optcode}}","parkcode":"{{parkcode}}","checkway":"{{checkway}}"}5.统一响应参数响应参数暂不进行数据签名。参数类型描述successboolean是否成功,true:成功,false:失败;codeString200成功,其他错误msgString错误描述,比如失败原因dataString具体业务返回的数据6.签名算法为防止发送的请求被篡改、防止请求重放攻击,调用方发送的所有请求的请求头中加入时间戳(timestamp)和签名(sign),被调用方对请求进行验签,若签名失败或时间戳过期(请求超过60s),则将请求丢弃。签名计算规则如下:将时间戳作为一个参数,和请求中的所有参数一起,将所有的参数名按照ASCII字典序排序,参数名及对应参数值以key=value形式拼接,参数间使用”&”符号连接,并拼接上通讯密钥APP_SECRET作为待签名字符串,最后使用SHA256签名算法计算待签名字符串的签名结果即为签名sign的值。详细示例见附录A请求方法样例,具体步骤如下:(1)生成待签名字符串。对于如下的请求参数:varparams={appId:'12345',stringParam:'字符串',numberParam:2,booleanParam:true,nullParam:null,blankParam1:'',blankParam2:'',data:{id:'1',name:'1',detail:[{id:'11',name:'11'},{id:'12',name:'12'}]},arrayParam1:[1,2,3],arrayParams2:[{id:'2',name:'2'},{id:'3',name:'3'}]}首先将请求参数中的每一个一级字段按0-9-A-Z-a-z的顺序排序(ASCII字典序),若遇到相同首字母,则看第二个字母,以此类推。注意:值为对象或数组的参数,需拆分成单个参数。如data参数拆分成:data[id]=1,data[name]=1,data[detail][0][id]=11,data[detail][0][name]=11,data[detail][1][id]=12,data[detail][1][name]=12。arrayParam1拆分成:arrayParam1[0]=1,arrayParam1[1]=2,arrayParam1[2]=3参数转换算法见下方算法示例。排序后的参数以key=value形式使用“&”字符连接,并拼接上通讯密钥key值(注意:通讯密钥key直接拼接),即为待签名字符串。假设APP_SECRET值如下:(具体以分配参数为准)wKvDvgkX1v7mZpunIPtD_z68vwtH0w4m则对应的待签名字符串如下所示:appId=12345&arrayParam1[0]=1&arrayParam1[1]=2&arrayParam1[2]=3&arrayParams2[0][id]=2&arrayParams2[0][name]=2&arrayParams2[1][id]=3&arrayParams2[1][name]=3&booleanParam=true&numberParam=2&data[detail][0][id]=11&data[detail][0][name]=11&data[detail][1][id]=12&data[detail][1][name]=12&data[id]=1&data[name]=1&stringParam=字符串×tamp=1648610757715wKvDvgkX1v7mZpunIPtD_z68vwtH0w4m注意:没有值的参数,包含空字符串、空格、全空白字符、若干制表符等,如:"","","","\t","\n","\r"以及空字符串、空格、全空白字符、若干制表符的组合,接口无需传入,亦无需参与计算签名。(2)计算签名sign值。使用SHA256签名算法计算待签名字符串的SHA256值注意:根据HTTP协议要求,传递参数的值中如果存在特殊字符(如:&、@等),则该值需要做URLEncodingUTF-8编码处理,这样接收方才能正确接收到参数信息。这种情况下,待签名数据应该是原始值而不是Encoding编码之后的值。(3)timestamp和sign放入请求头。XHeadersPayloadPreviewResponseInitiatorTimingCookiesPragma:no-cacheReferer:http://localhost:18766/rights/myProfits.html?a=1648610756837&deptId=1000144Sec-Fetch-Dest:emptySec-Fetch-Mode:corsSec-Fetch-Site:same-originSign:F549C89F4DAEO2EB442CCFD54808C87883F77E4E6B29DC147E103BA51C09A782Timestamp:1648610757715User-Agent:Mozilla/5.0(iPhone;CPUiPhone0s10311ikeMacosx)AppleWebKit/603.1.30(KHTML,likeGecko)Version/10.0Mobile/14E304Safari/602.1X-Requested-With:XMLHttpRequest7.接口调用信息,敏感字段加密规则调用平台接口,进行输入传参时,对于一些敏感字段需要进行加密,以防止信息泄露,字段采用SM2加密算法(SM2全局公钥联系平台运维团队获取,可随时更新);需要加密的常见字段:手机号码、身份证号码、票型二维码等。8.接口响应信息,敏感字段解密规则调用平台接口,平台会对于一些敏感字段进行加密,第三方平台需要解密,以获取明文信息,字段采用SM2解密算法(SM2第三方专属私钥联系平台运维团队获取,可随时更新);2、功能接口(一)票务核验接口(设备对接)1.接口用途通过本接口可以查询门票是否可用的信息(支持二维码、身份证)2.请求地址/tkt/check/checkticketBefore3.请求参数说明参数类型是否必传描述appIdString是平台分配的第三方授权IDcheckwayString是检票方式1:闸机; 4:手持机;barcodeString否条码、身份证至少填一个idcardString否条码、身份证至少填一个parkcodeString是场馆编号optcodeString是检票员编号checkipString是检票IPdevicecodeString是设备编号参数示例:{"appId":"A00000001","checkip":"192.168.0.20","devicecode":"1001000004","barcode":"CUMS0382824031100100108056209","idcard":"320222************234","optcode":"408","parkcode":"10010010","checkway":"1"}4.响应结果返回结果为统一响应参数(详见“接口调用规范说明”章节,“5.统一响应参数”小节)其中,参数中data中数组参数如下:参数类型描述ticketmodenameString产品名称ticketmodeltypenameString票型种类usercountString可进人数newSeatNameString座位号barcodeAreaNameString区域begindateString开始日期enddateString结束日期checktimeString检票时间checkvoiceString检票语音checkstatusint门票状态:0:正常;1:已使用;2:已过期;3:已锁定;4:未到有效期;tempIdString此次检票的记录Id,用于核销(二)票务核销接口(设备对接)1.接口用途配合检票查询接口,实现检票。2.请求地址/tkt/check/checkticketAfter3.请求参数说明参数类型是否必传描述appIdString是平台分配的第三方授权IDcheckwayString是检票方式1:闸机; 4:手持机;barcodeString否条码idcardString否身份证parkcodeString是检票点optcodeString是检票员编号checkipString是检票IPdevicecodeString是设备编号tempIdString是检票查询接口返回tempIdcheckcountInteger否不传默认1参数示例:{"appId":"A00000001","checkip":"192.168.0.20","devicecode":"1001000004","tempId":"1117766380057530368","checkcount":1,"optcode":"408","parkcode":"10010010","checkway":"1"}4.响应结果返回结果为统一响应参数(详见“接口调用规范说明”章节,“5.统一响应参数”小节)失败示例:{"code":500,"msg":"已过期,请重新检票","success":false}成功示例:{"code":200,"data":"OK","msg":"","success":true}(三)分页查询条码接口(平台对接)1.接口用途全量查询:默认获取全量条码数据,分页查询,每页固定1000条。增量查询:若传时间,则获取对应时间内有变动的数据。2.请求地址/tkt/check/queryBarcodeListByPlat3.请求参数说明参数类型是否必传描述appIdString是平台分配的第三方授权IDdateBeginString否查询开始时间(yyyy-MM-dd HH:mm:ss)dateEndString否查询结束时间(yyyy-MM-dd HH:mm:ss)pageInteger是当前页码参数示例:{"appId":"A00000001","page":1}4.响应结果返回结果为统一响应参数(详见“接口调用规范说明”章节,“5.统一响应参数”小节)备注:data已压缩并加密,需要用SM2密钥解密并还原,详细代码样例见《附录C响应方法代码样例(含报文解密及压缩还原)》其中,参数中data中参数如下:参数类型描述versionString版本号isAreallimitEqmInt是否区域闸机限制:1限制,0不限制endRowInt结束行firstPageInt第一页hasNextPageBoolean是否有下一页hasPreviousPageBoolean是否有上一页isFirstPageBoolean当前页是否是第一页isLastPageBoolean当前页是否是最后一页lastPageInt最后一页页码listArray条码列表list.barcodeAreaString条码对应观赛区域list.barcodeString票型二维码list.beforechecktimeInt提前检票时间(分钟)list.begindateString检票开始时间list.certificateListArray实名制信息list.certificateList.certnoString身份证号list.certificateList.realnameString姓名list.checkstatusInt门票状态 0正常 1已使用 2已过期 3已锁定 4.未到有效期list.islockInt是否锁定(1:是;0:否;default:0),锁定状态下,不可操作(如:换票、检票、退款...)list.enddateString检票结束时间list.parkCodeString检票点编号list.parkNameString检票点名称list.ticketmodeltypenameString票型种类list.newSeatNameString座位号list.ticketmodeltypenameString产品名称list.usercountInt可进人数list.eqlistArray条码区域对应设备列表list.eqlist.eqcodeString设备编号pageNumInt当前页码pageSizeInt每页大小pagesInt页数prePageInt上一页sizeInt当前页实际记录数startRowInt开始行数totalInt数据总数失败示例:{"code":500,"msg":"请求超时","success":false}成功示例:{"code":200,"data":{"endRow":152,"firstPage":1,"hasNextPage":false,"hasPreviousPage":true,"isFirstPage":false,"isLastPage":true,"lastPage":2,"list":[{"barcode":"CUMS1262591123100020208069856","begindate":"2024-08-0616:28:46","certificateList":[{"certno":"******************","isDelete":0,"realname":"ws"}],"checkstatus":0,"enddate":"2025-08-0523:59:59","faceCapture":false,"faceCompare":false,"islock":0,"msg":"","parkCode":"10001001","parkName":"海昌海洋公园景区","ticketmodeltypename":"年卡票/成人票","ticketmodename":"家庭年卡-一人一票测试","usercount":"1"},{"barcode":"CUMS1372762561100020108062988","begindate":"2024-08-0613:37:28","certificateList":[{"certno":"******************","isDelete":0,"realname":"123"}],"checkstatus":0,"enddate":"2026-10-1423:59:59","faceCapture":false,"faceCompare":false,"islock":0,"msg":"","parkCode":"10001001","parkName":"海昌海洋公园景区","ticketmodeltypename":"门票/优惠票","ticketmodename":"元旦活动1+","usercount":"1"},//...],"navigateFirstPage":1,"navigateLastPage":2,"navigatePages":8,"navigatepageNums":[1,2],"nextPage":0,"pageNum":2,"pageSize":100,"pages":2,"prePage":1,"size":52,"startRow":101,"total":155},"msg":"","success":true}(四)离线核销记录上传接口(平台对接)1.接口用途离线检票完成后将检票记录上传至票务平台。2.请求地址/tkt/check/checkTicketUploadByPlat3.请求参数说明参数类型是否必传描述appIdString是平台分配的第三方授权IDchecktypeString是检票模式:0 在线、离线检票checkwayString是检票方式1:闸机; 4:手持机;checkTimeString是检票时间(yyyy-MM-dd HH:mm:ss)barcodeString是条码idcardString是身份证(使用SM2加密)parkcodeString否检票点optcodeString否检票员编号checkipString否检票IPdevicecodeString否设备编号参数示例:{"checkip":"127.0.0.1","checkway":"1","devicecode":"1000100001","barcode":"CUMS1218545277100020208067691","idcard":"048f15211734889cad2e5a199dc1bba3f05e52b65901a9977dca3ab698ba5cc69d1b33f034e7a95d53431ea8ec1cc2d91962d6364d9879678a94df010b10a324ccb1d1995ed07d04accb3ca3dbf6ee1b9addc66ff6f427a9eeb8f5817a311bd2b41ec2ee2e94d15207f20f1a8ce73e37a43599","checkTime":"2025-08-0717:00:00","optcode":"126","parkcode":"10001001","appId":"A00000001",}4.响应结果返回结果为统一响应参数(详见“接口调用规范说明”章节,“5.统一响应参数”小节)失败示例:{"code":500,"msg":"已过期,请重新检票","success":false}成功示例:{"msg":"success","code":200}附录A二维码信息及样例闸机注册二维码二维码包含如下信息,使用#进行分割:码类型#设备编号#核销点编号#核销员编号#appId#appSecret#接口Url地址(前缀部分)二维码样例报文:81#1000200007#10002004#414#A00000001#oKVfu5xB0efFIq8uxOCk5c3XRvKdec#http://121.229.159.7:9808/ticket-dev/web-api二维码生成样例:品部附录B请求方法代码样例(含签名及敏感字段加密)packagecom;importcn.hutool.crypto.SmUtil;importcn.hutool.crypto.asymmetric.KeyType;importcn.hutool.crypto.asymmetric.SM2;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importorg.apache.commons.codec.digest.DigestUtils;importorg.apache.commons.lang.StringUtils;importorg.apache.http.HttpEntity;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.StringEntity;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.util.EntityUtils;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.Collections;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.TreeMap;publicclassDemo{publicstaticStringPRIVATE_KEY="c026514a8da049fb7f145bdc74d579f08b923788bab0be3cd299c7d613ffe015";//票务平台提供公钥,请做好本地保存(后续会定时替换该公钥,请做好可灵活动态配置保存)publicstaticStringPUBLIC_KEY="045318fb6e5b2d016ff939c1b0cc4eba470c9d0f976985e4bbab96f1054b33edb8cfcf7cd862e9e9820cf8b110fcc375b7a7e9715c4482c992fe15c908b94922bc";publicstaticvoidmain(String[]args){//身份证采用SM2加密的方式Stringcertnosign=encryptHex("360124*****8090",PUBLIC_KEY);System.out.println(certnosign);StringdecyptStr=decryptStr(certnosign,PRIVATE_KEY);System.out.println(decyptStr);Mapcontent=newHashMap();content.put("A","MY202408141223");content.put("B","测试");content.put("身份证字段",certnosign);System.out.println(doPost("https://xxxx/qrcodecheckxxx",content));}publicstaticStringdecryptStr(StringdecryptStr,StringpriKey){SM2sm2=SmUtil.sm2(priKey,null);returnsm2.decryptStr(decryptStr,KeyType.PrivateKey);}publicstaticStringencryptHex(StringencryptStr,StringpublicKey){SM2sm2=SmUtil.sm2(null,publicKey);returnsm2.encryptHex(encryptStr,KeyType.PublicKey);}publicstaticStringdoPost(Stringurl,Mapmap){//添加当前请求时间戳Mapheaders=newHashMap();headers.put("Content-Type","application/json");longtimestamp=System.currentTimeMillis();headers.put("timestamp",String.valueOf(timestamp));//appidmap.put("appId","APPID");map.put("timestamp",String.valueOf(timestamp));//加密signMapsignMap=newTreeMap();//递归参数加密第一次key为空getStringMap(signMap,map,"");Stringsign=signWithSha256(signMap,"appsecret","UTF-8");headers.put("sign",sign);returndoPostByJson(url,JSONObject.toJSONString(map),headers,"utf-8");}/***post请求**@paramurl*@paramcontent*@paramheaders*@paramcharset*@return*/publicstaticStringdoPostByJson(Stringurl,Stringcontent,Mapheaders,Stringcharset){StringresponseBody="";CloseableHttpClientclient=null;CloseableHttpResponseresponse=null;HttpEntityentity=null;try{client=HttpClients.createDefault();HttpPostpostMethod=newHttpPost(url);RequestConfigrequestConfig=RequestConfig.custom().setSocketTimeout(30000).setConnectionRequestTimeout(15000).setConnectTimeout(15000).build();postMethod.setConfig(requestConfig);if(headers==null){//defaultpostMethod.addHeader("Connection","Keep-Alive");postMethod.addHeader("Charset",charset);postMethod.addHeader("Content-Type","application/json");}else{Iterator>it=headers.entrySet().iterator();while(it.hasNext()){Map.Entryentry=it.next();postMethod.addHeader(entry.getKey(),entry.getValue());}}StringEntitystringEntity=newStringEntity(content,ContentType.APPLICATION_JSON);postMethod.setEntity(stringEntity);response=client.execute(postMethod);if(response!=null){entity=response.getEntity();HttpEntityresEntity=response.getEntity();if(resEntity!=null){responseBody=EntityUtils.toString(resEntity,charset);}EntityUtils.consume(entity);}}catch(Exceptione){e.printStackTrace();}finally{try{if(response!=null){response.close();}if(client!=null){client.close();}if(entity!=null){try{EntityUtils.consumeQuietly(entity);}catch(Exceptione){e.printStackTrace();}}}catch(IOExceptione){e.printStackTrace();}}returnresponseBody;}publicstaticStringsignWithSha256(Mapparams,StringshaKey,Stringcharset){Stringprestr=buildSignString(params);Stringtext=prestr+shaKey;returnDigestUtils.sha256Hex(getContentBytes(text,charset)).toUpperCase();}privatestaticbyte[]getContentBytes(Stringcontent,Stringcharset){if(charset==null||"".equals(charset)){returncontent.getBytes();}try{returncontent.getBytes(charset);}catch(UnsupportedEncodingExceptione){thrownewRuntimeException("签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:"+charset);}}publicstaticStringbuildSignString(Mapparams){Listkeys=newArrayList(params.size());for(Stringkey:params.keySet()){if("sign".equals(key)||"sign_type".equals(key)||"signType".equals(key)){continue;}if(StringUtils.isEmpty(params.get(key))){continue;}keys.add(key);}Collections.sort(keys);StringBuilderbuf=newStringBuilder();for(inti=0;iStringkey=keys.get(i);Stringvalue=params.get(key);if(i==keys.size()-1){//拼接时,不包括最后一个&字符buf.append(key+"="+value);}else{buf.append(key+"="+value+"&");}}returnbuf.toString();}/***排序规则如下:*1.将所有的参数名按照ASCII字典序排序*2.数组和对象*示例data[id]=1data[detail][0][id]=11*data:{id:'1',detail:[{id:'11'}]}**@paramparamMap*@paramallParams*@paramkey*@return*/privatestaticvoidgetStringMap(MapparamMap,MapallParams,Stringkey){for(Map.Entryentry:allParams.entrySet()){Stringok=entry.getKey();Objectov=entry.getValue();if(ov==null){continue;}if(StringUtils.isNotEmpty(key)){ok=key+"["+ok+"]";}if(ovinstanceofJSONObject){//处理对象Mapobj=(Map)ov;//递归getStringMap(paramMap,obj,key);}elseif(ovinstanceofJSONArray){//处理数组JSONArrayovArray=(JSONArray)ov;for(inti=0;iObjectobj=ovArray.get(i);if(objinstanceofJSONObject){//递归getStringMap(paramMap,(Map)obj,ok+"["+i+"]");}else{paramMap.put(ok+"["+i+"]",obj.toString());}}}else{paramMap.put(ok,ov.toString());}}}}附录C响应方法代码样例(含报文解密及压缩还原)小微企业声明函本公司郑重声明,根据《政府采购促进中小企业发展管理办法》(财库﹝2020﹞46号)的规定,本公司参加(单位名称)的(项目名称)采购活动,服务全部由符合政策要求的小微企业承接。相关企业的具体情况如下:1.(标的名称),属于租赁和商务服务业;承接企业为(企业名称),从业人员人,营业收入为万元,资产总额为万元,属于(小型企业、微型企业);以上企业,不属于大企业的分支机构,不存在控股股东为大企业的情形,也不存在与大企业的负责人为同一人的情形。本企业对上述声明内容的真实性负责。如有虚假,将依法承担相应责任。企业名称(盖章):日期:年月日注:(1)从业人员、营业收入、资产总额填报上一年度数据,无上一年度数据的新成立企业可不填报。(2)企业类型请供应商参照《关于印发中小企业划型标准规定的通知》(工信部联企业〔2011〕300号)文件规定自行填写。(3)供应商如不提供符合要求的小微企业声明函,价格将不做相应扣除。残疾人福利性单位声明函本单位郑重声明,根据《财政部民政部中国残疾人联合会关于促进残疾人就业政府采购政策的通知》(财库〔2017〕141号)的规定,本单位为符合条件的残疾人福利性单位,且本单位参加______单位的______项目采购活动,由本单位提供服务。本单位对上述声明的真实性负责。如有虚假,将依法承担相应责任。单位名称(盖章):日期:年月日注:供应商如不提供符合要求的残疾人福利性单位声明函,则价格将不做相应扣除。技术服务要求响应表序号比选文件技术服务要求响应文件响应超出、符合或偏离备注供应商名称(公章):法定代表人(或授权代表)签字:日期:年月日填写说明:1、按照技术要求详细填列;2、行数不够,可自行添加。
投标 / 标书制作要点(原创)
本检票设施租赁服务涉及「招标公告」,投标方需重点关注:① 营业执照经营范围须含招标公告或对应服务类目;② 提供同类项目业绩证明;③ 报价方案与售后响应须明确;④ 紧盯投标截止与开标节点,建议提前完成标书制作与盖章。泰州市项目常要求本地化服务能力与快速响应,务必在投标文件中凸显。
标书制作联系冯经理:17551026086
