# 愿意卖一个功能,不代表允许买家无限转卖 | EasyNet Source: https://easynet.run/cases/problems/define-method-usage-license [easynet.run · 全部问题场景](https://easynet.run/cases#problem-scenarios) # 愿意卖一个功能,不代表允许买家无限转卖 创作者愿意按月给一个团队使用自己的处理方法,却发现对方把入口包装成公开服务再次收费。双方说过“可商用”,但一个理解为处理自己的客户项目,另一个理解为可以转卖调用机会。 这些区别首先需要写进许可或合同,已有售卖平台的权益管理也可以继续用。若作者愿意开放复制和再分发,清楚选择相应许可就好;技术上限制调用,不应代替对使用方式的事先说明。 EasyNet 可以把某个处理操作交给获准身份使用,例如接受该团队的素材并返回加工结果。它能参与限制谁调用什么,却无法从一次请求判断素材用于客户交付还是转售。实际用途出现争议时,仍要依据双方约定和可核查材料调查,不能期待入口权限自动发现转卖。 需要由销售或权益服务记录买方、接受的许可版本和可用范围,再把获准操作映射给调用入口。作者还要核对上游模型、字体和素材的权利,不能向买方授予自己并未获得的权限。 购买页可以直接列出具体例子:团队成员制作项目材料是否允许,对外开放公共生成入口是否另需约定。已经成交的订单保留当时接受的条款,后续调整不能悄悄改写旧权益;争议需要相应的专业处理。 让潜在买方用自己的两种真实用途复述许可,再检查获准与未获准身份的访问结果。前者验证约定是否被理解,后者验证入口是否按约定开放;两项都需要,不能把拒绝一次请求当成版权保护已经完成。 01 付款前说明用途 客户项目和公开转售分别约定 02 订单保存条款版本 对应实际购买主体和团队成员 03 入口检查授权 拒绝未授权身份,争议另行处理 用途约定、购买记录和调用权限是三份需要对齐的信息。 订单保留买家当时接受的用途 这是虚构订单的业务数据,不是许可证文本,也不是 Runtime 策略格式。用途判断不能只靠请求里的一个布尔字段。 示例内容 · json ``` { "order_id": "O-86", "purchaser": "demo-design-team", "accepted_terms_version": "demo-v1", "agreed_uses": ["team_client_deliverables"], "requires_separate_agreement": ["public_resale_endpoint"] } ``` 预期结果:记录展示这张订单引用 demo-v1。实际系统更新条款后,还要验证旧订单能读取当时接受的完整条款;成员授权由权益服务另行维护。 接入时的检查项 买家能在付款前区分团队使用、代处理与转售的允许范围。 购买权益与账号映射可核对,不会把一个人的订单默认为全公司许可。 旧订单能够找到当时适用条款,新版本不会静默覆盖原约定。 源码与接入资料 [不复制源码,也能复用业务逻辑](https://easynet.run/cases/function-reuse) [Stripe Connect 官方:平台收款与多方资金流](https://docs.stripe.com/connect)