中华人民共和国最高人民法院 民 事 判 决 书 （2019）最高法知民终710号 上诉人（原审原告、反诉被告）：广州资生生物科技有限公司。住所地：广东省广州天河区珠江东路11号1001（部位：自编02、03、04、05、06B单元）。 法定代表人：马颖，该公司总经理。 委托诉讼代理人：杨志明，广东保信律师事务所律师。 委托诉讼代理人：熊阳明，广东保信律师事务所律师。 被上诉人（原审被告、反诉原告）：广州紫鲸互联网科技有限公司。住所地：广东省广州市天河区棠安路188号809房。 法定代表人：何志超，该公司总经理。 委托诉讼代理人：林繁祺，广东百健律师事务所律师。 委托诉讼代理人：黄健容，广东百健律师事务所律师。 上诉人广州资生生物科技有限公司（以下简称资生公司）因与被上诉人广州紫鲸互联网科技有限公司（以下简称紫鲸公司）计算机软件开发合同纠纷一案，不服广州知识产权法院于2019年7月25日作出的（2018）粤73民初2140号民事判决，向本院提起上诉。本院于2019年11月7日立案后，依法组成合议庭，并于2019年12月24日公开开庭审理了本案。上诉人资生公司的委托诉讼代理人杨志明、熊阳明，被上诉人紫鲸公司的委托诉讼代理人林繁祺、黄健容到庭参加诉讼。本案现已审理终结。 资生公司上诉请求：撤销原审判决，改判驳回紫鲸公司原审全部反诉请求，支持资生公司原审全部诉讼请求。事实和理由：（一）原审判决认定紫鲸公司于2018年4月8日完成了软件交付属于事实认定错误：1.根据双方合同约定，紫鲸公司应当向资生公司提交测试报告，该报告与开发软件构成一个整体，仅仅交付软件不能视为完成交付。事实上，紫鲸公司一直未交付测试报告，其向资生公司发送开发包链接的日期不能视为软件交付日期。2.紫鲸公司开发的软件不符合合同约定，多次提交、反复修改仍不能达到约定功能，不应认定其已经完成开发义务，至少应对已交付的开发包进行鉴定或评估认定其是否满足合同约定。3.紫鲸公司至少8次向资生公司交付软件均存在不同程度的漏洞，已经严重违约，根据合同第三条5和6的约定，资生公司可以单方解除合同；（二）即使认定紫鲸公司于2018年4月8日提交的链接视为一个完成交付行为，也已超过了开发期限，资生公司符合单方解除合同的条件；（三）原审判决认定资生公司延期付款从而扣除紫鲸公司44天的合同履行期，严重背离了合同约定，更是有失公平；（四）原审判决认定资生公司自始至终未能设定紫鲸公司交付涉案软件的最终期限属于事实认定错误。根据主合同约定的75个工作日开发期和两份补充合同约定的21个工作日，交付涉案软件的最终期限已经非常明确，而且双方已经确定主合同交付最终期限是2017年9月8日，紫鲸公司主张加上“44天的所谓迟付款时间”补充合同的最终交付最多也至2018年2月12日。 紫鲸公司辩称：原审判决说理充分，适用法律正确，资生公司的上诉请求缺乏事实和法律依据，请求予以驳回。（一）紫鲸公司已提供测试报告；（二）紫鲸公司完成了软件开发工作并开始进行交付，由于资生公司不断提出优化体验等方面的问题要求紫鲸公司进行修改，才导致软件一直没有进行正式确认。2018年4月8日紫鲸公司通过微信发链接形式向资生公司交付后，资生公司未进行任何解释情况下，单方提出终止开发。另外，资生公司主张其逾期付款已经紫鲸公司同意，对此紫鲸公司不予确认；（三）资生公司认为双方在两份补充协议中已经确认或默许其逾期付款行为，系对合同条款理解的错误。原审法院认定扣除其逾期付款拖延的开发期间，是有事实和合同依据的；（四）资生公司主张双方已经确认主合同交付期限是2017年9月8日没有依据。 资生公司向原审法院提起诉讼，原审法院于2018年7月16日受理。资生公司起诉请求：1.确认资生公司与紫鲸公司签订的《CMD颜值科技管理系统软件开发合同》及相关补充合同于2018年6月6日解除；2.紫鲸公司立即向资生公司退还全部合同款29.7万元；3.紫鲸公司赔偿资生公司违约金8.91万元；4.紫鲸公司承担资生公司的前期律师费3.5万元；5.紫鲸公司承担财产保全保险费1000元。 紫鲸公司向原审法院提出反诉请求：1.资生公司向紫鲸公司支付开发款3万元；2.资生公司按327元/日的标准向紫鲸公司支付自2018年4月12日起至实际付清之日止的逾期付款违约金（暂计至2018年9月30日为3.27万元）。 原审法院认定事实： (一)关于合同的签订及内容 2017年1月13日，广东颜值科技有限公司（以下简称颜值公司）与紫鲸公司签订《CMD颜值科技管理系统软件开发合同》（合同编号：ZJ20170113H）。2017年5月16日，颜值公司、资生公司、紫鲸公司三方签订《权利义务转移协议》，颜值公司将其《CMD颜值科技管理系统软件开发合同》项下的权利义务全部转移给资生公司，紫鲸公司也同意上述转移。后资生公司（甲方）与紫鲸公司（乙方）签订了《CMD颜值科技管理系统软件开发合同》，合同签署日期、合同编号及合同内容均与颜值公司此前签订的《CMD颜值科技管理系统软件开发合同》一致。 主合同主要内容如下：第一条项目开发及实施1.项目工期：自甲方与乙方确认《CMD颜值科技管理系统项目需求规格说明书》（由乙方提供，且需详细到每一功能模块），确认原型和UI并落实第二期款项后，于75个工作日内完成本项目的开发工作。5.在项目开发过程中，如甲方对本项目的功能出现超出项目总数5%的新增或变更需求，乙方可以通过邮件或书面形式通知甲方顺延项目完成时间，甲方如有异议可邮件或书面回复，双方协商新的时间，变更功能的价格以及开发周期。在项目开发过程中需甲方向乙方提供相应接口文档及必备资料，甲方需在乙方规定的有效时间内给予，因甲方原因提交接口文档及相应资料时间过长造成工期延误的，乙方不承担延误责任。9.若因乙方的原因未能在本合同规定的时间内完成本项目的开发，可与甲方协商完成开发时间。协商不成，且因此造成的延误，逾期超过20个工作日，每逾期一天按甲方已支付金额的1‰计算逾期金。逾期超过20个工作日，乙方仍未按本合同要求完成本项目的开发工作，则甲方有权单方面解除本合同，不再履行本合同所列义务，乙方无条件退还甲方所交金额，甲方有权要求乙方支付本合同收到款项金额的30%作为违约金。12.因甲方进行的任何确认工作、审核工作延误而导致的项目延期，乙方可依据延误时间进行相应延迟，并不承担相应违约责任。因甲方过错责任项目无故中止，乙方收到的所有款项不作任何退款处理，并保留追究乙方损失的权利。13.本开发项目验收工作由甲方完成。如果乙方向甲方书面发出验收申请，甲方5个工作日内没有反馈，则视为通过本项目的初步验收，同意开始试运行。如甲方在项目试运行开始后5个工作日内没有反馈意见，则视为本项目整体验收通过。乙方应向甲方交付的验收内容包括：产品APP安装包；本项目及其相关程序、项目设计说明文档等及其它一切成果和资料等（上述资料应以电子文档形式、可运行的项目程序、甲方认可的形式按照本合同的规定向甲方交付）。第二条款项支付1.本项目的总开发费用30万元。2.甲方向乙方支付总开发费用实行分期付款方式，本项目分四期付款，第一期为总合同款的30%，第二期为总合同款的40%，第三期为总合同款的20%，第四期为总合同款的10%。3.在本合同签订后的3个工作日内，甲方支付乙方第一期项目预付款即合同总价的30%即为9万元。4.甲方在收到乙方提供的整套项目原型及UI时，经甲方签署原型确认单后，3个工作日内需向乙方支付第二期费用即合同总价的40%即为12万元。5.乙方完成项目DEMO版：即可运行90%功能的版本（不排除存在BUG），经甲方确认版本功能无误后，3个工作日内需向乙方支付第三期费用即合同总价的20%即为6万元。6.甲方应于收到乙方交付的最终定稿的产品安装包并书面签收《项目完工确认单》验收通过之日起3个工作日内向乙方支付本合同第四期费用即合同总价的10%即为3万元，乙方收到全额款项后3个工作日内交付甲方所有与项目相关的文件（含源代码及一切技术资料）。第三条甲乙双方权利义务3.甲方应严格按本合同规定支付费用，在确定原型和UI后如非因乙方或不可抗力的原因，甲方没有按照本合同第二条款项支付条款对乙方进行支付，乙方有权中止履行本协议，并且甲方需要对乙方进行赔偿，赔偿金额按照拖欠款项的时间计算，每日以合同金额的千分之一进行收费，但赔偿总金额不超过合同总额的10%。5.乙方应善尽开发服务方职责，对所开发的产品不留后门程序、漏洞。9.甲方如故意在验收期间不进行对乙方工作的配合或拖延验收时间，则乙方视为验收通过，甲方应向乙方支付相应期数的款项，如甲方要求继续进行项目验收，由甲乙双方另行协商时间，但乙方不得据此另行向甲方收取费用。第四条违约责任1.合同双方严格履行本合同项下的各项义务，任何一方如发生违反本合同项下义务的行为，违约方向守约方承担相应的违约责任，包括赔偿守约方因此而引起的经济损失。2.如任何一方不履行或不完全履行本合同义务或违反本合同的任何可补偿性条款，在收到另一方书面通知后5个工作日内，仍未就其违约行为作响应及修正的，另一方可以书面通知违约方即时终止本合同并不承担任何责任，守约方由此遭受损失的，违约方须承担全部损害赔偿责任。第六条合同的变更、生效与终止3.在本合同有效期内，若乙方发生下列任何一种情况，甲方可立即单方解除本合同，乙方应向甲方退还所附的款项并赔偿损失……（2）如乙方提供的服务不符合本合同要求，且未按要求及时补救或虽进行补救但对本合同继续履行构成无实质意义时;…… 2017年10月17日，双方签订《需求变更补充合同》，就原定功能进行变更并达成如下协议：一、开发费用为7000元，顺延工期为6个工作日。二、款项支付：本期款项将与原合同第三期款项一并支付，一次性向乙方支付服务费用7000元。三、本合同生效后即成为主合同不可分割的组成部分，与主合同具有同等的法律效力。四、除本合同中明确所作补充修改之外，原合同的其余部分完全继续有效。本协议与原合同有互相冲突时，以本协议为准。该合同附有《CMD颜值科技管理系统需求变更功能表》一份。 2017年10月30日，双方签订《需求变更补充合同》一份，约定开发费用为2万元，顺延工期为15个工作日。除此之外，该份补充合同的其他内容与2017年10月17日签订的补充合同内容一致。 （二）关于合同履行的相关事实 2017年5月26日，资生公司向紫鲸公司支付第一期开发款9万元，同日又支付了第二期开发款12万元。 2017年8月30日资生公司签字盖章的《初验测试报告》显示，CMD颜值科技用户微信端、CMD颜值科技平板端、CMD颜值科技管理后台已提交。双方确认开发内容包括ipad端（员工端）、PC端（后台管理端）、微信端。 2017年8月30日资生公司签字盖章的《DEMO验收确认书》显示，涉案项目经资生公司验收，符合项目需求分析说明，符合双方签订的合同要求，综上所述项目验收合格，我方准予初验。 经紫鲸公司催告，2017年11月8日，资生公司支付了第三期开发款8.7万元。随后，紫鲸公司向资生公司开具了29.7万元的增值税专用发票。 2017年11月30日，资生公司就两份补充合同所涉新增功能的原型和UI以及主合同所涉功能的原型与UI一并进行了确认。 关于软件的开发周期，资生公司主张应当按照主合同及两份补充合同分别独立计算工期，新增功能并不影响主合同的开发期限，紫鲸公司应当分别于2017年9月8日、2017年10月25日、2017年12月21日交付主合同和补充合同规定项目的软件。即便是按照补充合同的约定累计顺延21个工作日，紫鲸公司也应当在2017年12月28日交付涉案软件。紫鲸公司则认为新增功能会影响主合同的开发期限，新增功能与软件相关，不能割裂补充合同单独认定交付时间，新增功能应于软件开发完成后一并验收，根据主合同第一条第一款、第五款，第二条第五款，第三条第三款的规定，资生公司于2018年8月30日对DEMO版本初验合格，应当在3日内向紫鲸公司支付第三期款项，但其逾期44天直至2017年11月8日才支付，资生公司根据合同第三条第三款的规定暂停项目，因资生公司迟延支付原因导致项目耽误的44天应当顺延工期，另外加上两份补充合同总计顺延的21个工作日，紫鲸公司应当在2018年2月12日向资生公司交付涉案软件。紫鲸公司同时认为，资生公司同时存在迟延交付苹果开发者账号和密码的情况，依据主合同第一条第五款的规定，涉案软件的交付期限应当自资生公司提供有效的苹果开发者账户及密码后计算，至今资生公司尚未提供有效的苹果开发者账户。 关于第三方账户，2017年5月31日，紫鲸公司就通过电子邮件告知资生公司配合及时提供第三方账号资料以免耽误项目进度。双方的聊天记录显示，因更换绑定的微信公众账号，紫鲸公司在2017年12月30日还在向资生公司催问新的微信公众号账户资料，当日资生公司才提供了新的微信公众账号资料，并表示“先用这个账号做测试，最终接入的还是之前的账号”，紫鲸公司明确告知测试和上线用不同的公众账号，更换可能会增加工作量和时间。2018年1月19日，紫鲸公司要求资生公司提供苹果开发者账号和密码，并且提供了第三方开发者账号及应用申请操作文档。2018年2月24日，紫鲸公司再次询问苹果开发者账号和微信公众号处理的情况如何。2018年2月26日，资生公司提供了一个苹果开发者账号和密码。2018年3月15日，资生公司又重新提供了一个苹果开发者账号和密码，但紫鲸公司认为该账户使用不了。对此，资生公司称苹果开发者账号系应紫鲸公司要求提供，账号能否使用是紫鲸公司的工作内容和开发责任，并非资生公司可以控制，该账号不能使用是因为紫鲸公司开发的软件存在很多BUG。紫鲸公司认为资生公司迟延提供第三方账户导致了涉案软件开发项目的迟延，根据合同第一条第五款的规定，因资生公司提交接口文档及相应资料时间过长造成的工期延误，紫鲸公司不承担延误责任。资生公司则认为紫鲸公司作为专业的技术开发者，对技术层面的理解远在资生公司之上，合同中没有明确要求资生公司提供微信公众号及苹果开发者账号，应当视为资生公司无义务提供，不能将合同中的“接口文档及相应资料”理解为包含微信公众号及苹果开发者账号在内，即便资生公司不提供微信公众账号、苹果开发者账号，紫鲸公司使用测试账号也可以开发和测试软件，并且认为苹果开发者账户功能在于收取客户款项，该功能可有可无，并非针对整个软件系统。对此，紫鲸公司则认为根据行业惯例、合同约定的“接口文档及相应资料”由资生公司提供以及资生公司在紫鲸公司提出提供微信公众号、苹果开发者账户等第三方账户的系列配合行为，可以明确第三方账户应由资生公司提供，无论紫鲸公司有无测试账号资源，均不能免除资生公司提供账号资料的义务，也只有资生公司提供了第三方账户，才能完成软件项目的终验。至于资生公司为何会在其认为涉案软件已迟延履行且合同已协商解除的情况下仍应紫鲸公司要求提供苹果开发者账号，其解释为是出于试一试的心态看能否尽力挽回合同履行，但并不表示资生公司已经免除了紫鲸公司的违约责任。 关于涉案软件的实际交付与验收，2018年1月12日，紫鲸公司在给资生公司的邮件中提出“ipad端经修复BUG和问题，内部测试结果已通过，现发给贵司负责人。微信用户端因更换微信公众号需重新接入接口和新建数据带来一定的工作量和工作时间，故会迟延一些，安排在下周发包，如无疑问请回复确认”，邮件附上了ipad端下载地址。2018年3月20日，资生公司表示“昨天发过来的包，修复情况不错。起码是我们提的问题都又去修复”。2018年3月21日，紫鲸公司提供了开发包的链接https://fir.im/w7vn,2018年3月22日资生公司反馈了相关问题文档并后续追问BUG修复情况。2018年4月2日，紫鲸公司提供了新的开发包链接，并表示“应该改的，我们都改了，想和你验下项目哟”，随后双方协商终验时间。2018年4月8日，紫鲸公司提供了http://fir.im/83jk的更新链接，资生公司当即表示已经通知暂停项目了，没有必要再发，会发律师函给资生公司。2018年4月10日，紫鲸公司与资生公司约定2018年4月14日面谈。资生公司提供的2018年4月14日的谈话录音显示，当日双方并未就软件验收、合同解除达成一致协议。2018年4月25日，紫鲸公司明确表示“CMD项目组，关于CMD项目交付事项，需与贵方商讨，我司建议如下：1.我司将CMD项目全线部署上架，明确上线时间待双方商定；2.本项目及新增全部源代码、设计文件、技术文档全部交付；3.本项目尾款结算，由双方商定合宜价格，以上两项全部交接。以上为建议方案，还望能得到回复。”后双方就交付验收没有实质性磋商回复。紫鲸公司认为其在2018年4月8日交付了涉案软件但资生公司未进行验收，按照主合同第二条第六款的规定，资生公司应当在验收通过之日起3日内向紫鲸公司支付第四期费用即3万元。同时根据主合同第三条第三款规定的每日合同金额的千分之一计付违约金标准，资生公司应当在2018年4月12日起每逾期一日支付按照327元/天的标准向紫鲸公司支付违约金，违约金总额不超过3.27万。 关于合同的解除事宜，资生公司认为2018年1月29日双方已经口头达成了退款解除合同的协议，紫鲸公司2018年3月22日还在修改涉案软件，没有完成开发，认为其已经远超合同约定的开发期限，在2018年4月8日再行交付已经失去了意义。双方2018年1月29日的聊天记录显示：资生公司表示“已经和贵公司陈总达成协商，已经回复，放弃我们的项目，退款不再合作，你们不必要发包了。三天内不退款，我们请律师出面”。紫鲸公司当即表示“周总，您好！程总今天外出不在公司，我还不知道您和他达成什么协商，这边我今天早上也和项目经理以及开发组同事还有公司领导沟通过此项目，目前项目功能已经全部做上去了，包括新增的功能，测试部门正在进行全量测试，今天下午能发一个新包，我公司已经在尽全力修改遗留的BUG问题，我们也想尽快交付项目给你们”。资生公司表示“你们耽误时间就没有什么说法吗？时间是你们想怎么耽误就耽误的吗？发的包一次次不过关，按道理你们已经违约，不要惹火我”。紫鲸公司解释称“周总，之前耽误的时间是因为初验通过了，一直没有付款，至少也有一个月，刚开始开发组那边一直在改BUG，后面时间太久公司耗不起这个成本，就搁置了一段时间，等到公司打款了我们这边也要点时间重新启动项目。至于发的包没能尽善尽美这一点，软件开发是不能保证一定没有BUG的，都是要不停的更新迭代，所以才有维保期这项服务，我们整个开发组和测试组都在全力的配合修改BUG，公司的领导也很关注我们的项目，也希望周总您能体谅下”。紫鲸公司并不认可2018年1月29日双方已经解除了合同，认为资生公司后续对涉案软件提出修改意见的行为已经表明双方并未终止合同。资生公司于2018年6月5日向紫鲸公司发出了律师函，通知解除涉案合同并要求紫鲸公司退还全部开发费用、承担违约责任。紫鲸公司确认2018年6月6日收到该律师函，并在2018年8月21日通过电子邮件回函资生公司不同意资生公司要求解除合同并承担违约责任的意见。 资生公司主张因本合同纠纷支付前期律师费3.5万元、财产保全保险费1000元，并提供了律师费发票及保险费收据。紫鲸公司以上述费用并非维权的必要费用且合同并未约定为由不予认可。 原审法院认为，本案为计算机软件开发合同纠纷。资生公司与紫鲸公司签订的主合同及两份补充合同是双方真实意思表示，且未违反我国法律和行政法规的效力性强制性规定，上述合同合法有效。当事人应当按照约定全面履行自己的义务。 (一)本案合同关系是否因资生公司主张而解除 根据已查明的事实，主合同签订后，涉案软件在开发过程中需求发生过两次变更，在主合同之外双方还签订了两份补充合同，分别约定了新增需求的开发费用和顺延工期，双方于2017年11月30日对主合同软件的需求及新增需求的原型及UI整体进行了确认。涉案软件的新增需求必然会影响到主合同的开发进度，故而不能割裂主合同和补充合同的关系来理解补充合同中的“顺延工期”。根据主合同与补充合同的关系、软件开发行业交付惯例可知，双方的软件交付必然是整体交付验收，补充合同的开发期限适用主合同的相关条款，不存在资生公司所述的主合同、两份补充合同所涉部分新增功能分别于补充合同签订后顺延工期到期日交付，否则双方尚未确认新增功能的原型及UI就已经到了交付日期，这显然不合软件开发的常理。 主合同明确写明了开发期限从资生公司确认原型和UI并支付第二期开发款起算75个工作日。第二期开发款系2017年5月26日支付，主合同需求的原型及UI是在2017年4月28日确定，故开发期限应从2017年5月26日起算75个工作日，双方均确认如照此计算，2017年9月8日开发期限届满。与此同时，合同中也存在开发期限顺延的相关条款，比如主合同第一条第五款有“因资生公司原因提交接口文档及相应资料时间过长造成工期延误的，紫鲸公司不承担延误责任”的规定，第三条第三款有“资生公司没有按照本合同第二条款项支付条件进行支付，紫鲸公司有权中止履行本协议”的规定，故实际交付期限还取决于合同履行过程中是否出现工期顺延的情况。根据紫鲸公司的主张，资生公司存在两种情况致使工期顺延，一是迟延支付第三期款项，二是迟延提供第三方账户。 至于资生公司是否存在迟延支付第三期款项导致工期顺延的情况，主合同第二条第五款规定资生公司应在确认DEMO版无误后3个工作日内向紫鲸公司支付第三期款项，双方在2017年8月30日确定了DEMO版，但资生公司迟延至2017年11月8日才支付第三期款项，在资生公司并无相关证据显示其迟延支付第三期款项获得紫鲸公司同意的情况下，其迟延44天付款显然不能归责于紫鲸公司，紫鲸公司因此而中止合同履行合法有据。至于合同恢复履行后开发期限的起算，紫鲸公司主张在2017年11月30日双方重新确认原型和UI后顺延44天延误工期及补充合同规定的合计21个工作日至2018年2月12日的主张符合合同规定，本院予以认可。对于资生公司主张紫鲸公司至迟应在2017年12月28日交付的主张，本院不予采信。 至于紫鲸公司主张的资生公司迟延提供第三方账户资料导致工期迟延的问题，工期是否顺延需要结合第三方账户提供义务人以及第三方账户对于软件开发进度的影响来综合判断。主合同并未明确写明第三方开发者账户具体包括哪些账户、由哪一方负责提供，但主合同第一条第五款明确了“相应接口文档及必备资料”的提供义务方为资生公司，结合本案涉案软件开发存在三个端口，分别涉及到微信端、ipad端和PC端，微信端、ipad端显然需要接入第三方接口才能测试和使用，故应当将“相应接口文档”理解为包含微信端和ipad端端口。从双方就第三方账户的交涉和履行情况来看，紫鲸公司多次要求资生公司提交微信公众号、苹果开发者账号，资生公司也予以积极回应并配合提供，2018年3月15日最后一次提供的苹果开发者账户虽然紫鲸公司称不能使用，但资生公司此前的系列行为也显示出对于由己方提供包括微信公众号、苹果开发者账户在内的第三方账户并无异议。因第三方账户最终需要与涉案软件绑定使用，由委托方提供第三方账户也符合行业惯例。结合上述情况可知，资生公司称其没有提供第三方账户义务的辩解不能成立，第三方账户应由资生公司提供。至于迟延提供苹果开发者账户是否会影响软件开发进度的问题，资生公司主张涉案软件的苹果开发者账户是用于收款，对开发进度没有影响。紫鲸公司认为如没有资生公司的苹果开发者账户软件是没有办法部署上架。显然，苹果开发者账户并非收款之用。结合双方陈述及软件开发行业的常识可知，不提供苹果开发者账户并不影响软件开发，仅是对软件成果的上架会产生影响，故紫鲸公司所述资生公司迟延提供苹果开发者账号导致工期顺延的理由不能成立，如上所述，紫鲸公司仍应在2018年2月12日前向资生公司交付涉案软件。 从实际交付情况来看，2018年1月12日，紫鲸公司向资生公司交付了ipad端，并表示微信端因更换微信公众号需要重新接入接口和新建数据带来一定工作量，会晚些时候交付。2019年1月29日资生公司虽然称已与紫鲸公司领导协商解除合同，紫鲸公司开发人员也提出了相关异议，但资生公司2019年3月20日仍反馈称2018年3月19日紫鲸公司交付的软件修复得不错，2018年3月21日紫鲸公司再次修改交付，资生公司在2018年3月26日还在继续追问BUG修复情况。由上述交付过程以及资生公司仍继续提供苹果开发者账户的行为可见，即便紫鲸公司已经超过了2018年2月12日的交付时间，双方也以实际履行行为表明并无解除合同的合意，并对于交付期限进行了延展。在双方反复的修改交付再修改过程中，资生公司也始终未明确提出紫鲸公司最后的交付期限。因2018年4月8日的交付资生公司表示了拒绝，即便是将此前2018年3月21日的交付日视为是紫鲸公司要求的最终的交付期限，根据主合同第一条第九款的规定，紫鲸公司需要逾期超出20个工作日仍未完成开发工作资生公司才能解除合同。显然，紫鲸公司于2018年4月8日的交付未超出20个工作日的宽限期，且资生公司并未就此次交付提出有质量问题异议，显然其以合同第一条第九款主张紫鲸公司违约要求单方解除合同不能成立。 根据主合同第六条第三款第二项之规定，资生公司还可以在紫鲸公司提供的服务不符合合同要求，且未按要求及时补救或虽补救但对本合同继续履行构成无实质意义的情况下单方解除合同。从现有证据来看，资生公司自始至终未能设定紫鲸公司交付涉案软件的最终期限，虽然其对2018年3月21日的交付反馈了相关问题，但紫鲸公司也在2018年4月2日和4月8日再次修改交付，并不能视为紫鲸公司未按要求及时补救。现有证据也未显示资生公司在涉案软件开发过程中限定了紫鲸公司的具体交付日期或者明确告知了涉案软件在特定时间有特定的商业机会和特定用途，故不能认为紫鲸公司2018年4月8日对涉案软件的修改交付没有实质意义。结合资生公司认为涉案软件已迟延履行且合同已协商解除的情况下仍应紫鲸公司要求提供苹果开发者账号，并解释是出于试一试的心态看能否尽力挽回合同履行的情况，紫鲸公司的交付并不能视为没有实质意义。综上，资生公司根据合同上述规定单方解除合同缺乏法律及事实依据。 如上所述，紫鲸公司要求解除合同的请求不能成立，其单方发出的解除合同的通知并不发生合同解除的效力。基于资生公司解除合同的主张不能成立，其要求紫鲸公司退还已支付的合同开发款，要求支付违约金、律师费、财产保全保险费、承担本案诉讼费的主张均不能成立。 (二)紫鲸公司要求资生公司支付3万元开发费及违约金的主张能否成立 如上述所，基于本案合同并未解除，双方应当依据合同履行各自负担的义务。紫鲸公司在2018年4月8日向资生公司交付涉案软件后，资生公司直接表示已经通知暂停项目了，没有必要再发，会发律师函给资生公司，并未对软件是否符合合同要求提出意见。其后双方就合同验收或解除并未达成一致意见。2018年4月25日紫鲸公司再次明确提请验收交付，但未获得资生公司正面答复。根据主合同第一条第十三款的规定，紫鲸公司向资生公司发出验收申请，资生公司在5个工作日内没有反馈则视为通过本项目的初步验收，同意开始试运行。如在试运行5个工作日内没有反馈意见，则视为本项目整体验收通过。如果说紫鲸公司2018年4月8日交付时未明确提示资生公司验收，则2018年4月25日紫鲸公司明确提出了验收申请，但资生公司未提供相关反馈，故从2018年4月25日后起算10个工作日即到2018年5月10日视为项目整体验收通过较为合理。根据主合同第二条第六款的规定，资生公司应当在验收通过之日起3个工作日内向紫鲸公司支付第四期费用即3万元。据此，资生公司应当在2018年5月15日前向紫鲸公司支付3万元开发款。按照主合同第三条第三款的规定，逾期支付的，应当按合同总金额千分之一每日的标准计付违约金，违约金总额不超过合同总额的10%。紫鲸公司主张以327元/日计算违约金（最高不超过3.27万元）有合同依据及法律依据。需要注意的是，紫鲸公司主张支付违约金的起算时间应从2018年4月8日收到安装包的三日后即2018年4月12日起算，紫鲸公司的起算时间系对主合同第二条第六款的误读，考虑到合同中还有资生公司验收通过的条件，故紫鲸公司主张的起算时间不当。如上所述，违约金合理的起算时间应该为2018年5月16日。截止原审开庭前，按上述标准计算，资生公司应当支付的违约金也已超过合同总额的10%即3.27万元，按合同约定，违约金以3.27万元为限。 原审法院判决：一、资生公司于判决发生法律效力之日起十日内向紫鲸公司支付开发款30000元；二、资生公司于判决发生法律效力之日起十日内向紫鲸公司支付违约金32700元；三、驳回资生公司的全部诉讼请求。如果未按判决指定的期间履行给付金钱义务，应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定，加倍支付迟延履行期间的债务利息。原审本诉受理费7631元，原审反诉受理费1365元，财产保全费2450元，合计11446元，均由资生公司负担。 二审中，当事人没有提交新证据。 原审查明的事实基本属实，本院予以确认。 本院认为，本案的争议焦点问题是：（一）资生公司是否有权以紫鲸公司迟延交付软件为由单方解除合同；（二）能否认定紫鲸公司完成了合同约定的交付义务。 （一）资生公司是否有权以紫鲸公司延迟交付软件为由单方解除合同 资生公司上诉认为，主合同以及补充合同对于交付软件的期限约定是明确的，根据该约定，紫鲸公司最迟交付软件的时间应从2017年的11月30日起计算21个工作日，即为2017年12月28日。即使认定紫鲸公司于2018年4月8日提交的链接视为完成交付行为，也已超过了开发期限，资生公司有权单方解除合同。 本院认为，《中华人民共和国合同法》（以下简称《合同法》）第九十四条规定：“有下列情形之一的，当事人可以解除合同：（一）因不可抗力致使不能实现合同目的；（二）在履行期限届满之前，当事人一方明确表示或者以自己的行为表明不履行主要债务；（三）当事人一方迟延履行主要债务，经催告后在合理期限内仍未履行；（四）当事人一方迟延履行债务或者有其他违约行为致使不能实现合同目的；（五）法律规定的其他情形。”根据已经查明的事实，上述情况并不存在，故资生公司无权行使法定解除权。 《合同法》第九十三条规定：“当事人协商一致，可以解除合同。当事人可以约定一方解除合同的条件。解除合同的条件成就时，解除权人可以解除合同。”本案中，认定资生公司是否有权行使约定解除权，关键在于判定合同约定的资生公司单方解除合同的条件是否成就。 根据主合同约定，资生公司在以下情况下有权单方解除合同：一是主合同第一条9约定：若因紫鲸公司的原因未能在本合同规定的时间内完成本项目的开发，可与资生公司协商完成开发时间。协商不成，且因此造成的延误，逾期超过20个工作日，每逾期一天按资生公司已支付金额的1‰计算逾期金。逾期超过20个工作日，紫鲸公司仍未按本合同要求完成本项目的开发工作，则资生公司有权单方面解除本合同……。”根据该约定，资生公司有权单方面行使合同解除权的条件是：1.因紫鲸公司原因未能在合同规定的时间内完成本项目的开发；2.双方对开发时间协商不成；3.逾期超过20个工作日。二是主合同第六条3约定：如紫鲸公司提供的服务不符合合同要求，且未按要求及时补救或虽进行补救但对本合同履行构成无实质意义时，资生公司可以立即单方解除合同。 就主合同第一条9约定的行使解除权的第一个条件来说，未能在合同规定的时间内完成开发义务多系资生公司方面原因造成： 首先，资生公司延期付款。主合同第二条第五款的约定，资生公司应在确认DEMO版无误后3个工作日内向紫鲸公司支付第三期款项。2017年8月30日双方确定了DEMO版，根据上述约定，资生公司应于三个工作日即9月4日之前支付第三期款项，但其却拖至11月8日才支付。在此期间，紫鲸公司有权根据主合同第三条3的约定中止履行开发义务。此段时间应从开发期限内扣除。但原审法院将扣除期限计算为44天明显有误，应为44个工作日，本院予以纠正。 其次，资生公司变更了开发需求。2017年10月17日、30日，双方签订了两份补充合同，变更了开发需求，并于2017年11月30日就补充合同所涉新增功能的原型和UI以及主合同所涉功能的原型与UI一并进行了确认。根据上述情况及根据软件开发行业惯例，新增软件开发需求必然会影响到主合同的开发进度，不能割裂主合同和补充合同的关系来理解补充合同中的“顺延工期”。资生公司不考虑变更开发需求对主合同的影响，而简单将11月30日的原型确认日期加上补充合同所约定的顺延工期来确定软件交付期限，明显不合理。 再次，资生公司拖延提供接口文档及相关资料。主合同第一条第五款约定：“……在项目开发过程中需甲方向乙方提供相应接口文档及必备资料，甲方需在乙方规定的有效时间内给予，因甲方原因提交接口文档及相应资料时间过长造成工期延误的，乙方不承担延误责任。”涉案软件包括微信端、ipad端（员工端）和PC端（后台管理端）。根据上述合同约定，相关接文档及必备资料应由资生公司提供。紫鲸公司在2017年5月31日就通过电子邮件告知资生公司配合及时提供第三方账号资料以避免耽误项目进度；2017年12月30日还在向资生公司催问新的微信公众账号资料；2018年2月24日，紫鲸公司仍在向资生公司催问微信公众号的处理情况。此外，资生公司变更微信公众号，需要重新接入接口和新建数据，也增加了一定工作量。对于因资生公司原因造成的延误，紫鲸公司不承担责任。此外，2018年1月19日紫鲸公司要求资生公司提供苹果开发者账号及密码，2月24日紫鲸公司再次询问苹果开发者账号情况，2月26日资生公司提供了苹果开发者账号和密码，3月15日又重新提供了账号和密码。虽然苹果开发者账号和密码的提供与否不影响软件本身的开发，但本案软件开发及交付义务的完成是以最终验收通过为标准的，资生公司一再拖延提供苹果开发者账号及密码亦会对软件最终验收产生一定的影响。对原审法院相关认定，本院予以修正。 就第二个条件来说，结合本案查明的事实，经紫鲸公司数次催要，资生公司于2018年3月15日重新提供了一个苹果开发者账号和密码，并于2018年3月20日表示“昨天发过来的包，修复情况不错。起码是我们提的问题都又去修复”，还于2018年3月22日向紫鲸公司反馈相关问题文档并在3月26日追问BUG修复情况。以上事实表明，双方均以实际履行的方式在推进合同的继续履行，并未对因资生公司延误提交第三方接口文档造成开发延误而就开发时间进行再次协商，也不存在对开发时间协商不成的情况。至于资生公司提出的已于2019年1月29日与紫鲸公司协商解除合同，由于此时资生公司行使合同解除权的条件并不成就，也未与紫鲸公司达成协议解除合同的合意，故该节事实不影响认定。 就第三个条件来说，双方在合同中将“逾期超过20个工作日”作为单方解除合同的条件，表明双方一致同意在确定的交付日期基础上设定20天的宽限期。由于软件延期交付并非单方过错造成，双方亦未就交付时间进行再次协商，且均以实际行动继续履行合同。紫鲸公司于2018年3月19日交付软件，3月21日再次修改交付，2018年3月22日资生公司向紫鲸公司反馈相关问题文档并在3月26日追问BUG修复情况，且在4月2日紫荆公司提供新的开发包链接后协商终验时间，却在2018年4月8日直接拒绝接受紫鲸公司交付的软件，明显不满足“逾期超过20个工作日”的条件。因此，主合同第一条9约定的单方解除条件并不成就。 就主合同第六条3约定的行使解除权的条件来说，从紫鲸公司软件第一次交付后的修改时间来看不可谓“不及时”，也未达到“对合同履行构成无实质意义”，故单方解除条件也不成就。 综上，资生公司行使解除权的条件不成就，其无权单方解除合同。资生公司关于其符合单方解除合同条件的上诉理由依据不足，本院不予支持。 （二）能否认定紫鲸公司完成了合同约定的交付义务 资生公司认为，原审法院认定紫鲸公司于2018年4月8日完成了软件交付属于事实认定错误，紫鲸公司未完成软件的各项开发功能，软件反复修改仍不能达到约定功能，且未提交测试报告，因此未完成合同约定的交付义务。 对此，本院认为，主合同第一条13约定：本开发项目验收工作由资生公司完成。如果紫鲸公司向资生公司书面发出验收申请，资生公司5个工作日内没有反馈，则视为通过本项目的初步验收，同意开始试运行。如资生公司在项目试运行开始后5个工作日内没有反馈意见，则视为本项目整体验收通过。根据该约定，结合合同履行情况，2018年4月25日紫鲸公司明确提请资生公司验收，但未获得资生公司正面答复。资生公司五日内没有反馈，应视为通过本项目的初步验收，同意开始试运行。资生公司在项目试运行开始后5个工作日内仍没有反馈意见，原审法院从2018年4月25日开始计算10个工作日将2018年5月10日视为涉案软件项目整体验收通过并无不当，本院予以认可。此外，软件开发合同中，判断开发义务是否已经完成应以开发的软件是否符合合同约定为标准，而非开发方是否已经提交了测试报告。本案中，资生公司主张对方开发义务没有完成却不能具体说明紫鲸公司提交的软件何处不符合合同约定，故对其意见本院不予采纳。 综上所述，资生公司的上诉请求不能成立，应予驳回。原审判决认定事实清楚，适用法律正确，裁判结果无误。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定，判决如下： 驳回上诉，维持原判。 二审案件受理费8996元，由广州资生生物科技有限公司负担。 本判决为终审判决。 审判长 罗 霞 审判员 徐 飞 审判员 岳利浩 二〇二〇年四月二十八日 法官助理王晓琳 书记员孙航 裁判要点                            案  号                       （2019）最高法知民终710号                               案  由                       计算机软件开发合同纠纷                               合 议 庭                       审判长：罗霞             审判员：徐飞、岳利浩                                                     法官助理：王晓琳                       书记员：孙航                               裁判日期                       2020年4月28日                               关 键 词                       计算机软件开发合同；合同解除权；约定解除权                               当 事 人                       上诉人（原审原告、反诉被告）：广州资生生物科技有限公司；             被上诉人（原审被告、反诉原告）：广州紫鲸互联网科技有限公司。                               裁判结果                       驳回上诉，维持原判。             （原判主文：一、广州资生生物科技有限公司于本判决发生法律效力之日起十日内向广州紫鲸互联网科技有限公司支付开发款30000元；二、广州资生生物科技有限公司于本判决发生法律效力之日起十日内向广州紫鲸互联网科技有限公司支付违约金32700元；三、驳回广州资生生物科技有限公司的全部诉讼请求。）                               相关法条                       《中华人民共和国合同法》第九十三条、第九十四条。                               法律问题                       合同解除权的行使                               裁判观点                       合同解除权分为法定解除权和约定解除权。当事人行使法定解除权或约定解除权的条件未成就，无权单方解除合同。                               注：本摘要并非判决书之组成部分，不具有法律效力。