# 上下文 文件名:sign_generation_task.md 创建于:2025-01-27 10:30:00 创建者:AI Assistant 关联协议:RIPER-5 + Multidimensional + Agent Protocol (Conditional Interactive Step Review Enhanced) # 任务描述 为Unity微信小游戏项目添加sign签名生成功能,根据提供的PHP示例实现C#版本的sign生成方法。接口请求需要增加sign参数,按照以下规则生成: 1. 将参数去除sign进行ASCII排序 2. 拼接成字符串(key+value格式) 3. 在字符串后面加上AppSecret 4. 进行MD5加密 # 项目概述 Unity微信小游戏项目,使用WebRequestManager进行HTTP请求管理,已有token认证机制。需要集成sign签名验证机制以增强接口安全性。 --- *以下部分由 AI 在协议执行过程中维护* --- # 分析 (由 RESEARCH 模式填充) 通过代码分析发现: 1. **现有网络架构**: - WebRequestManager.cs:负责HTTP请求管理,支持GET/POST请求 - Apis.cs:管理API接口地址和token - 已有token认证机制,通过请求头传递 2. **MD5加密支持**: - MotionFramework.Utility.HashUtility.StringMD5():提供MD5加密功能 - 支持字符串MD5加密,符合sign生成需求 3. **请求参数处理**: - 当前支持urlencoded和JSON格式 - PostFormRequest方法处理表单数据 - 需要扩展支持sign参数自动生成 4. **配置管理**: - Apis.cs管理基础配置 - 需要添加AppKey和AppSecret配置 5. **接口调用模式**: - 使用异步UniTask模式 - 支持回调函数和异常处理 - 需要保持现有调用方式兼容性 # 提议的解决方案 (由 INNOVATE 模式填充) 基于研究分析,采用混合方案实现sign生成功能: **方案选择**:混合方案(推荐) - 创建SignUtility工具类处理签名逻辑 - 在WebRequestManager中添加可选的sign支持 - 保持向后兼容,新接口可选择启用sign - 优点:灵活性高,兼容性好 **技术实现**: - 参数排序:使用SortedDictionary确保ASCII排序 - 数组处理:JSON序列化数组参数 - MD5加密:使用现有HashUtility.StringMD5 - 配置管理:在Apis.cs中添加AppKey/AppSecret - 错误处理:完善的异常处理机制 # 实施计划 (由 PLAN 模式生成) 基于创新阶段的分析,采用混合方案来实现sign生成功能。 **架构设计**: 1. 创建SignUtility工具类,专门处理签名生成逻辑 2. 扩展Apis.cs,添加AppKey和AppSecret配置管理 3. 修改WebRequestManager,添加可选的sign支持 4. 保持向后兼容,现有接口调用不受影响 **详细实施规范**: **文件修改计划**: - `Assets/Scripts/Utility/SignUtility.cs` (新建) - `Assets/Scripts/Apis.cs` (扩展) - `Assets/Scripts/Network/WebRequestManager.cs` (扩展) - `Assets/Scripts/Test/SignUtilityTest.cs` (新建) **SignUtility类设计**: - 静态方法:GenerateSign(Dictionary parameters, string appSecret) - 支持参数排序、数组处理、MD5加密 - 完善的错误处理和日志记录 **Apis.cs扩展**: - 添加AppKey和AppSecret静态属性 - 添加设置和获取方法 - 保持现有接口不变 **WebRequestManager扩展**: - 添加enableSign参数到请求方法 - 自动生成sign参数并添加到请求中 - 保持现有方法签名兼容 实施检查清单: 1. [创建SignUtility工具类,实现sign生成核心逻辑, review:true] 2. [扩展Apis.cs,添加AppKey和AppSecret配置管理, review:true] 3. [修改WebRequestManager,添加sign支持到GET请求方法, review:true] 4. [修改WebRequestManager,添加sign支持到POST请求方法, review:true] 5. [添加异步方法的sign支持, review:true] 6. [创建测试用例验证sign生成正确性, review:true] 7. [更新任务进度文档, review:false] # 当前执行步骤 (由 EXECUTE 模式在开始执行某步骤时更新) # 任务进度 (由 EXECUTE 模式在每步完成后,以及在交互式审查迭代中追加) * 2025-01-27 10:35:00 * 步骤:1. [创建SignUtility工具类,实现sign生成核心逻辑 (完成, 审查需求: review:true)] * 修改:创建了 Assets/Scripts/Utility/SignUtility.cs 文件,实现了完整的sign生成功能 * 更改摘要:实现了SignUtility静态工具类,包含GenerateSign方法(支持object和string参数)、参数排序、数组处理、MD5加密、签名验证等功能,添加了完善的错误处理和日志记录 * 原因:执行计划步骤 1 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 * 2025-01-27 10:40:00 * 步骤:2. [扩展Apis.cs,添加AppKey和AppSecret配置管理 (完成, 审查需求: review:true)] * 修改:扩展了 Assets/Scripts/Apis.cs 文件,添加了AppKey和AppSecret的静态属性和相关方法 * 更改摘要:添加了SetAppKey/GetAppKey和SetAppSecret/GetAppSecret方法,保持现有接口不变,为sign生成提供配置支持 * 原因:执行计划步骤 2 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 * 2025-01-27 10:45:00 * 步骤:3. [修改WebRequestManager,添加sign支持到GET请求方法 (完成, 审查需求: review:true)] * 修改:修改了 Assets/Scripts/Network/WebRequestManager.cs 文件,为GetRequest方法添加了sign支持 * 更改摘要:添加了enableSign和signParams参数,自动生成sign签名并添加到请求中,支持AppKey和时间戳自动添加 * 原因:执行计划步骤 3 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 * 2025-01-27 10:50:00 * 步骤:4. [修改WebRequestManager,添加sign支持到POST请求方法 (完成, 审查需求: review:true)] * 修改:修改了 Assets/Scripts/Network/WebRequestManager.cs 文件,为PostRequest方法添加了sign支持 * 更改摘要:添加了enableSign和signParams参数,支持urlencoded和JSON两种格式的sign参数添加,自动生成sign签名 * 原因:执行计划步骤 4 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 * 2025-01-27 10:55:00 * 步骤:5. [添加异步方法的sign支持 (完成, 审查需求: review:true)] * 修改:修改了 Assets/Scripts/Network/WebRequestManager.cs 文件,为GetRequestAsync和PostRequestAsync方法添加了sign支持 * 更改摘要:为异步方法添加了enableSign和signParams参数,保持与同步方法的一致性 * 原因:执行计划步骤 5 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 * 2025-01-27 11:00:00 * 步骤:6. [创建测试用例验证sign生成正确性 (完成, 审查需求: review:true)] * 修改:创建了 Assets/Scripts/Test/SignUtilityTest.cs 文件,实现了完整的测试用例 * 更改摘要:实现了SignUtilityTest类,包含基本sign生成、数组处理、签名验证、空参数、null参数、PHP示例一致性等测试用例,提供Inspector界面测试 * 原因:执行计划步骤 6 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 * 2025-01-27 11:05:00 * 步骤:7. [更新任务进度文档 (完成, 审查需求: review:false)] * 修改:更新了 sign_generation_task.md 文件,完善了所有阶段的文档记录 * 更改摘要:补充了提议的解决方案和实施计划的详细内容,记录了所有执行步骤的完成情况 * 原因:执行计划步骤 7 的实施 * 阻碍:无 * 状态:已完成 * 用户确认状态:成功 # 最终审查 (由 REVIEW 模式填充)