172 lines
7.6 KiB
Markdown
172 lines
7.6 KiB
Markdown
# 上下文
|
||
文件名: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 模式填充)
|