广东省高级人民法院
民 事 判 决 书
（2017）粤民终913号
上诉人（一审被告、反诉原告）：广州启汇营销策划有限公司，住所地广东省广州市海珠区新港东路1068号603房。
法定代表人：章小健，该公司总经理。
委托诉讼代理人：刘海辉，广东金桥百信律师事务所律师。
委托诉讼代理人：蔡诗敏，广东金桥百信律师事务所律师。
被上诉人（一审原告、反诉被告）：广东绿洲国际旅行社有限公司，住所地广东省广州市越秀区东风中路363号24层自编02房。
法定代表人：周汉耀，该公司董事长。
委托诉讼代理人：张俊，男，该公司员工。
委托诉讼代理人：宋策，广东广信君达律师事务所律师。
上诉人广州启汇营销策划有限公司（以下简称启汇公司）因与被上诉人广东绿洲国际旅行社有限公司（以下简称绿洲公司）计算机软件开发合同纠纷一案，不服广州知识产权法院（2015）粤知法著民初字第52号民事判决，向本院提起上诉。本院于2017年5月3日立案后依法组成合议庭进行了审理。启汇公司的委托诉讼代理人刘海辉、蔡诗敏和绿洲公司的委托诉讼代理人张俊、宋策到庭参加了诉讼活动。本案现已审理终结。
启汇公司上诉请求：1.依法撤销一审判决；2.一、二审诉讼费用由绿洲公司负担。主要事实和理由：（一）一审法院认定事实错误。1.一审法院片面采纳绿洲公司的意见，认为启汇公司开发的涉案APP软件多处不符合合同要求，该认定与事实不符。2.一审法院认为短信支付服务费用属于启汇公司违约而造成的直接损失，该认定有误。（二）一审法院错误适用法律。本案本质为合同纠纷，不是著作权侵权纠纷，一审判决启汇公司赔偿绿洲公司维权合理费用不符合法律规定。综上，请求二审法院依法支持启汇公司的上诉请求。
绿洲公司二审中答辩认为，一审法院认定事实清楚，适用法律正确，请求二审法院驳回上诉，维持原判。
绿洲公司向一审法院提起诉讼，请求法院判令启汇公司：1.返还已经收取的报酬45500元；2.赔偿为履行本合同向第三方购买短信业务支付的费用20000元；3.赔偿因本案支付的律师代理费8000元；4.负担本案诉讼费用。
启汇公司向一审法院提起反诉，请求法院判令绿洲公司：1.支付合同尾款40500元；2.负担本案诉讼费用。
一审法院认定事实：2014年6月19日，绿洲公司（合同甲方）与启汇公司（合同乙方）就甲方委托乙方进行智能手机APP项目开发事项，签订《智能手机APP项目开发合同》（以下简称合同）。合同第一条约定乙方按照合同附件即《智能手机APP功能需求细目表》（以下简称细目表）的内容为甲方提供Android（即安卓版）和iphone（即IOS版）两个平台的APP项目客户端（以下简称涉案APP）的开发服务，乙方应在UI界面完成并经客户回复邮件确认后45个工作日内完成相关软件开发、测试并交付产品。第二条约定乙方保证涉案APP项目功能符合细目表的要求，并且正常、稳定运行。第四条约定合同总金额为81000元，甲方应在签订合同之日起3个工作日内支付合同总金额的50%，即40500元，余款40500元在涉案APP项目验收合格起3个工作日内支付。其后，双方又先后于同年8月28日和11月7日签订《关于软件开发新增功能的补充协议》和《关于软件开发新增功能的变更协议》。前述《补充协议》系双方就涉案APP软件开发新增功能达成的协议，除了新增功能开发费用5000元，双方还约定新增加功能的工期增加5个工作日。前述《变更协议》是将原合同约定的“在线支付”方式由“银联支付”改为“微信支付”。双方因履行合同过程中发生纠纷，诉至一审法院。庭审中，双方对绿洲公司已支付45500元（其中5000元为《补充协议》约定的开发费）、未支付余款40500元，及涉案APP开发工期为50个工作日的事实均无争议。经整理双方诉辩意见，本案争议在于：1.启汇公司有无依约履行合同义务；2.违约方的认定及其责任承担。
启汇公司有无依约履行合同义务
该问题可分为两部分：1.涉案APP软件是否符合合同要求；2.启汇公司有无逾期交付涉案APP。
1.涉案APP软件是否符合合同要求
庭审中双方确认涉案APP软件的具体内容和验收标准以细目表的约定为准。经查，上述细目表分为需求分析、接口设计、系统设计、界面、后台、Android＆IOS手机客户端、其它等共7个大类、56个小项的内容。启汇公司认为涉案APP已全部具备并符合细目表的内容和标准。绿洲公司则以广东省广州市广州公证处（2015）粤广广州第063294号公证书（以下简称公证书）为证，称涉案APP不符合细目表中第9，11，13-15，17-19，21，24，27-31，33，34，36，41，50，55，56小项的对应要求，功能缺失或存在缺陷。经查，上述公证书记载广州市广州公证处根据绿洲公司的证据保全申请，安排公证员和公证人员对绿洲公司委托代理人于2015年4月15日在该公证处操作公证处的计算机和互联网络，在浏览器点击登录“绿洲国旅”并测试该系统，实时录像、截屏并打印截图的全过程进行监督。公证书证明其所附的打印件是上述过程实时打印所得，与实际情况相符。绿洲公司结合上述公证书，具体指出的涉案APP与细目表不符之处如下：
第9项本地数据库设计，要求整个APP的数据库使用PHP语言。庭审中，双方确认设计APP数据库实际使用语言的是java。绿洲公司称PHP和java是两种不同的开发语言，公司网站数据库使用的是PHP，如果新开发的APP和公司网站数据库的语言不同，公司就需要额外的懂java的人员来维护后台，从而增加成本。启汇公司辩称服务器对语言没有限制，PHP和java对服务器没有太大的影响，APP使用PHP语言不会额外增加绿洲公司的成本。
第11项涉及后台和客户端的界面美工设计。公证书显示，用不同的浏览器访问涉案APP后台出现的页面不完全相同，甚至有页面空白缺失。绿洲公司称可证明该APP软件兼容性很差。启汇公司表示只要切换模式即可解决兼容的问题，该功能已经实现。
第13、14项涉及权限管理，要求“超级管理员”对整个后台控制，“普通管理员”是由超级管理员分配权限。公证书显示涉案APP后台的“超级管理员”和“普通管理员”管理权限相同，且页面均显示“系统管理员”。绿洲公司称“超级管理员”和“普通管理员”权限应有所区分且管理员的类型能够显示在页面中，以方便公司对在线管理员的身份进行确认。启汇公司称系统管理员的具体分配权在用户，即“普通管理员”的权限应由绿洲公司指定的“超级管理员”进行分配和限制，APP在交付时未对两者进行权限区分符合合同约定。
第15项会员列表，要求可添加、删除、修改会员列表的个人资料。公证书显示涉案APP的“管理员帐户管理”模块列表中管理员帐户和会员帐户出现在同一张列表中，且注册会员的帐户名称可以修改成管理员的帐户名称。绿洲公司认为会员应单独列表，注册会员的权限不应与管理员权限相关联，会员用户也应不允许可自行修改成管理员用户，否则有操作的风险。启汇公司辩称此设计的目的是为了使用户和管理员身份能灵活转换，符合人性化的设计，符合合同要求。
第17项会员积分查看和管理。公证书显示涉案APP会员积分可以且仅可查看。绿洲公司称会员积分不能管理，不能导出，故不符合合同要求。启汇公司称积分查看也属“管理”，管理和导出是两个不同的概念，积分导出功能是一个独立的需求，需要另外报价。
第18项订单管理，要求会员订单查看和代办进度更新。公证书显示涉案APP某具体订单号的订单状态显示为“处理中”或“未支付”，“添加日期”均为该订单最初生成的时间。绿洲公司称订单状态发生变更时“添加日期”不能同步更新，后台无法对订单进行管理，无法实现代办进度更新，故不符合合同要求。
第19项签证信息管理。公证书显示涉案APP页面上同一个目的地，如国内游目的地“长春”有两个选项。绿洲公司认为目的地应该是唯一的，客户可重复选择登陆同一个目的地，不合理。启汇公司认为个别国家的名称和首都的名称是相同的，例如新加坡，分开列表是为了方便用户体验，且这不违反合同的约定。
第21项涉及优惠管理，即热门优惠活动信息的管理。公证书显示用户选择进入涉案APP某具体旅游目的地后，APP页面才会显示该旅游目的地是否存在优惠活动。绿洲公司表示双方口头约定该“优惠管理”是与旅游目的地并列的单独的信息板块，即用户可先点击“优惠活动”板块，再选择进入相应有优惠活动的旅游目的地，以方便用户对比优惠幅度，无需选择目的地后再点开每一个如签证、旅游产品才能看到优惠。启汇公司不予认同，称绿洲公司上述主张属超合同以外的要求。
第24项消息推送，要求系统推送消息给所有用户（普通推送）；第50项推送设置，要求设置是否接收系统推送；查看历史推送消息。绿洲公司称涉案APP通过第三方平台可以实现消息推送功能，但不能通过APP后台直接向客户推送消息，且推送过程中存在如下缺陷：1.后台的推送功能不稳定。安卓版推送信息时系统会强行退出。2.推送的信息不是简要的文字，而是产品的链接。3.在手机端不能查看推送过来的历史信息。启汇公司表示：1.该功能只是要求消息推送，没有注明推送消息内容的要求，推送文字或链接都是消息推送，故该功能已经实现。2.对方使用第三方免费推送平台推送消息，而不使用收费套餐推送，所以影响推送效果。3.由后台直接推送消息属超合同的要求。
第27项新软件版本的发布更新。公证书显示涉案APP显示版本“最新”，但没有检查更新系统的选项。绿洲公司据此认为该功能没有实现。启汇公司称IOS系统不需要检测更新，因iphone手机会自带更新，Android版已显示是最新版本，已满足合同约定。
第28项安全设置，要求后台登录后持续没操作达30分钟即自动退出登陆状态。绿洲公司称涉案APP后台没有该功能，但没有证据证明。启汇公司不同意绿洲公司该主张。
第29项备份，要求数据可手动备份到服务器。绿洲公司称涉案APP后台网站没有“备份”的板块，该功能缺失。启汇公司称可以实现该功能，但需要技术人员手动备份到服务器，这涉及服务器的维护问题。
第30项操作日志，要求查看和管理管理人员在后台的操作记录。公证书显示涉案APP可以查看管理人员的操作方式是“登录”或“退出”状态。绿洲公司称该项目功能除了显示操作状态，还应包括操作的痕迹所形成的日志记录，否则出现问题难以排查。启汇公司认为双方对此没有具体约定，用户能登入登出可证明该功能已经实现。
第31项注销，即注销此次后台登陆记录。绿洲公司称涉案APP后台登陆记录只能查看，不能注销。启汇公司认为该功能已经实现。
第33项登陆，要求输入注册时填写的用户名（手机号码）和密码可登入APP，可设定“记住密码”和“自动登陆”。绿洲公司表示涉案APP没有该功能。启汇公司认为该功能已经实现。
第34项办理签证，要求：1.定位用户所在城市或者切换用户要办签证的城市。2.签证国家选择，热门城市排列在前，国家按首字母顺序排列。3.签证详情查看及购买。4.邮寄签证需要提交的证件，用户把快递号码备注在订单信息里；代办机构在寄回证件时同样可以备注快递号码在订单信息里。绿洲公司称涉案APP：1.安卓版可以定位，IOS版不能定位；2.没有做热门城市，只有国家列表；3.如果多次提交订单并使用积分，会出现负积分，然后导致不能再下单购买了；4.支付订单不能全部删除。启汇公司称负积分问题已解决，上述功能已经实现。
第36项营业部查询，要求根据用户手机定位查看附近的营业点，并且地图路线指引提示。绿洲公司称涉案APP只显示用户和营业部地点的直接连线，没有路线指引，影响用户通过该指引功能找到营业部，没有指引信息，不方便用户使用，故该指引功能未实现。启汇公司表示直接连接就是路线指引，该功能已实现。
第41项海岛游产品详情，要求用图片和文字介绍旅游产品信息，可以预约出游时间，不需要支付。公证书显示涉案APP“添加线路推荐”信息更新失败，绿洲公司称该模块添加的推荐线路保存失败，且不能用图片和文字来介绍，该功能缺失。启汇公司不予认同。
第55、56项,要求编写对APP的每个功能板块以及整体功能的测试报告和验收文档。绿洲公司称启汇公司没有进行相关测试，没有提供测试报告和验收文档。启汇公司称实际已完成该项工作，只因对方多次提出修改意见且一直否认进行了验收，所以相关报告才没有提供给对方，但没有提供相关证据。
绿洲公司还提供了未经公证封存的称是涉案APP运行的视频光盘，启汇公司对该证据的真实性不予认可。庭审中，双方确认本案争议发生后启汇公司已关闭涉案APP，即无法通过现场演示验证涉案APP的运行情况。
启汇公司为证明其提供的APP软件符合合同要求，提供了以下证据为证：1.启汇公司于2014年8月28日出具的《原型确认书》（盖有双方公司印章），内容显示绿洲公司盖章确认启汇公司开发完成的“原型”。2.启汇公司于2014年10月9日出具的《客户项目确认书》（盖有双方公司印章），内容显示绿洲公司盖章确认启汇公司开发完成的“UI子页面”。3.启汇公司于2014年10月27日向绿洲公司出具的信函（盖有启汇公司印章），内容是通知绿洲公司于同年11月15日前提交该项目的支付接口和短信接口。绿洲公司对该3份证据的真实性均无异议，认为“原型”、“UI子页面”是前期基础工作，不能证明启汇公司最终交付涉案APP已达标。4.启汇公司于2015年1月31日出具的《客户项目确认书》（无原件，盖有双方公司印章），内容显示绿洲公司盖章确认涉案APP软件开发项目已完成并达到验收标准和绿洲公司的要求。经目测，该证据上的绿洲公司印章明显大于前两份证据中绿洲公司的印章，与启汇公司印章大小的比例关系也与前两份证据中两公司印章的大小比例关系不同。启汇公司称因双方一直是通过“微信”往来确认，该证据从手机下载而来，故无原件，且印章大小扭曲。绿洲公司对其真实性不予确认，认为启汇公司伪造公章。
2.启汇公司是否如期交付涉案APP
关于履行期限，双方确认根据合同第1条第3点启汇公司应在UI界面完成并经客户回复邮件确认后45个工作日内完成相关软件开发、测试并交付产品的约定，再结合双方于2014年11月7日签订的《补充协议》关于新增加功能的工期增加5个工作日的约定，启汇公司完成涉案APP的工期应为绿洲公司交付全部相关数据资料后的50个工作日内。双方争议在于上述50个工作日开发工期的起算时间。
绿洲公司提出其在2014年11月7日已通过邮件将所有接口数据交付启汇公司，50个工作日的工期应自此起算。为此绿洲公司举证如下：1.2014年11月7日双方往来邮件信息，拟证明其已在启汇公司要求的时限内提交接口数据。2.绿洲公司发送给启汇公司的邮件，内容是告知启汇公司其微信支付申请已通过审核，拟证明绿洲公司微信支付申请通过审核时间是2014年11月21日。3.启汇公司提供的UI初稿，绿洲公司制作UI文字、图标及其形成时间记录，拟证明启汇公司提供的UI初稿使用界面不符合绿洲公司的合理要求。4.绿洲公司LOGO，拟证明启汇公司提供的LOGO不符合绿洲公司的要求，涉案APP的LOGO是绿洲公司制作的。
启汇公司称直至2015年1月9日绿洲公司才邮件告知腾讯公司已审核通过该公司使用“微信支付”方式，自此才可认为绿洲公司提交了完整的数据材料，因而工期应从2015年1月9日起算，故启汇公司于2015年3月2日交付产品并未逾期。
二、违约方的认定及其责任承担
1.合同履行现况
绿洲公司认为合同已解除，启汇公司应退款并赔偿损失，证据是：1.绿洲公司于2015年4月9日向启汇公司发出的《关于绿洲国旅APP问题点要求限期整改的通知函》，主要内容是叙述其此前已多次向启汇公司沟通涉案APP存在的问题，函中一一指出涉案APP存在的缺陷，要求启汇公司在2015年4月10日将涉案APP修正完毕，在此期限前没有修正完毕。2.绿洲公司于2015年4月17日向启汇公司发出的《关于解除及其补充协议的律师函》及邮政妥投回执，主要内容是因启汇公司违反合同约定，使其合同目的不能实现，故通知启汇公司解除合同及两协议，要求启汇公司返还其已支付的报酬并赔偿其向案外人购买短信服务支付的费用。启汇公司对上述证据的真实性无异议，但对关联性有异议，认为双方的合同已经履行完毕，绿洲公司在该两函件中指出的问题不存在。
2.合同价款的支付及相关费用的发生
双方确认绿洲公司已向启汇公司支付合同约定50%的开发费即40500元和双方在《关于软件开发新增功能的补充协议》因新增功能约定的开发费5000元，即绿洲公司已向启汇公司合共支付45500元，未付合同余款40500元。双方争议在于绿洲公司认为启汇公司违约，应返还其已付的45500元，启汇公司则认为合同已履行完毕，绿洲公司应继续支付余款。
绿洲公司请求启汇公司赔偿经济损失20000元，理据是由于涉案APP的后台自身无法实现细目表第24项“系统推送消息给所有用户（普通推送）”的功能，公司不得不向第三方短信服务公司购买了短信服务并支付了20000元，现合同解除，该笔费用应由对方支付。为此绿洲公司提供了其与北京亿美软通科技有限公司于2014年11月15日签订的《通信业务协议书》及面额为2万元的发票为证。启汇公司对该证据的真实性、合法性无异议，但对关联性有异议，认为该笔费用与本案无关。
绿洲公司称为维护自身合法权益，因本案纠纷聘请律师提供代理服务支出8000元，依法也应由启汇公司承担，提供了委托代理合同和律师费发票为证。启汇公司对证据的真实性无异议，但认为对方该请求没有法律依据。
一审法院认为：当事人双方于2014年6月19日签订的涉案合同是双方真实意思表示，并未违反国家法律禁止性规定，双方均应严格遵守。
双方对涉案APP以细目表的内容为验收标准，开发工期为50个工作日，及绿洲公司已付45500元、未付40500元的事实无争议，一审法院对上述事实予以确认，对双方争议焦点认定如下：
启汇公司有无依约履行合同义务
（一）涉案APP软件是否符合合同（细目表）的要求
1.启汇公司的诉讼主张和相关证据
鉴于绿洲公司对启汇公司提供的《原型确认书》、《客户项目确认书》及2014年10月27日信函无争议，一审法院对该三份证据予以采纳，对证据的内容予以采信。但该部分证据只能证明启汇公司阶段性完成的涉案APP软件开发工作获得绿洲公司认可，不能证明该公司最终交付涉案APP已达标。至于启汇公司出具的落款时间为2015年1月31日的《客户项目确认书》，首先该证据无原件，绿洲公司对该证据的真实性不予认可。其次，经辨认，确认书上所盖的绿洲公司印章明显大于其他证据中绿洲公司的印章。而即使在同一份证据中，绿洲公司与启汇公司印章大小的对比关系也与其他书证中两公司印章的大小比例关系不同。启汇公司称该证据因从“微信”下载而来，才使得证据上绿洲公司印章变形。对此一审法院认为，证据上同时显示了两公司的印章及其他文字，而唯独绿洲公司印章在下载过程中发生变形，启汇公司该辩解意见实属牵强。再次，绿洲公司提交的广州市广州公证处（2015）粤广广州第063294号公证书（以下简称公证书）反映了涉案APP在公证保全之时，即2015年4月15日的运行情况。根据该证据显示的内容，涉案APP软件运行时存在诸多不完全符合双方合同约定之处。根据《最高人民法院关于民事诉讼证据的若干规定》第七十七条第（一）项的规定，公文书证的证明力一般大于其他书证。加之启汇公司前述《客户项目确认书》存在疑点，故一审法院综合上述分析，对启汇公司该证据的真实性不予确认，对启汇公司关于涉案APP项目已按要求开发完成并经绿洲公司验收的诉讼主张不予支持。
2.绿洲公司的诉讼主张和相关证据
本案中，因涉案APP已关闭，无法现场演示其运行情况。绿洲公司提供的未经公证封存的涉案APP运行视频光盘，因启汇公司对其真实性不予认可，一审法院对之不予采纳。至于绿洲公司提供涉案公证书，根据民事诉讼证据规则，在无相反证据情况下，一审法院认定其真实、合法，将该证据反映的内容，即涉案APP在2015年4月15日的运行情况作为认定本案事实的根据。就绿洲公司对照细目表，以上述公证书为据指出的涉案APP缺失的功能或存在的问题，一审法院认定如下：
第9项数据库语言。双方均确认涉案APP使用的语言是java，而非PHP。一审法院认为，数据库语言涉及整个软件程序的运行和维护，该语言种类既然作为单独的功能需求在细目表中列出，启汇公司自应根据合同要求设定APP数据库语言。启汇公司关于服务器对语言种类不设限制，涉案APP使用PHP语言不会额外增加绿洲公司成本的意见不能成为其随意变更合同约定的理由，一审法院对启汇公司该辩解意见不予采纳。
第11项涉及APP后台和客户端的界面美工设计。根据双方在庭审中的陈述，可知部分、但非全部通用的浏览器可以打开涉案APP。对此一审法院认为，由于绿洲公司委托开发的涉案APP面向的是不知名的使用不同浏览器的手机用户，即使只有一种浏览器无法兼容涉案APP，也会造成使用相关浏览器的手机用户群体无法流畅使用涉案APP。换言之，该功能对部分用户是缺失的，不符合合同目的。
第13、14项涉及权限管理，公证书显示涉案APP后台的“超级管理员”和“普通管理员”管理权限相同，启汇公司对此并无异议，只是认为分配权在用户，即“普通管理员”的权限应由绿洲公司指定的“超级管理员”进行分配和限制。对此一审法院认为，既然细目表中将“超级管理员”和“普通管理员”区分开来分列为两个功能需求，该两个功能就应在涉案APP中有所体现。涉案APP中两者功能无区别，应视为不符合合同要求。同理，第17项会员积分查看和管理。积分“查看”和“管理”在细目表中系分离的功能需求，可见合同双方均认可积分“查看”和“管理”是不同的功能。涉案APP会员积分仅可查看，不能管理和导出，不符合合同要求。启汇公司称积分“查看”亦属“管理”的辩解意见不能成立。
第15项会员列表。根据词意并结合合同目的，“会员列表”应理解为会员单独的列表，若将会员与包括管理员在内的所有登录在线的人员共同列表，则完全无必要强调是“会员”的列表。绿洲公司认为会员应单独列表，注册会员的权限不应与管理员权限相关联，也不应允许会员用户自行修改成管理员用户合理，应予支持。涉案APP不具备该项功能，应认定启汇公司违反合同约定。启汇公司称此设计系出于人性化服务的目的的辩解意见不能成立，不予采纳。
第18项要求会员订单查看和代办进度更新。涉案APP只能显示某具体订单号最初生成的时间，不能追踪整个订单的流程，应认定为该功能缺失。
第19项签证信息管理。涉案APP页面上个别目的地同时出现两个选项，从常理出发确实会造成客户困惑，也不便于管理者管理，绿洲公司认为涉案APP该项功能设计不合理符合生活常识。启汇公司辩称此设计是为了方便用户体验于理不合，不予采纳。
第21项优惠管理。双方争议在于客户登录涉案APP后进入“优惠活动”的路径选择问题。绿洲公司称双方口头约定“优惠管理”应与旅游目的地作为单独的、并列的信息板块，因启汇公司不予认同，故一审法院对绿洲公司该主张不予采信。因涉案APP确可显示相应目的地的优惠情况，故一审法院认定该功能满足合同要求。
第24项“系统推送消息给所有用户（普通推送）”、第50项“设置是否接收系统推送；查看历史推送消息”。双方对涉案APP通过第三方平台可实现消息推送无争议。双方争议在于：1.通过第三方平台间接推送，而不是通过APP后台直接推送消息是否符合合同约定；2.推送的内容为产品链接是否符合合同约定；3.历史推送消息的查看功能是否包括客户也可通过手机端查看历史推送消息。对此一审法院认为，双方的分歧在表面上反映为各自对文意理解的分歧。鉴于上述功能并非专业术语，不存在签约双方需逐词句对每一个功能的具体含义进行书面限定的必要，故一审法院根据合同的目的及生活常识，对双方上述分歧判定如下：1.系统推送消息应理解为APP后台直接推送。通过第三方平台间接推送虽也可最终实现推送消息的功能，但增加该中间环节势必会增加用户的人力和资金成本，亦会影响推送效果。绿洲公司作为软件委托开发方在签约时未必知晓“推送消息”存在后台直接推送和第三方平台推送的区别，但启汇公司作为专业从业商对此应十分清楚明白。通过APP软件后台直接推送消息符合委托开发方即绿洲公司的利益，可推定绿洲公司签约时对该功能设想就是后台直接推送消息。而启汇公司作为APP软件的开发方和从业商，如其认为最终交付的APP软件后台不能直接推送消息而需要绿洲公司另外付费通过第三方平台才可实现此功能，根据诚实信用原则，其负有对此进行释明的义务。据此一审法院认为，启汇公司作为掌握专业技术和相关信息的一方，其在签约时对实现该功能的路径未作声明，应视为其亦默认涉案APP软件可实现通过后台直接推送消息。2.推送产品链接不符合“消息推送”的功能需求。涉案APP的服务对象是通过手机选择服务内容和接收信息的消费者群体。APP客户端即客户通过查看被动接收的以文字为内容的信息，即可知晓消息的详情，消息的发送者即绿洲公司设定该功能的目的即已实现。反之，客户收到以产品链接为内容的信息后，必须点击链接后才可查看并知晓消息的详情。在此情况下，绿洲公司必须通过用户主动行为的配合才可实现其设定该功能的目的。根据生活常识，需要通过点击链接才可查看信息并获知消息的内容不符合绝大部分手机APP使用者的使用习惯。基于此，可定涉案APP推送产品链接的信息不符合“消息推送”的功能需求，不符合绿洲公司开发该功能的目的。如前所述，在启汇公司无事先声明“消息推送”也包括产品链接的推送的情况下，应认定启汇公司没有履行该项合同要求。3.历史推送消息查看的主体应包括手机端客户。从生活常识出发，快节奏的手机APP使用者在绝大多数情况下都难以及时查看消息。消息的发送者和接收者均可查看当前和历史消息，为APP软件该功能的应有之意。如果只是单方有权查看，或只能查看当前消息，涉案APP该消息推送功能几无存在价值。启汇公司称只要绿洲公司一方可查看当前和历史消息，则可认为该功能已实现的辩解意见不能成立，不予采信。综上所述，尽管当事人在合同中未对上述功能的内涵进行细致描述，但责任不在绿洲公司一方。启汇公司在履约过程中以合同未作明确约定为由，辩称绿洲公司上述需求属于“超合同的需求”不符合诚实信用原则，脱离了合同目的，其辩解意见不能成立，并应承担相应的不利后果。
第27项涉及新软件版本的发布更新。根据合同内容，涉案APP应设有询问使用者是否选择更新版本的提示，涉案APP没有可更新版本的选项，应认定为该功能缺失。手机的功能不可替代应用于手机的APP软件的功能，APP软件版本是否“最新”的显示功能也有别于该软件可提示用户选择更新版本的功能。启汇公司称iphone手机自带系统更新功能，Android版目前已是最新版本，辩称涉案APP已具有该功能理据不足。
第28项涉及安全设置。由于绿洲公司未能举证证明涉案APP缺失该功能，一审法院对绿洲公司该陈述不予采信。
第29项要求数据可手动备份到服务器，应理解为涉案APP在交付时就已具备该功能且不需要额外的技术操作。启汇公司称实现该功能的方式是在服务器维护过程中由技术人员手动备份到服务器，不符合合同约定。
第30项涉及查看和管理管理人员在后台的操作记录。从文意理解，所谓操作记录表示整个操作过程。涉案APP仅可显示登陆者的当前操作状态，不能显示历史操作痕迹，应认定不符合合同要求。同理，涉案APP后台登陆记录只能查看，不能注销，不能记忆用户名（手机号码）和密码从而实现自动登陆，也不符合第31、33项相应的功能需求。
第34项涉及办理签证，要求：1.定位用户所在城市或者切换用户要办签证的城市。2.签证国家选择，热门城市排列在前，国家按首字母顺序排列。3.签证详情查看及购买。4.邮寄签证需要提交的证件，用户把快递号码备注在订单信息里；代办机构在寄回证件时同样可以备注快递号码在订单信息里。公证书显示，涉案APP存在IOS版不能定位、只有国家列表没有热门城市列表、用户积分出现负数以至不能在购买签证服务等问题，均不符合合同约定。
第36项涉及营业部查询，要求根据用户手机定位查看附近的营业点，并且地图路线指引提示。涉案APP不能显示用户和营业部地点的地图路线指引，应认定为该功能未实现。两点之间的直接连线充其量只能表明两个坐标点的相对距离，但不构成通常理解上的“路线指引”，启汇公司相关辩解意见不能成立。
第41项要求涉案APP可实现客户预约绿洲公司用图片和文字介绍的海岛游产品的功能，虽未明确要求客户可保存旅游公司推荐的路线，但预约产品自应以客户可添加、保存“线路推荐”信息为前提。涉案APP不能保存添加的推荐线路，且不能用图片和文字来介绍该项旅游产品，不符合合同要求。
第55、56项要求编写涉案APP的单个和整体功能的测试报告和验收文档。启汇公司称已依约履行但直至庭审都未能没有提供相关测试报告和验收文档，应认定其并未履行该项工作。
综上所述，一审法院认为根据涉案APP软件在2015年4月15日的运行情况，可认定涉案APP近三分之一比例的功能或不能满足合同细目表的要求或不能正常运行。
（二）启汇公司有否逾期交付涉案APP
双方均确认涉案APP的开发工期是50个工作日。绿洲公司主张从2014年11月7日起算，启汇公司主张从2015年1月9日起算。一审法院认为即便从启汇公司主张的2015年1月9日起算，截止绿洲公司采取公证保全的2015年4月15日，也已超过50个工作日。前文已分析认定涉案APP软件在2015年4月15日，即在合同约定的开发期限届满后的运行情况不符合合同要求，故再辨明启汇公司是否逾期交付符合涉案APP已无必要。
二、违约方的认定及其责任承担
计算机软件功能相互间多存在连接关系，其中有部分功能设定不符合合同要求或运行不流畅无疑会影响到整体计算机软件的运行效能，从而影响委托开发方开发该软件的目的。换言之，计算机软件只有在整体上满足委托开发方的功能需求和符合双方约定的验收标准的情况下，才具有经济价值。本案中，由于涉案APP近三分之一的功能或不能满足合同细目表的要求或不能正常运行，故一审法院认定启汇公司未充分履行双方合同第二条约定的义务，致使绿洲公司合同目的无法实现，已经构成违约。绿洲公司支付合同尾款以启汇公司依约履行合同为前提，故在启汇公司交付的产品不符合合同约定的情况下，绿洲公司未支付合同尾款不构成违约。综上所述，启汇公司依法应承担返还财产，赔偿绿洲公司损失的违约责任。
双方均确认绿洲公司已付45500元，未付合同余款40500元。由于启汇公司违约致使绿洲公司合同目的落空，依法应返还已收取绿洲公司的款项45500元。绿洲公司该项诉请有理，予以支持。由于启汇公司交付的产品不符合合同要求，其要求绿洲公司继续支付余款40500元没有事实和法律依据，不予支持。
绿洲公司为弥补启汇公司开发的涉案APP的功能缺陷，购买第三人信息平台服务而支出20000元真实、合法，与启汇公司前述违约行为有直接的关联性。如绿洲公司另行委托开发APP软件并可实现从APP后台直接发送消息，自无继续借助第三方平台提供该项服务的需求。一审法院据此认定绿洲公司购买的该项服务不具有后续使用价值，绿洲公司支出的该项费用属于因启汇公司违约行为而直接造成的损失。绿洲公司请求启汇公司予以赔偿合法有据，予以支持。
至于绿洲公司请求启汇公司赔偿8000元律师服务代理费的请求，鉴于此项服务真实发生，属绿洲公司维护自身合法权益而必要发生的费用；相对于本案的复杂程度，其金额尚属合理，依法亦应予支持。本案为计算机软件开发合同纠纷，计算机软件属著作权标的物之一种。启汇公司称本案属加工承揽纠纷，无需依照著作权侵权法律的相关规定赔偿绿洲公司维权合理费用不符合法律规定，不予支持。
一审法院依照《中华人民共和国合同法》第六十条、第一百零七条、第一百一十三条，《最高人民法院关于审理著作权民事纠纷案件适用法律若干问题的解释》第二十六条，《中华人民共和国民事诉讼法》第六十四条的规定，判决：一、启汇公司于该判决发生法律效力之日起十日内，返还绿洲公司开发费用45500元；二、启汇公司于该判决发生法律效力之日起十日内，赔偿绿洲公司经济损失20000元；三、启汇公司于该判决发生法律效力之日起十日内，赔偿绿洲公司维权合理费用支出8000元；四、驳回启汇公司的反诉请求。一审本诉受理费1637.5元，反诉受理费812.5元，均由启汇公司负担。
二审中，双方当事人没有提交新证据。
本院经审理查明，一审法院认定的事实基本属实，本院予以确认。另查明：二审中，双方确认启汇公司向绿洲公司提供了涉案APP部分安装包后，因双方就该APP是否符合合同约定产生争议，在涉案公证书公证完后，启汇公司关闭了涉案APP的后台，致该APP不能使用，因此二审中仅能将公证书所附光盘内容进行当庭演示。
本院认为，本案系计算机软件开发合同纠纷。综合启汇公司的上诉理由和绿洲公司的答辩意见，本院归纳本案二审的焦点问题为：1.启汇公司有无依约履行合同义务；2.若构成违约，启汇公司应承担什么民事责任；3.一审判决启汇公司赔偿绿洲公司合理维权费用8000元是否合法合理。
（一）启汇公司有无依约履行合同义务
根据启汇公司和绿洲公司签订的合同以及细目表，涉案APP应当符合细目表约定的各项要求，并能稳定运行。启汇公司上诉称一审法院片面采信绿洲公司主张的涉案APP缺陷，显失公平。对此本院分述如下：
1.关于第9项数据库语言。经查，涉案合同明确约定软件设计语言是PHP，但是涉案APP采用的设计语言是JAVA。虽然启汇公司二审中称设计语言的变更系经过双方当事人协商并经绿洲公司同意，并非随意变更，但其未能提交相应证据证明双方对此有过协商，更无绿洲公司签字确认同意变更的证据，因此，应认定涉案APP的设计语言不符合双方的合同约定。
2.关于第11项APP后台和客户端界面美工设计。涉案公证书显示，使用常见的几种不同的浏览器进入涉案APP后台，显示不同的菜单结构，一些浏览器如ie浏览器还出现页面空白缺失。启汇公司上诉主张，该缺陷问题可以通过后台对浏览器进行兼容性设置来解决，且在绿洲公司提出异议之后已经建议绿洲公司使用谷歌浏览器。但是，从双方合同约定内容来看，并未就浏览器的问题进行明确约定，故应认为绿洲公司在签订合同时并不能意识到使用某种浏览器会影响到界面美工设计的实际展示效果，而启汇公司作为软件开发者，在签订合同时并未向绿洲公司进行相应说明，即使该缺陷问题能够事后通过使用谷歌浏览器等方法予以解决，仍然不符合绿洲公司签订合同时的合同目的，对此，启汇公司仍有违约之处。
3.关于第13、14项权限管理。经二审庭审当庭播放公证书所附光盘中的录像显示，涉案APP的后台没有区分“超级管理员”和“普通管理员”的权限，不符合涉案合同关于“超级管理员是对整个后台的控制”、“普通管理员是由超级管理员分配权限”的约定。启汇公司上诉主张，其开发设置的“系统管理员”就是合同中约定的“超级管理员”，但经查，普通管理员甚至个人用户均可以修改系统管理员帐号的权限，可见其开发的后台权限管理混乱。因此，应认定涉案APP的后台权限管理不符合合同约定。
4.关于第15项会员列表。涉案公证书显示，涉案APP并无将管理员列表与会员列表分开单列，不符合合同中关于“会员列表”单列的要求，而且，注册会员可以自行修改成为管理员用户，导致后台管理混乱。启汇公司上诉主张这是为了方便管理员设置自己的手机号作为管理员帐号，属于增值性设置。但是，本案并无证据证明双方对该所谓的增值性设置有过明确约定，而且，其实际效果亦与合同约定不符，本院对启汇公司上述解释不予采信，启汇公司对此存在违约之处。
5.关于第17项会员积分管理和查看。根据合同细目表的要求，涉案APP应能提供会员积分查看和管理功能。但是涉案公证书显示，涉案APP只有积分查看功能，并无积分管理功能。关于“管理”的具体功能，合同及细目表并未明确。绿洲公司主张，积分管理应指可以对积分信息进行导出，以便进行排序、筛选等管理操作，启汇公司则主张“查看”即是“管理”的一种。本院认为，从合同中关于“积分管理是会员积分查看和管理”的约定分析，应认定“查看”和“管理”属于不同的功能，仅实现“查看”功能不能当然表明实现“管理”功能，因此，启汇公司的上述主张缺乏事实依据，本院不予支持。可见，涉案APP不符合合同该项要求。
6.关于第18项会员订单查看和代办进度更新。根据合同细目表的要求，涉案APP后台程序的“订单管理”中应有会员订单查看功能和代办进度更新功能。但是涉案公证书显示，涉案APP只能显示某具体订单号的添加时间、支付状态、订单状态等订单信息，没有显示代办进度更新情况。因此，涉案APP不符合合同该项要求。
7.关于第19项签证信息管理。关于涉案APP页面上个别目的地同时出现两个选项的问题，启汇公司对该事实予以确认，但主张是出于个别国家名称和城市名称相同的人性化设置考虑。但是，从常理上分析，出游一个国家需要进行该国家的签证，而非不同的城市需要不同的签证，启汇公司上述解释不符合常理。而且，如果可以重复录入目的地，将造成客户困惑并且影响手机客户端使用。因此，涉案APP不符合合同该项要求。
8.关于第24项、第50项消息推送。根据合同细目表的要求，涉案APP应实现“推送消息给所有用户（普通推送）”和“设置是否接收系统推送；查看历史推送消息”的功能。双方当事人对系统推送消息的理解存在如下分歧：1.合同约定推送消息的方式是第三方平台推送，还是通过APP后台直接推送；2.推送的内容为产品链接是否符合合同约定；3.历史推送消息的查看功能是否包括客户也可通过手机端查看历史推送消息。对此本院认为，首先，双方合同及细目表并未对通过第三方间接推送还是通过APP后台直接推送消息进行明确约定，但从合同目的和“系统推送”本身的文义来分析，从APP后台直接推送，更符合双方签订合同时的真实意思表示。启汇公司辩称通过第三方平台推送消息是行业内的惯常做法。但是，“推送消息”本身意思含糊，存在后台直接推送和第三方平台推送的歧义，而启汇公司作为专业从事软件开发的公司，相比于其客户绿洲公司而言，其更应清楚两种推送方式在效果和成本上的区别，启汇公司在缔约当时有义务就此向绿洲公司进行说明并由绿洲公司进行选择。然而，启汇公司从未对此进行说明，有违诚实信用原则。现其以行业惯常做法进行抗辩，理据不足，本院不予采信。其次，推送的内容是产品链接，需要用户点击链接才能查看推送的具体内容，不符合一般APP使用者的使用习惯，显然不符合合同约定的“消息推送”功能要求。第三，IOS客户端不能查看历史消息，APP用户使用者将无法浏览历史推送信息，不满足合同约定的“查看历史推送消息”的要求。综合上述分析，涉案APP不符合合同该项要求。
9.关于第27项新版本发布更新。根据合同及细目表的约定，涉案APP应有发布更新情况的选项。但是，涉案APP后台没有该项功能，不符合合同该项要求。
10.关于第29项备份。根据合同和细目表的约定，涉案APP的数据应可手动备份到服务器。但是，涉案APP后台没有该项功能，不符合合同该项要求。
11.关于第30项操作日志、第31项注销、第33项登录。根据合同和细目表的约定，应可查看和管理管理人员在后台的操作记录，可注销此次后台登录记录，可输入用户名（手机号码）和密码登入APP，可设定“记住密码”和“自动登录”。但是涉案公证书显示，涉案APP仅能显示登陆者当前登录/退出状态以及时间，不能记录对用户的权限管理等重要操作变','2018-09-23
18:48:45',0,'web',NULL),(13700746,'c4f96277-75e3-4cd9-81e3-775c73b3fe2d','$(function(){$(\"#con_llcs\").html(\"浏览：69次\")});$(function(){$(\"#hidRequireLogin\").val(\"0\");$(\"#Content\").html(\"此篇文书不存在!\");});$(function(){var
dirData = {Elements: [\"RelateInfo\", \"LegalBase\"],RelateInfo: [{ name:
\"审理法院\", key: \"court\", value: \"靖宇县人民法院\" },{ name: \"案件类型\", key:
\"caseType\", value: \"民事案件\" },{ name: \"案由\", key: \"reason\", value:
\"离婚纠纷\" },{ name: \"审理程序\", key: \"trialRound\", value: \"一审\" },{ name:
\"裁判日期\", key: \"trialDate\", value: \"2015-01-26\" },{ name: \"当事人\", key:
\"appellor\", value: \"孟某某,刘某某\" }],LegalBase:
[{法规名称:\'《中华人民共和国民事诉讼法》\',Items:[{法条名称:\'第二十一条\',法条内容:\'第二十一条
系统尚未收录或引用有误
\'},{法条名称:\'第三十六条\',法条内容:\'第三十六条 系统尚未收录或引用有误
\'}]}]};if
($(\"#divTool_Summary\").length > 0) {$(\"#divTool_Summary\").ContentSummary({
data: dirData });}});','2018-09-23
18:48:45',0,'web',NULL),(13700747,'49a823c0-ab4e-42e9-b55e-a92100ea59df','$(function(){$(\"#con_llcs\").html(\"浏览：83次\")});$(function(){var
caseinfo=JSON.stringify({\"法院ID\":\"601\",\"案件基本情况段原文\":\"\",\"附加原文\":\"本裁定书援引的相关法律条款：
《中华人民共和国民事诉讼法》第一百五十四条裁定适用于下列范围：……（五）准许或者不准许撤诉；……
《最高人民法院关于适用〈中华人民共和国民事诉讼法〉的解释》第四百条审查再审申请期间，再审申请人撤回再审申请的，是否准许，由人民法院裁定。……\",\"审判程序\":\"再审审查与审判监督\",\"案号\":\"（2018）辽14民申96号\",\"不公开理由\":\"\",\"法院地市\":\"葫芦岛市\",\"法院省份\":\"辽宁\",\"文本首部段落原文\":\"\",\"法院区域\":\"\",\"文书ID\":\"49a823c0-ab4e-42e9-b55e-a92100ea59df\",\"案件名称\":\"葫芦岛市弘基房地产开发有限公司因与孙秀莉房屋买卖合同纠纷一案再审民事裁定书\",\"法院名称\":\"辽宁省葫芦岛市中级人民法院\",\"裁判要旨段原文\":\"\",\"法院区县\":\"\",\"补正文书\":\"2\",\"DocContent\":\"\",\"文书全文类型\":\"1\",\"诉讼记录段原文\":\"���审申请人葫芦岛市弘基房地产开发有限公司因与被申请人孙秀莉房屋买卖合同纠纷一案，不服葫芦岛市龙港区人民法院（2017）辽1403民初1643号民事判决，向本院申请再审。本院依法组成合议庭进行审查\",\"判决结果段原文\":\"\",\"文本尾部原文\":\"\",\"上传日期\":\"\\\/Date(1531843200000)\\\/\",\"案件类型\":\"2\",\"诉讼参与人信息部分原文\":\"\",\"文书类型\":null,\"裁判日期\":null,\"结案方式\":null,\"效力层级\":null});$(document).attr(\"title\",\"葫芦岛市弘基房地产开发有限公司因与孙秀莉房屋买卖合同纠纷一案再审民事裁定书\");$(\"#tdSource\").html(\"葫芦岛市弘基房地产开发有限公司因与孙秀莉房屋买卖合同纠纷一案再审民事裁定书
（2018）辽14民申96号\");$(\"#hidDocID\").val(\"49a823c0-ab4e-42e9-b55e-a92100ea59df\");$(\"#hidCaseName\").val(\"葫芦岛市弘基房地产开发有限公司因与孙秀莉房屋买卖合同纠纷一案再审民事裁定书\");$(\"#hidCaseNumber\").val(\"（2018）辽14民申96号\");$(\"#hidCaseInfo\").val(caseinfo);$(\"#hidCourt\").val(\"辽宁省葫芦岛市中级人民法院\");$(\"#hidCaseType\").val(\"2\");$(\"#HidCourtID\").val(\"601\");$(\"#hidRequireLogin\").val(\"0\");});$(function(){var
dirData = {Elements: [\"RelateInfo\", \"LegalBase\"],RelateInfo: [{ name:
\"审理法院\", key: \"court\", value: \"辽宁省葫芦岛市中级人民法院\" },{ name: \"案件类型\", key:
\"caseType\", value: \"民事案件\" },{ name: \"案由\", key: \"reason\", value:
\"房屋买卖合同纠纷\" },{ name: \"审理程序\", key: \"trialRound\", value: \"再审审查与审判监督\" },{
name: \"裁判日期\", key: \"trialDate\", value: \"2018-07-11\" },{ name: \"当事人\",
key: \"appellor\", value: \"葫芦岛市弘基房地产开发有限公司,孙秀莉\" }],LegalBase:
[{法规名称:\'《中华人民共和国民事诉讼法》\',Items:[{法条名称:\'第一百五十四条\',法条内容:\'第一百五十四条
系统尚未收录或引用有误
\'}]}]};if ($(\"#divTool_Summary\").length > 0)
{$(\"#divTool_Summary\").ContentSummary({ data: dirData });}});$(function()
{\r\n var jsonHtmlData =
\"{\\\\\"Title\\\\\":\\\\\"葫芦岛市弘基房地产开发有限公司因与孙秀莉房屋买卖合同纠纷一案再审民事裁定书\\\\\",\\\\\"PubDate\\\\\":\\\\\"2018-07-18\\\\\",\\\\\