WX-Game1/sign_generation_task.md

172 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 上下文
文件名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<string, object> 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 模式填充)