7.6 KiB
7.6 KiB
上下文
文件名: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参数,按照以下规则生成:
- 将参数去除sign进行ASCII排序
- 拼接成字符串(key+value格式)
- 在字符串后面加上AppSecret
- 进行MD5加密
项目概述
Unity微信小游戏项目,使用WebRequestManager进行HTTP请求管理,已有token认证机制。需要集成sign签名验证机制以增强接口安全性。
以下部分由 AI 在协议执行过程中维护
分析 (由 RESEARCH 模式填充)
通过代码分析发现:
-
现有网络架构:
- WebRequestManager.cs:负责HTTP请求管理,支持GET/POST请求
- Apis.cs:管理API接口地址和token
- 已有token认证机制,通过请求头传递
-
MD5加密支持:
- MotionFramework.Utility.HashUtility.StringMD5():提供MD5加密功能
- 支持字符串MD5加密,符合sign生成需求
-
请求参数处理:
- 当前支持urlencoded和JSON格式
- PostFormRequest方法处理表单数据
- 需要扩展支持sign参数自动生成
-
配置管理:
- Apis.cs管理基础配置
- 需要添加AppKey和AppSecret配置
-
接口调用模式:
- 使用异步UniTask模式
- 支持回调函数和异常处理
- 需要保持现有调用方式兼容性
提议的解决方案 (由 INNOVATE 模式填充)
基于研究分析,采用混合方案实现sign生成功能:
方案选择:混合方案(推荐)
- 创建SignUtility工具类处理签名逻辑
- 在WebRequestManager中添加可选的sign支持
- 保持向后兼容,新接口可选择启用sign
- 优点:灵活性高,兼容性好
技术实现:
- 参数排序:使用SortedDictionary确保ASCII排序
- 数组处理:JSON序列化数组参数
- MD5加密:使用现有HashUtility.StringMD5
- 配置管理:在Apis.cs中添加AppKey/AppSecret
- 错误处理:完善的异常处理机制
实施计划 (由 PLAN 模式生成)
基于创新阶段的分析,采用混合方案来实现sign生成功能。
架构设计:
- 创建SignUtility工具类,专门处理签名生成逻辑
- 扩展Apis.cs,添加AppKey和AppSecret配置管理
- 修改WebRequestManager,添加可选的sign支持
- 保持向后兼容,现有接口调用不受影响
详细实施规范:
文件修改计划:
Assets/Scripts/Utility/SignUtility.cs
(新建)Assets/Scripts/Apis.cs
(扩展)Assets/Scripts/Network/WebRequestManager.cs
(扩展)Assets/Scripts/Test/SignUtilityTest.cs
(新建)
SignUtility类设计:
- 静态方法:GenerateSign(Dictionary<string, object> parameters, string appSecret)
- 支持参数排序、数组处理、MD5加密
- 完善的错误处理和日志记录
Apis.cs扩展:
- 添加AppKey和AppSecret静态属性
- 添加设置和获取方法
- 保持现有接口不变
WebRequestManager扩展:
- 添加enableSign参数到请求方法
- 自动生成sign参数并添加到请求中
- 保持现有方法签名兼容
实施检查清单:
- [创建SignUtility工具类,实现sign生成核心逻辑, review:true]
- [扩展Apis.cs,添加AppKey和AppSecret配置管理, review:true]
- [修改WebRequestManager,添加sign支持到GET请求方法, review:true]
- [修改WebRequestManager,添加sign支持到POST请求方法, review:true]
- [添加异步方法的sign支持, review:true]
- [创建测试用例验证sign生成正确性, review:true]
- [更新任务进度文档, 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 的实施
- 阻碍:无
- 状态:已完成
- 用户确认状态:成功