中华人民共和国最高人民法院 民 事 判 决 书 （2019）最高法知民终317号 上诉人（原审被告）：武汉科乐云网络科技有限公司。住所地：湖北省武汉市武昌区武珞路442号中南国际城A座1单元24层2室。 法定代表人：余意，该公司执行董事兼总经理。 委托诉讼代理人：刘勇，湖北首义律师事务所律师。 被上诉人（原审原告）：陈海军，男，1991年1月15日出生，汉族，住浙江省温岭市。 委托诉讼代理人：程润超，湖北聚力律师事务所律师。 上诉人武汉科乐云网络科技有限公司（以下简称科乐云公司）因与被上诉人陈海军技术合同纠纷一案，不服湖北省武汉市中级人民法院于2019年4月29日作出的（2019）鄂01民初210号民事判决，向本院提起上诉。本院于2019年8月9日立案后，依法组成合议庭，于2019年10月25日公开开庭进行了审理。上诉人科乐云公司的委托诉讼代理人刘勇，被上诉人陈海军的委托诉讼代理人程润超，到庭参加了诉讼。本案现已审理终结。 科乐云公司上诉请求：1.撤销原审判决，改判驳回陈海军的全部诉讼请求；2.依法改判继续履行科乐云公司与陈海军签订的《APP开发合同书》；3.判令陈海军支付剩余款项1.15万元并支付违约金4.2万元。事实和理由：一、原审认定事实不清，科乐云公司的合同主债务已履行完毕，并得到陈海军实际验收，APP修复为合同附随义务。原审已认定科乐云公司在合同约定期限内向陈海军交付上线了宁波麻将安卓版APP测试包，并根据反馈及时修改更新。由于此游戏采用lua脚本进行开发，底层框架具备跨平台能力，所以修改安卓版APP程序时苹果版APP程序也随之被修改。尽管陈海军此后未进行全面有效的内测、公测等多项测试，严重影响后续修复BUG和交付苹果版APP测试包，但科乐云公司依然按约定交付上线了苹果版APP测试包。科乐云公司制作完成、交付并在第三方平台上线APP后，经陈海军测试、验收并支付测试时和上线时大部分款项共4.1万元，符合合同约定，故科乐云公司的合同主债务已履行完毕。而信息技术产品出现BUG为正常现象，修复BUG为合同附随义务。二、原审适用法律错误，涉案合同不符合解除情形，应继续履行完毕。科乐云公司已履行完合同主债务并已经陈海军实际验收，涉案合同未出现任何解除的情形，陈海军不享有合同的法定解除权和约定解除权。科乐云公司收到陈海军邮寄的解除通知后涉案合同并未解除，双方仍应继续履行合同。三、陈海军迟延支付合同款项已构成违约，陈海军应当支付剩余合同款项1.15万元并支付违约金4.2万元。陈海军未完整履行合同约定义务，剩余1000元上线时款项、合同金额10%的尾款10500元至今尚未支付，构成违约。根据涉案合同第十二条约定，陈海军还应承担违约责任，赔偿科乐云公司双倍定金4.2万元。 陈海军辩称：一、原审法院认定事实清楚，科乐云公司的合同主义务并未履行完毕且没有得到陈海军的实际验收。首先，科乐云公司交付的测试产品始终存在一定问题，至陈海军起诉至原审法院期间仍存在七百搭游戏BUG、三百搭游戏BUG未解决。上述BUG并非仅是游戏APP中存在的程序漏洞、未发现的缺陷、偶发的故障，而是不符合或未实现涉案合同附件所约定的游戏规则的内容错误。因此，科乐云公司交付的产品不符合合同约定，其合同主义务并未履行完毕。其次，涉案合同约定的验收方式是陈海军以社交软件或者书面的形式确定产品合格，而本案中陈海军并未通过这两种方式予以验收，并在第一时间向科乐云公司反馈了上述重大BUG。最后，科乐云公司交付测试的APP存在重大BUG而非普通修复问题，不是合同附随义务的问题。二、陈海军与科乐云公司于2017年12月29日签订的《APP开发合同书》已满足法定解除条件，应当解除。在科乐云公司经陈海军数次催告后仍未修复相关问题的情况下，陈海军发出了解除通知，科乐云公司未在法定期限内提出异议，应当认定《APP开发合同书》已于2018年7月20日解除。三、陈海军没有任何违约行为，而科乐云公司迟延履行合同义务已构成违约，应当承担违约责任。陈海军一直按照合同约定履行付款义务，先后支付了定金、测试款和上线费用等，并第一时间向科乐云公司反馈相关BUG问题。科乐云公司作为软件开发受托方，应当按照合同约定履行义务，其迟延履行义务的行为已经构成违约，应当承担违约责任。 陈海军于2019年1月9日向原审法院起诉请求：1、判令解除陈海军与科乐云公司签订的《APP开发合同书》；2、判令科乐云公司返还陈海军支付的合同款项72500元；3、判令科乐云公司双倍返还陈海军定金42000元；4、判令科乐云公司向陈海军支付占用期间利息971.62元（以93500元为基数，按银行同期贷款利率计算，从2018年5月1日暂计至2018年7月26日，以后继续计算至清偿之日止）；5、判令科乐云公司赔偿陈海军经济损失4000元。 原审法院认定如下事实：陈海军（甲方）与科乐云公司（乙方）于2017年12月29日签订《APP开发合同书》，合同主要内容：一、软件建设项目及内容。开发要求14项。备注：本软件可以在AppleiOS、Android环境下运行。二、合同产品价格及付款方式（发票另加6%税点）。1、合同产品总金额105000元整。2、付款方式预付定金50%即52500元整，APP测试时付20%即21000元整，APP上线时付20%即21000元整，甲方上线测试30天后付清余款。三、交付时间。1、乙方下单并制作的起始日期为甲方相关款项支付成功且甲方UI确认后。（资料申请所需时间应在制作周期上顺延）2、乙方对甲方提供的游戏APP开发制作周期为55-75个工作日，完成整个设计制作方案并交付甲方测试。四、验收标准和验收后修改补充。1、验收标准：无内容错误或重大BUG（以甲方提供的材料为标准），包含双方约定的设计内容和功能模块。2、验收合格：甲方应以书面方式或其他社交软件确定签收，如甲方在规定日期内未签收也未提出异议的，视为甲方验收合格。3、验收合格后，根据合同的约定，乙方对甲方使用中的要求变动，做出调整，依照甲乙双方商定结果收取对应费用。4、若甲方的改动或要求的售后内容超出合同要求，增加其他模块或功能，乙方应积极协助，适当收取费用。五、程序维护。1、乙方指导甲方的前期准备工作，并对甲方的相关员工免费进行系统基本功能使用培训，确保其能够正确无误的使用APP各项系统功能。2、系统维护服务：乙方保证甲方APP在合同期内正常运行，一年之内除新增功能项维护乙方不得收取额外费用，并且免费提供永久BUG修复。该合同后还附《APP开发服务协议》及相应游戏规则，其中游戏规则载明游戏为宁波麻将，包括“三百搭”、“七百搭”，并介绍了基本规则、牌类术语、位置术语、操作类术语、胡牌术语、台数计算、特殊牌类、胡牌要求、总台数结算、三百搭做生意、七百搭做生意、游戏开房设置等的规则详情。同日，陈海军向科乐云公司付款52000元。 陈海军和科乐云公司认可，涉案游戏平台为宁波麻将，运行平台为安卓和苹果系统。 2018年3月5日，科乐云公司让陈海军买服务器并进行充值，当月11日，陈海军购买阿里云服务，并支出2000元。同年5月31日，科乐云公司告知陈海军阿里云服务器没有费用了，陈海军当日再次支付阿里云服务器费用2000元。 2018年4月4日，科乐云公司向陈海军发送安卓手机的测试版本，其后陈海军持续反馈相关问题，科乐云公司进行修改更新。4月16日，陈海军向科乐云公司付款10000元。其后，双方继续进行反馈与修改。4月底至5月初，双方就剩余的11000元测试款和21000元的上线款支付发生争议和沟通。5月1日，陈海军提出仅给了安卓测试包，没有苹果测试包，没给后台，不知道做得怎么样就要求付完钱不合理；科乐云公司则提出后台很成熟，苹果与安卓一样，且不付上线款怎么上线等。后陈海军于当日向科乐云公司付款31000元。陈海军陈述系因科乐云公司一定要先付款才发苹果包及上线才付款；科乐云公司则认为陈海军付款就是以实际行动认可游戏合格。 2018年5月28日，陈海军与科乐云公司进行电话沟通，科乐云公司称保证6月20日前弄好。6月5日，陈海军向科乐云公司发送BUG.docx文档，对交付的游戏软件存在的界面问题、七百搭游戏BUG、三百搭游戏BUG进行了说明。6月21日，陈海军再次与科乐云公司进行电话沟通，科乐云公司称会催技术抓紧时间弄。 2018年7月9日，科乐云公司回复陈海军及其妻子叶桑桑称，游戏BUG修复属于游戏维护，游戏上线交付已超过一个月，根据合同要求需要结清尾款，公司才能修复BUG。7月16日，陈海军向科乐云公司发出《解除通知》，称科乐云公司未按约定时间、内容交付完整的设计制作方案，且游戏APP存在重大BUG不能进行后期测试，导致APP无法按时上线，经多次交涉，科乐云公司仍未按合同约定修复重大BUG及内容。根据《中华人民共和国合同法》第九十四条，当事人一方迟延履行主要债务，经催告后在合理期限内仍未履行，可解除合同，为此，要求解除于2017年12月29日签订的涉案合同。科乐云公司于7月20日收到该通知，至陈海军起诉至一审法院，仍未做处理。 一审庭审中，陈海军明确科乐云公司交付成果存在的问题以6月5日发送的BUG.docx文档为准。双方明确其中的界面问题已经解决，七百搭游戏BUG、三百搭游戏BUG仍未解决。七百搭游戏仍存在的BUG包括：规则中财神不能吃碰杠，但游戏设计成了可以；不能胡的牌应当不显示，但游戏中不到5台就显示可以胡牌；财神边上应该显示的圈数时有时无；箭头显示方向有问题，游戏没有显示出来。三百搭游戏仍存在的BUG包括：平胡不符合游戏规则；点炮数和胡牌数显示有问题；自摸时的计算规则不符合游戏规则。 陈海军主张科乐云公司定金双倍返还，并赔偿资金占用利息损失以及陈海军租用阿里云的租金损失，并明确若定金与实际损失仅能择一时，选择以定金主张科乐云公司违约责任。 原审法院认为： 关于科乐云公司是否存在违约的问题。根据合同约定，陈海军应当按付款时间节点支付费用，科乐云公司应当完成游戏APP开发，且开发成果应当无内容错误或重大BUG。合同签订后，陈海军先后支付了定金、测试款和上线费用，但从科乐云公司交付的测试产品看，始终存在一定问题，至陈海军起诉，仍存在七百搭游戏BUG、三百搭游戏BUG未解决。对此，科乐云公司虽辩称上述BUG系后期维护服务，且系因陈海军未付清余款而未进行修复，但经审查，上述BUG并非仅系游戏APP中存在的程序漏洞、未发现的缺陷、偶发的故障等，而系不符合或未实现涉案合同附件所约定的游戏规则的内容错误。科乐云公司交付产品不符合合同约定，存在违约。 关于涉案合同应否解除的问题。该案中，在科乐云公司经陈海军数次催告后仍未修复相关问题的情形下，陈海军发出了解除通知，科乐云公司则未在法定时限内依法定程序提出异议，应当认定自解除通知到达科乐云公司之日合同解除，即2018年7月20日涉案合同解除。 关于科乐云公司应当承担的违约责任。涉案合同解除后，科乐云公司应当返还陈海军已经支付的合同价款，并承担相应的违约责任。就违约责任，陈海军同时主张适用定金条款以及利息和租金损失。一方面，因定金实质上亦是违约责任承担之方式，可补偿陈海军因科乐云公司违约而导致之损失；另一方面，从履行情况看，科乐云公司并非完全不作为，前期亦进行了积极开发，双方也曾经多次沟通进行软件修改，因此，考虑合同的履行情况、当事人的过错程度等综合因素，以及亦无证据显示违约造成的损失高于定金的情形下，参考《最高人民法院关于审理买卖合同纠纷案件适用法律问题的解释》第二十八条“买卖合同约定的定金不足以弥补一方违约造成的损失，对方请求赔偿超过定金部分的损失的，人民法院可以并处，但定金和损失赔偿的数额总和不应高于因违约造成的损失”之规定，对定金与实际损失不宜同时适用、叠加计算，鉴于陈海军明确择一时选择适用定金条款，原审法院对此予以确认。陈海军已支付合同款93500元，其中含定金52500元，根据《中华人民共和国担保法》第九十一条之规定，定金不超过合同标的额的20%，涉案合同标的额为105000元，故定金不得超过21000元，对陈海军要求双倍返还定金的诉讼请求予以支持；陈海军共支付93500元，定金之外的72500元，应认定为陈海军支付的合同价款，科乐云公司应予以返还。 综上，原审法院判决：一、解除涉案的《APP开发合同书》；二、科乐云公司于判决发生法律效力之日起十日内向陈海军返还合同款72500元；三、科乐云公司于判决发生法律效力之日起十日内向陈海军双倍返还定金42000元；四、驳回科乐云公司的其他诉讼请求。一审案件受理费2689.44元，由科乐云公司负担。 本院二审期间，当事人均未提交新证据。 本院经审理查明，原审法院查明的事实基本属实，本院予以确认。 本院另查明，湖北省武汉市中级人民法院2019年12月5日作出（2019）鄂01民初210号民事裁定书对（2019）鄂01民初210号民事判决书中存在的笔误进行补正，裁定：（2019）鄂01民初210号民事判决书判项第四项中“武汉科乐云网络技术有限公司”应为“陈海军”。 本院认为，根据当事人的上诉请求、答辩情况及案件事实，本案争议焦点是：一、科乐云公司是否履行完毕涉案合同主要义务。二、涉案合同是否应当解除。三、陈海军是否应当承担违约责任。 一、科乐云公司是否履行完毕涉案合同主要义务。 科乐云公司认为其已履行了涉案合同主要义务的理由是：一、科乐云公司于2018年4月4日向陈海军交付了安卓版APP测试包。因为涉案APP开发采用的是lua脚本，底层框架具备跨平台能力，同时采用热更新技术，修改安卓版APP程序时苹果版APP程序也随之修改。为更好实现合同目的，苹果版APP测试包的交付应在根据安卓版APP测试包的测试情况和陈海军反馈的情况进行修改完善后。陈海军收到安卓版APP测试包后未全面测试影响了科乐云公司交付苹果版APP测试包，且科乐云公司随后也实际交付了苹果版APP测试包。二、根据涉案合同目的，合同约定中的“上线”应当是科乐云公司将开发完毕的安卓版和苹果版APP测试包放到真实的运营环境中供陈海军使用和测试，科乐云公司已经完成了上线。三、陈海军以支付测试款和大部分上线款的方式对科乐云公司履行了“测试”和“上线”义务进行了确认。四、关于涉案APP的验收，根据合同约定陈海军应当在收到测试包后30日内向科乐云公司反馈问题，逾期未反馈则视为验收合格。而陈海军在4月4日收到测试包后直到6月4日前均并未向科乐云公司反馈问题，应当视为已经验收合格。五、APP存在BUG属于正常现象，涉案APP仍存在的问题不属于影响合同目的实现的重大BUG，后续修复BUG是合同的附属义务而非合同主要义务。 对此，本院认为：一、涉案合同明确约定涉案APP可以在AppleiOS和Android环境下运行，科乐云公司单方面主张“苹果版APP会随着安卓版APP的修改而修改，因此苹果版APP的交付应当在安卓版APP修改完善后”没有事实和法律依据，该主张既非合同约定也非双方当事人确认后的合同变更，本院对该主张不予采纳。根据合同约定，科乐云公司应该向陈海军交付安卓和苹果两个版本的APP，其在4月4日仅交付了安卓版APP测试包，并未交付苹果版APP测试包，该次交付不符合合同约定。二、涉案合同对于“上线”并无特别约定，且将APP测试与APP上线约定为不同的付款阶段。通常意义上的软件上线与将测试包布置于平台上供委托方进行测试反馈有明显不同。因此，本院对科乐云公司关于“合同约定的上线是将测试包放到运营环境中供陈海军使用和测试”的主张不予采纳，科乐云公司未举证证明其完成了符合合同约定的APP上线。三、科乐云公司是否履行完毕其开发义务应当根据其自身行为来判定。并且，根据本案查明事实，陈海军在5月1日支付3.1万元的费用主要是因为科乐云公司在双方的交流中要求陈海军先付款才能发送苹果版测试包和进行APP后续上线工作，而非对科乐云公司开发成果的认可。四、涉案合同约定“甲方应以书面方式或其他社交软件确定签收，如甲方在规定日期内未签收也未提出异议的，视为甲方验收合格。”根据合同约定，陈海军对于涉案APP的验收方式应当是通过书面方式或其他社交软件确定。本案中，科乐云公司并未举证证明其收到了陈海军的书面确认或其他社交软件对APP验收合格的确认。科乐云公司主张陈海军在4月4日后的一个月内未提出异议即视为验收合格。对此，本院认为，首先，4月4日科乐云公司仅交付了安卓版APP测试包而未交付苹果版APP测试包，直到6月科乐云公司才交付苹果版APP测试包，因此，4月4日不是符合约定的起算点。其次，涉案合同对于提出异议的期限并未明确约定，30日仅是科乐云公司单方面的主张而非合同约定，根据合同该期限应当是一个合理期限。根据双方的陈述和原审查明事实，至迟于5月28日陈海军向科乐云公司系统反馈了涉案APP存在的问题，并在6月5日汇总形成了BUG.docx文档给科乐云公司。陈海军以反馈问题的方式提出异议的时间并未超越合理期限，涉案APP未验收通过。五、本案中直到原审阶段涉案APP仍存在如下问题：七百搭游戏中规则中财神不能吃碰杠，但游戏设计成了可以；不能胡的牌应当不显示，但游戏中不到5台就显示可以胡牌；财神边上应该显示的圈数时有时无；箭头显示方向有问题，游戏没有显示出来。三百搭游戏中平胡不符合游戏规则；点炮数和胡牌数显示有问题；自摸时的计算规则不符合游戏规则。而涉案合同附件专门规定了诸如七百搭游戏中财神不慎吃碰杠、三百搭游戏中全部由顺子加一对将牌组成（将牌不能是门风圈风箭牌）为平胡、三百搭游戏自摸三家每家付一倍等详细的麻将规则。双方均确认案涉软件为宁波麻将，且陈海军为该麻将软件提供了详细的麻将规则作为合同附件。但直至原审阶段，涉案APP软件在麻将的胡牌规则、算牌规则等有明确约定的项目上仍存在问题，这些问题不是游戏APP的程序漏洞、未发现的缺陷、偶发的故障等后期修复BUG，而是不符合或未实现涉案合同附件所约定的游戏规则的内容错误。 综上，科乐云公司关于其已履行完毕合同主要义务的主张均不能成立，本院不予支持。 二、涉案合同是否应当解除。 陈海军与科乐云公司2017年12月29日签订案涉合同，约定开发期限为55-75个工作日，但至2018年6月5日涉案APP仍存在诸多不符合合同附件要求的BUG，科乐云公司的行为已经构成违约。根据《中华人民共和国合同法》第九十四条、第九十六条，科乐云公司在陈海军多次催告后，仍未修复相关问题，陈海军据此发出解除通知，科乐云公司在2018年7月20日收到上述解除通知后未在法定时限内提出异议，本院确认涉案《APP开发合同书》于2018年7月20日解除。 三、陈海军是否应当承担违约责任。 《最高人民法院关于适用的解释》第三百二十八条规定，在第二审程序中，原审原告增加独立的诉讼请求或者原审被告提出反诉的，第二审人民法院可以根据当事人自愿的原则就新增加的诉讼请求或者反诉进行调解；调解不成的，告知当事人另行起诉。科乐云公司在本院二审中提出要求陈海军承担违约责任的反诉请求，且双方当事人均不同意调解，本院已当庭告知科乐云公司另行起诉。同时，根据查明事实，在涉案合同的履行过程中，陈海军在收到安卓版测试包后就支付了绝大部分的测试款，并在科乐云公司的要求下在收到苹果版测试包前又支付了剩余测试款和绝大部分上线款，不存在科乐云公司主张的严重迟延付款情况。综上，本院对科乐云公司要求陈海军在本案中赔偿违约金4.2万元的请求不予支持。 综上所述，科乐云公司的上诉请求不能成立，应予驳回；原审判决认定事实清楚，适用法律正确，但判决原第四项内容“驳回武汉科乐云网络技术有限公司的其他诉讼请求”存在明显笔误。科乐云公司系原审被告，在一审程序中并未提出任何诉讼请求，不存在驳回科乐云公司诉讼请求的可能。同时，原审原告陈海军在一审期间的诉讼请求包括解除合同、返还合同款、双倍返还定金及科乐云公司向其支付占用期间利息和赔偿经济损失，而后两项诉讼请求在原审判决中并未得到支持。因此，原审判决第四项明显系笔误，当事人及社会公众能够理解，其意应为驳回原审原告陈海军的其他诉讼请求。鉴于该判项不会使当事人产生误认且不会影响当事人的权益，原审法院对此也进行了补正，本院确认原审判决第四项应为“驳回陈海军的其他诉讼请求”并予以维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项，判决如下： 驳回上诉，维持原判。 二审案件受理费2590元，由武汉科乐云网络科技有限公司负担。 本判决为终审判决。 审判长  刘晓军 审判员  高 雪 审判员  邓 卓 二〇一九年十二月十七日 法官助理罗瑞雪 书记员郭云飞 书记员王文婷 裁判要点                            案  号                       （2019）最高法知民终317号                               案  由                       技术合同纠纷                               合议庭                       审判长：刘晓军             审判员：高雪、邓卓                                                     法官助理：罗瑞雪                       书记员：王文婷、郭云飞                               裁判日期                       2019年12月17日                               关键词                       软件开发；技术标准；验收；合同解除；违约责任                               当事人                       上诉人（原审被告）：武汉科乐云网络科技有限公司；             被上诉人（原审原告）：陈海军                               裁判结果                       驳回上诉，维持原判。             原判主文：             一、解除涉案的《APP开发合同书》；二、武汉科乐云网络技术有限公司于本判决发生法律效力之日起十日内向陈海军返还合同款72,500元；三、武汉科乐云网络技术有限公司于本判决发生法律效力之日起十日内向陈海军双倍返还定金42,000元；四、驳回陈海军的其他诉讼请求。                               相关法条                       《中华人民共和国合同法》第九十四条、第九十六条；             《最高人民法院关于适用的解释》第三百二十八条。                               法律问题                       计算机软件开发合同的违约判定问题                               裁判观点                       计算机软件开发合同的附件是合同的重要组成部分之一，其中对开发成果的技术需求和技术标准的约定是对合同约定的进一步细化，开发方应当严格遵守并逐项予以满足，否则将可能构成违约。                               注：本摘要并非判决书之组成部分，不具有法律效力。