WX-Game1/sign_generation_task.md

7.6 KiB
Raw Permalink Blame History

上下文

文件名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 模式填充)