福建省高级人民法院
民 事 判 决 书
(2019)闽民终567号
上诉人(原审原告、反诉被告):福州蓝电信息技术有限公司,住所地福州市台江区广达路368号群升国际御园3号楼17层1703。
法定代表人:王延祥,执行董事。
委托诉讼代理人:高峰,福建鼎飞律师事务所律师。
被上诉人(原审被告、反诉原告):福建桔子信息科技有限公司,住所地福州市台江区鳌峰街道连江中路东侧与曙光支路交叉处百联大厦7层02办公。
法定代表人:林滔,董事长。
委托诉讼代理人:刘思涵,福建熹龙律师事务所律师。
委托诉讼代理人:李尾芹,福建熹龙律师事务所律师。
上诉人福州蓝电信息技术有限公司(以下简称蓝电公司)因与被上诉人福建桔子信息科技有限公司(以下简称桔子公司)计算机软件开发合同纠纷一案,不服福州市中级人民法院(2017)闽01民初1370号民事判决,向本院提起上诉。本院于2019年3月27日立案后,依法组成合议庭进行了审理。本案现已审理终结。
蓝电公司上诉请求:1.撤销一审判决第三项,改判被上诉人返还上诉人APP第一期定制开发费用48260元并赔偿上诉人违约金36195元;2.维持一审判决第一、二项;3.一、二审案件受理费由被上诉人承担。事实和理由:
(一)一审判决认定蓝电公司未按约定在签订合同后的5日内向桔子公司提供“本项目所有相关SDK接口,并确保接口有效性”,属于事实认定错误。1.2016年9月19日桔子公司技术郑晓辉称“可以生成授权码了”,就证明蓝电公司提供的服务器端的SDK已经可以使用。2016年11月22日蓝电公司法定代表人王延祥与桔子公司技术人员郑晓辉通话中,郑晓辉再次承认蓝电公司提供的资料是可用的,并且已调试成功。证明蓝电公司已履行了《APP开发项目服务合同书》的义务,提供了相关有效SDK接口。3.蓝电公司用JAVA语言开发SDK包在合同签订前经过桔子公司客户经理张伟茜的同意,2016年7月4日即交付服务器端SDK,而APP端上诉人蓝电公司不需要部署SDK,蓝电公司提供了app端android和ios源代码。对于桔子公司提出的手机安卓端及IOS端接口问题,蓝电公司也多次表示该部分由蓝电公司完成,不存在接口不能使用的问题。
(二)桔子公司仅完成了本案UI和原型的设计,之后就借口SDK不能使用擅自停止软件开发,已构成根本违约。1.蓝电公司为尽快完成开发,在桔子公司借口SDK不能使用的情况下,作出重大让步,让技术人员杨志勇帮助被上诉人桔子公司完成了服务器端的SDK部署,之后也多次对桔子公司表示无法完成的手机安卓端及IOS端接口由蓝电公司自行完成,桔子公司完成其他部分开发即可。而桔子公司一直借口蓝电公司提供的SDK接口不能使用,导致增加桔子公司工作量,要求加价5万元,在得不到满足的情况下,擅自停止软件开发,已构成根本违约。2.桔子公司最终仅完成了本案UI和原型的设计,服务器端的SDK部署也是蓝电公司完成的,桔子公司并未对软件进行实质开发。蓝电公司基于合同的约定支付了80%的开发费用,是基于合同的约定,并不代表桔子公司完成了相应的工作量。桔子公司最终仅完成了本案UI和原型的设计,至多仅完成了10%的工作量。
(三)一审查明事实部分“9月8日,张伟茜向杨志勇发一个orange.rar文件,称其建了个工期,要求杨志勇用vs2013把算法写明白就行。杨志勇表示其只有vs2015,且也过期了不能用”该表述带有歧义。一种理解是蓝电公司杨志勇提供的vs2015算法是过期的,不能用的,从而导致桔子公司不能继续进行软件开发。事实上vs2013或vs2015仅是软件开发的编辑软件,就像文字处理WORD软件有2003的版本,也有2007的版本,还有2013的版本一样,vs2013和vs2015只是软件版本不同。蓝电公司杨志勇的意思是其使用的编辑软件vs2015版本已过期,而非SDK算法过期。之后蓝电公司杨志勇下载了vs2013软件,并于2016年9月19日帮助桔子公司开发人员完成了服务器端的SDK部署。
(四)桔子公司构成根本违约,应按照双方约定《APP开发项目服务合同书》第八条第(2)项的约定,对已收取的第一期开发费用48260元也应返还,并承担违约责任赔偿违约金36195元。
桔子公司辩称,请求驳回蓝电公司的上诉,维持原判。理由:
一、“可以生成授权码”并不等同于SDK有效可用。1.SDK作为软件开发工具包,由软件开发者利用其获得授权码,只是使得开发者享有调用目标系统的权限。而SDK有效可用,是指软件开发者可以利用SDK完成开发软件与工具目标系统的对接。双方约定的内容也是“接口有效性”所以,可以生成授权码不表示SDK可以使用。原审法院判定蓝电公司未按约在签订合同后的5日内向桔子公司“提供本项目所有相关SDK接口有效性”认定正确。2.对于SDK用JAVA语言编写,并不影响SDK接口的有效性,在合同约定SDK接口由蓝电公司提供并确保有效性的情况下,因蓝电公司提供的SDK包是用JAVA语言编写,与软件开发所运用的语言不同,桔子公司遂要求蓝电公司对其提供的SDK包进行说明解释,而对SDK包的内容进行说明列举,也是SDK包的重要内容之一。3.2016年6月29日至2016年9月8日,桔子公司多次催促蓝电公司提供APP端的SDK及提供SDK包算法,经过反复调试,才于2016年9月19日生成授权码。至此,蓝电公司提供的SDK仍不能使开发软件与目标系统有效对接。
二、桔子公司在开发过程中不断与蓝电公司保持积极沟通,因SDK接口问题未能解决,而蓝电公司对于接口问题未能积极配合,导致开发进程无法继续,桔子公司不构成违约。1.签订合同前,桔子公司对蓝电公司的开发需求进行了解,蓝电公司称SDK已写好,由其提供。桔子公司要求其提供SDK以确认是否可用时,蓝电公司称该内容属于核心机密,不能事先提供。因此双方签订的合同开发内容不包含SDK及有关代码,并在合同第三条第9款约定,蓝电公司须确保接口有效性。因此,开发过程中发生SDK接口有效性问题,是因为蓝电公司在签订合同前,未能提供SDK以供桔子公司评估。而根据合同约定,蓝电公司提供的SDK在对接上存在问题时,有关SDK的解释说明,应当由蓝电公司完成。因为SDK的编写,是带有书写者主观表述特点,若蓝电公司未能对其提供SDK进行解释,要由桔子公司开发者对其提供的SDK进行解析,其工作量甚至超过重新编写一个SDK包。在SDK接口问题未能解决的情况下,软件开发的进程无法继续。在蓝电公司未能积极配合解决接口问题导致开发进程暂停,桔子公司才给出选择方案,若蓝电公司需要桔子公司承担SDK包有关工作,则该合同以外的工作应当另行洽谈费用。综上,并不是桔子公司以SDK为接口,擅自加价。
三、有关杨志勇表示“其只有VS2015,且也过期了不能用”的表述,该事实不影响本案相关争议认定,并不改变蓝电公司未能提供“本项目所有相关SDK接口,并确保接口有效性”的事实。
四、桔子公司一直积极完成合同约定的开发工作,开发进程无法继续是由于蓝电公司未能提供有效的SDK接口,不存在桔子公司无故拖延工作计划的情况。本案合同解除的根本原因是蓝电公司未能提供有效的SDK接口用于软件开发,蓝电公司的行为构成违约,其主张由桔子公司承担违约责任的诉请没有事实依据,原审判决正确。
蓝电公司向一审法院起诉请求:1.确认蓝电公司和桔子公司2016年6月27日签订的《福建桔子信息科技有限公司APP开发项目服务合同书》于2017年7月28日已解除;2.判令桔子公司返还蓝电公司APP定制开发费用96520元;3.判令桔子公司赔偿蓝电公司违约金36195元;4.本案诉讼费用由桔子公司承担。
桔子公司向一审法院反诉请求:1.判令蓝电公司依约向桔子公司提供有效的SDK接口;2.判令蓝电公司于项目提测完成验收合格后向桔子公司支付剩余开发费用24130元;3.判令诉讼费用由蓝电公司承担。
一审法院认定事实:
2016年6月27日,蓝电公司作为甲方与乙方桔子公司签订《福建桔子信息科技有限国内公司APP开发项目服务合同书》,约定甲方委托乙方开发制作APP,合同主要内容如下:
1.服务期限:自2016年6月24日至2016年8月26日止(预计46个工作日)。
2.收费标准及付款方式:甲方APP定制开发总费用为120650元,按以下方式分期支付:(1)签订合同五个工作日内支付预付款40%,即48260元,作为乙方前期工作费用和合同预付款;(2)乙方完成APP项目开发原型和UI设计后,并由甲方验收合格且邮件正式回复确认后五个工作日内支付40%,即48260元;(3)乙方完成APP项目开发、提测完成,甲方验收合格且邮件正式回复确认后五个工作日内支付余款20%,即24130元。
3.甲方权利义务:(1)甲方有权在产品设计(产品原型设计、UI设计)交付后,对设计提出意见,乙方应积极配合。甲方的修改意见应在收到乙方产品设计稿后3个工作日内提出,由甲方未在工作日内反馈造成阶段工作延期的,乙方应出具正式的法律合同函件,则甲方项目延期的结果由其自行承担;(2)甲方指定王延祥与乙方张伟茜进行工作联系,甲方更换联系人应及时通知乙方;(3)甲方须于合同签订的五个工作日内,提供本项目所有相关SDK接口,并确保接口有效性。若因甲方无法及时提供有效接口,所产生的其他费用及所造成的项目延期,由甲方自行负责。
4.乙方权利义务:(1)乙方承接本项目业务,应尽职尽责为甲方服务,按时、按质、按量完成甲方委托的各项工作,并为甲方资料保密;(2)乙方应按照合同约定进度提交有关成果,若乙方未按合同交付时间履约,每延误一个工作日,提交时间推迟一个工作日,成果交付时间详见附件二;若关于提测,以原型确认稿为依据,乙方未按合同功能要求完成开发,或存在重大技术问题,由乙方承担相关违约责任。
5.违约责任:(1)本合同一经生效,甲乙双方不得无故擅自解除合同,否则擅自解除合同的一方应付违约赔偿责任,违约金为本合同约定服务费总额的30%;(2)乙方应按甲乙双方确认的书面计划开展工作,无故拖延工作计划进度达到10个工作日以上的,甲方有权单方面终止合同,不予支付服务费,并有权要求乙方赔偿,赔偿额按服务费总额30%计取;(3)甲方应按本合同约定的付款进度付款,如甲方在合同约定的付款期限届满后五日内仍未付款,则甲方每延期一日应向乙方支付应付而未付部分服务费的千分之三的违约金,如甲方在合同规定的付款期限届满后15日内仍未付款,则乙方在甲方付清款项之前有权停止相关服务,并视甲方违约,乙方有权单方终止合同并按违约责任第一款追究甲方责任。
6.其他:(1)本合同产生的附件与本合同具有同等法律效力;(2)APP框架见附件一定制开发后台导图,APP开发工作流程及时间节点见附件二定制开发工作流程;(3)附件二定制开发工作流程显示,原型一稿交付时间为2016年7月5日;UI及后台开工交付时间为2016年7月6日(若原型确认时间较长相关开发时间顺延);UI效果图确认交付时间为2016年7月19日(若原型确认时间较长UI效果图确认时间顺延);提测一交付时间为2016年8月19日(若UI确认时间较长相关开发时间顺延);提测二正式交付时间为2016年8月26日(若UI确认时间较长正式交付时间顺延)。
合同签订后,蓝电公司于2016年7月1日向桔子公司转账48260元;7月25日,桔子公司向蓝电公司提交了UI稿,蓝电公司认为UI存在很多内容错误需要修改;8月11日,桔子公司将UI修改稿发给王延祥请求确认验收;蓝电公司于2016年8月17日回复确认验收UI效果图,并于2016年8月24日向桔子公司转账48260元。
根据双方履约过程中的微信截屏内容,还查明如下事实:
2016年6月22日,在涉案合同签订前,王延祥与张伟茜沟通洽谈过程中,张伟茜表示“SDK包您那边用JAVA语言写是没问题的。”合同签订后,2016年6月29日、7月1日、7月4日,桔子公司张伟茜多次催促蓝电公司王延祥提供SDK包。王延祥于7月4日将用JAVA语言编写的服务器的SDK包发送给张伟茜,并表示APP端只需提供一小段源程序即可。7月5日王延祥询问其昨日交付的sdk是否可用,张伟茜称技术人员还在看,需花点时间去研究,并提出王延祥能否提供用.net语言写的关于验证码的例子,SDK包里都是代码,有例子好理解,王延祥表示其都是java写的,对.net不熟。7月11日,张伟茜称上次给的只是服务器的SDK包,还需要王延祥提供APP端的SDK包,王延祥表示APP的是程序代码,不是SDK包。7月22日,蓝电公司杨志勇将部分APP代码发给张伟茜。7月26至8月5日期间,张伟茜多次向杨志勇要剩余的APP程序代码,杨志勇于8月9日将全部代码发给张伟茜。张伟茜称收到的只是安卓端的程序代码,还要提供IOS端的。8月11日,张伟茜向杨志勇要IOS端程序代码,并提出要蓝电公司把SDK包的算法也发给桔子公司,因为其公司没有JAVA人员。杨志勇让其先开始做安卓端的。8月15日,杨志勇将SDK包的算法发给了张伟茜。8月30日,张伟茜称蓝电公司提供的是JAVA语言的SDK包,要求杨志勇直接提供一个算法文档。9月8日,张伟茜向杨志勇发一个“Orange.rar”文件,称其建了个工期,要求杨志勇用vs2013把算法写明白就行。杨志勇表示其只有VS2015,且也过期了不能用。9月19日,桔子公司称可以生产授权码了。
2016年10月8日,张伟茜发邮件给王延祥,称涉案项目超期原因主要为:1.UI验收延迟一个月;2.未按约定提供相关的SDK文件及程序代码,致使桔子公司无法使用,造成额外劳动力;3.相关文档提供时间超出合同约定。桔子公司表示自该日起不再去对接硬件部分,只负责软件部分且软件部分已完成。若蓝电公司想完成整个项目,包括硬件对接部分,还需多支付5万元,则桔子公司承诺在2016年11月30日完成。邮件还附了《泊泊乐APP项目合同违约函》。次日,蓝电公司回复上述邮件,称:涉案项目按约应于8月26日完成,项目超期是因桔子公司迟延提交UI,蓝电公司已按约提供SDK及APP程序代码;如桔子公司不能在10日内上线测试,15日完工,则蓝电公司将按合同约定终止合同,不支付服务费,并要求赔偿损失。同日,王延祥与张伟茜还电话沟通了项目是否有增加功能需求及费用问题,王延祥表示蓝电公司自原型确定后从未增加过功能,不同意增加费用;张伟茜认为该项目已超成本,蓝电公司增加功能,要求加付5万元。
2016年11月14日,王延祥致电张伟茜询问项目情况,张伟茜表示之前收到的不是SDK包,无法调用;王延祥表示之前提供的就是SDK,是桔子公司用的语言版本太旧,要求桔子公司按照之前提供的文档把安卓做通,IOS的按照安卓的把数据接口留好。11月22日,王延祥致电桔子公司郑晓辉沟通项目情况,询问蓝电公司提供的SDK包后服务器端生产授权码情况,郑晓辉表示服务器端生产验证码没问题,已经可以用,并称安卓的都已经做好了,IOS的不行。11月23日,王延祥发邮件给张伟茜,称涉案项目已严重超期,要求对方尽快完成交付,并留好数据库及对接的接口和说明文档。11月25日,张伟茜向王延祥发送电子邮件《项目通知函》并附了四个附件,《项目通知函》对目前涉案项目顺延阶段提供两种方案供蓝电公司选择:1.蓝电公司在2016年12月2日前提供标准、可用的JAR形式的SDK包,并经由桔子公司确认规范可用,则接下来的软件及硬件部分由桔子公司完成;2.桔子公司在11月28日把源代码、产品使用说明书等相关验收材料交至蓝电公司,双方合作终止,由蓝电公司负责接下来的软件及硬件部分。若蓝电公司对上述方案不接受,桔子公司将根据合同约定单方面解除合同。
2016年12月12日,张伟茜发邮件给王延祥,主题为“泊泊乐验收材料2016.12.12”,包括源代码、接口协议、前端、后台使用说明书供蓝电公司验收。同日,王延祥回复邮件称桔子公司提供的安卓手机端、服务器端都无法正常使用,IOS端还没提供,根本达不到验收标准。2016年12月14日,张伟茜回复了上述邮件,表示其公司已配合蓝电公司做了很多,相关记录也都发给了王延祥。其公司决定双方合作终止,如有异议按正常程序走,其公司不会再回复邮件。
2017年7月27日,蓝电公司向桔子公司发出《解除合同告知函》,称:桔子公司未按合同履行,无故拖延工作进度,至今未交付成果,还于2016年12月14日发电子邮件单方终止合作,已构成根本违约,给蓝电公司造成巨大损失,故蓝电公司特发此函通知桔子公司解除涉案合同,并要求桔子公司返还开发费用96520元、赔偿违约金36195元。桔子公司于2017年7月28日收到该函件。
一审法院认为,蓝电公司与桔子公司签订的《APP开发项目服务合同书》系双方真实意思表示,未违反法律、行政法规有关效力性强制性规定,应认定该合同合法有效,对双方当事人具有法律约束力。本案争议焦点是:桔子公司是否构成违约;《APP开发项目服务合同书》是否应当解除及其法律后果。
一、桔子公司是否构成违约
(一)关于桔子公司是否构成逾期违约的问题
蓝电公司主张,桔子公司应于2016年9月17日交付提测一,于2016年9月24日正式交付APP。而桔子公司却迟至2016年12月12日才提供一个开发的半成品,且完全达不到验收标准,已构成根本违约。经查,根据双方当事人微信截屏内容可认定,双方在实际履行协议过程中不断地进行交流沟通,桔子公司于2016年8月份曾多次要求蓝电公司提供可连接的端口,包括IOS端程序代码,将SDK包的算法发给桔子公司等。至10月8日,桔子公司仍发邮件给蓝电公司,认为因其未按约提供相关的SDK文件及程序代码,致使桔子公司无法使用,造成额外劳动力,要求增加开发费用。而蓝电公司则认为其并未增加相关功能,不同意增加费用。双方约定所开发的涉案APP项目因此搁浅,据此不能认定桔子公司构成迟延交付。再是,根据本案讼争合同约定,蓝电公司应于合同签订的五个工作日内,提供本项目所有相关SDK接口,并确保接口有效性。若因蓝电公司无法及时提供有效接口,所产生的其他费用及所造成的项目延期,由蓝电公司负责。但根据双方在合同履行过程中的交流,可判定蓝电公司并未按约在签订合同后的5日内向桔子公司提供“本项目所有相关SDK接口,并确保接口有效性”,故而不能认定桔子公司应承担构成逾期交付开发项目的责任。
(二)关于桔子公司是否构成根本违约的问题
经查,11月25日,桔子公司向蓝电公司发送项目通知函及项目相关附件,声称其把源码、产品使用说明书等相关验收材料交至蓝电公司,由蓝电公司负责接下来的软件及硬件部分。12月12日,桔子公司又发邮件给蓝电公司,主题为“泊泊乐验收材料2016.12.12”,包括源码、接口协议、前端、后台使用说明书供蓝电公司验收。同日,王延祥回复邮件称桔子公司提供的安卓手机端、服务器端都无法正常使用,IOS端还没提供,根本达不到验收标准。2016年12月14日,桔子公司回复上述邮件,表示其公司已配合蓝电公司做了很多,相关记录也都发给了蓝电公司。2017年7月27日,蓝电公司向桔子公司也发出《解除合同告知函》,称桔子公司未按合同履行,无故拖延工作进度,至今未交付成果,构成根本违约。以上事实可以认定,在开发项目过程中,桔子公司根据讼争公同约定向蓝电公司提交了UI效果图,并最后得到蓝电公司验收确认。本案讼争《APP开发项目服务合同书》约定蓝电公司应向桔子公司提供本项目所有相关SDK接口,并确保接口有效性,但由于桔子公司所开发的APP软件与蓝电公司提供的端口无法匹配而引发纷争,直至一审诉讼过程中,双方也未对涉案软件进行验收,亦没有证据表明桔子公司提供的涉案软件出现问题无法解决的情况下,不能认定涉案软件质量不合格,故桔子公司并未构成根本违约。
二、关于《APP开发项目服务合同书》是否应当解除及其法律后果问题
我国《合同法》第94条规定“有下列情形之一的,当事人可以解除合同:(二)在履行期限届满之前,当事人一方明确表示或者以自己的行为表明不履行主要债务;(三)当事人一方迟延履行主要债务,经催告后在合理期限内仍未履行;(四)当事人一方迟延履行债务或者有其他违约行为致使不能实现合同目的。”由于蓝电公司未提供有效证据证明其已提供有效的端口可用于涉案软件进行验收,构成违约。鉴于网络环境的变化,以及双方当事人之间由于诉讼产生的隔阂,双方不宜再继续履行《APP开发项目服务合同书》。故蓝电公司提出确认解除双方签订的《APP开发项目服务合同书》一审法院予以支持。根据《合同法》第97条规定,合同解除后,尚未履行的,终止履行;已经履行的,根据履行情况和合同性质,当事人可以要求恢复原状、采取其他补救措施,并有权要求赔偿损失。从合同履行过程来看,本案讼争合同未能全面履行,双方均有过错,均应承担相应的责任。由于涉案软件处于验收期,开发项目未全部经过验收,亦未上线测试,对于尚未履行的部分,应终止履行,蓝电公司无需再支付余款,桔子公司要求蓝电公司提供有效的SDK接口的反诉请求亦不予支持。关于蓝电公司主张桔子公司应当返还已支付的开发费用问题,本案诉争合同共分三期支付开发费用,蓝电公司已向桔子公司支付了第一、二期的费用,鉴于桔子公司也投入了开发成本,对其收取的第一期前期预付款费用不再予以退还,但桔子公司未完成涉案软件的开发,故应退还蓝电公司支付的第二期费用48260元。
综上所述,蓝电公司的诉讼请求部分成立,对成立部分予以支持。桔子公司的反诉请求无理,不予支持。依照《中华人民共和国合同法》第六十条、第九十四条、第九十七条、第一百零七条、第三百三十四条,《中华人民共和国民事诉讼法》第六十四条第一款之规定,判决:一、解除福州蓝电信息技术有限公司与福建桔子信息科技有限公司签订的《APP开发项目服务合同书》;二、福建桔子信息科技有限公司应于判决生效之日起十日内向福州蓝电信息技术有限公司返还已收取的开发费用48260元;三、驳回福州蓝电信息技术有限公司的其他诉讼请求;四、驳回福建桔子信息科技有限公司的反诉请求。如果未按判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定,加倍支付迟延履行期间的债务利息。一审本诉案件受理费18840元,由福建桔子信息科技有限公司负担10000元,福建桔子信息科技有限公司负担8840元;反诉案件受理费18840元,由福建桔子信息科技有限公司负担。
本院二审期间,蓝电公司提交以下证据:
证据1.DialogSemiconductor公司官网SDK包目录结构,证明蓝电公司委托桔子公司定制开发泊泊乐APP项目,使用的硬件核心芯片是DialogSemiconductor公司的DA14580蓝牙芯片,Dialog官网提供的SDK包与蓝电公司提供给桔子公司的sdk包相类似,蓝电公司提供的SDK包是有效的。证据2.DialogSemiconductor公司官网SDK包的获取方式,证明德国Dialog公司是全球著名的智能芯片厂商,DA14580蓝牙芯片在国内也有较广泛的应用,如小米手环就使用了该芯片。该芯片sdk代码可以在该公司网站注册账号后免费获取。
桔子公司质证认为,上述证据不属于二审新证据。首先,对上述证据的真实性、关联性不予认可。其次,该两份证据的证明对象中陈述的观点与其一审陈述不一致。根据桔子公司一审陈述,双方在签订合同时,蓝电公司曾要求桔子公司提供SDK码,桔子公司当时称SDK码是核心机密,在签订合同前不能提供。而桔子公司在二审提供的官网的SDK是公开的,且该份SDK是C语言,而其此前提供的SDK是JAVA语言。桔子公司利用的芯片,对应的SDK进行相应的编写后才能实际操作和使用,并非在硬件所在的官网下载就可以使用相应的SDK。
本院认证认为:根据双方签订的《APP开发项目服务合同书》,蓝电公司须在合同签订的五个工作日内向桔子公司提供SDK接口并确保有效性,双方并未约定SDK系从官网下载,故蓝电公司提供的这两份证据与本案基本事实的认定不具有直接的关联性,本院不予采信。
经审理查明,原审法院认定的事实属实,本院予以确认。
本院认为,蓝电公司和桔子公司签订的《APP开发项目服务合同书》系双方的真实意思表示,合同内容未违反法律、行政法规的强制性规定,应认定为合法有效,双方均应依约履行。本案二审争议的焦点在于蓝电公司是否按照合同约定提供了有效的接口文件;桔子公司是否构成根本违约以及相应的责任。
关于蓝电公司是否按照合同约定提供了有效的接口文件。《APP开发项目服务合同书》第三条第9款约定:“甲方(蓝电公司)须于合同签订的五个工作日,提供本项目所有相关SDK接口,并确保接口有效性。若因甲方无法及时提供有效接口,所产生的其他费用以及所造成的项目延期,由甲方负责。”经查,合同签订后,经桔子公司多次催促,蓝电公司分别于7月4日和8月9日将服务器的SDK和安卓端的程序代码发送给桔子公司,未发送ISO端的接口;因蓝电公司服务器端的SDK为“JAVA”语言,而桔子公司编写涉案软件采用的是“.net”语言,桔子公司要求蓝电公司发送算法,桔子公司于8月14日将算法文档发送给蓝电公司。本案合同签订于2016年6月27日,按照合同约定,蓝电公司应在合同签订后五个工作日内提交SDK接口,但根据上述事实,蓝电公司并未在约定的期限内向桔子公司交付SDK接口。即使蓝电公司交付的服务器SDK接口有效,其提供的时间已经远超合同约定的期限。蓝电公司主张在合同履行过程中,其已经通知桔子公司无需部署APP端的接口,然而,蓝电公司的该项主张仅是其单方陈述,并未得到桔子公司的回应,故本院对其无需交付APP端接口的上诉主张不予认可。综上,蓝电公司未在合同约定的期限内向蓝电公司交付有效的SDK接口,原审对此认定并无不当。
关于桔子公司的行为是否构成根本违约以及其应当承担的民事责任。本案双方当事人在签订合同时,对于SDK接口问题均未予以充分的关注,致使在合同履行过程中,在SDK接口的交接和程序编写语言的对接上产生分歧,也致使整个技术开发合同延期和未能如期如约完工,双方对此均存在过错,蓝电公司主张桔子公司构成根本违约,依据不足,不予支持。本案蓝电公司一审诉请要求解除《APP开发项目服务合同书》,一审判决解除涉案合同后,桔子公司对此未提出上诉,故涉案《APP开发项目服务合同书》已解除。《中华人民共和国合同法》第九十七条规定:“合同解除后,尚未履行的,终止履行;已经履行的,根据履行情况和合同性质,当事人可以要求恢复原状、采取其他补救措施,并有权要求赔偿损失”;第一百二十条规定:“当事人双方都违反合同的,应当各自承担相应的责任。”鉴于双方对于合同未能履行均有过错,一审法院根据合同履行情况,判令桔子公司返还蓝电公司第二期费用48260元并无不妥,本院对蓝电公司有关桔子公司应当退还第一期费用并支付违约金的上诉主张不予采纳。
综上所述,蓝电公司的上诉请求不能成立,应予驳回;一审判决认定事实基本清楚,适用法律正确,应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定,判决如下:
驳回上诉,维持原判。
二审案件受理费1912元,由福州蓝电信息技术有限公司负担。
本判决为终审判决。
审 判 长 蔡 伟
代理审判员 曹慧敏
代理审判员 孙 艳
二〇一九年四月二十二日
法官助理陈美婷
书记员江菲
附本案适用的法律条款
《中华人民共和国民事诉讼法》
第一百七十条第二审人民法院对上诉案件,经过审理,按照下列情形,分别处理:
(一)原判决、裁定认定事实清楚,适用法律正确的,以判决、裁定方式驳回上诉,维持原判决、裁定;
(二)原判决、裁定认定事实错误或者适用法律错误的,以判决、裁定方式依法改判、撤销或者变更;
(三)原判决认定基本事实不清的,裁定撤销原判决,发回原审人民法院重审,或者查清事实后改判;
(四)原判决遗漏当事人或者违法缺席判决等严重违反法定程序的,裁定撤销原判决,发回原审人民法院重审。
原审人民法院对发回重审的案件作出判决后,当事人提起上诉的,第二审人民法院不得再次发回重审。