181432-URS提取功能实现.md 3.6 KB

URS提取功能实现

任务概述

实现URS系统的提取(withdraw)功能,允许URS用户从农场系统提取钻石到URS系统。

实现内容

1. 创建URS提取Webhook处理器

文件: ThirdParty/Urs/Webhook/UrsWithdrawWebhook.php

功能:

  • 处理URS系统发送的提取通知
  • 验证请求参数(user_id, amount, order_id)
  • 查找URS用户对应的农场用户
  • 调用Transfer模块完成资金转移
  • 返回提取结果

关键方法:

  • handler(): 主处理方法,验证参数并调用核心逻辑
  • processWithdrawNotification(): 核心提取处理逻辑
  • validateWithdrawRequest(): 请求参数验证

2. 创建第三方应用专用验证类

文件: app/Module/Transfer/Validations/TransferOutThirdPartyValidation.php

功能:

  • 专门为第三方应用转出请求设计
  • 跳过密码验证(第三方应用不需要用户密码)
  • 验证基础字段:transfer_app_id, user_id, amount等

3. 扩展Transfer模块支持第三方应用

文件: app/Module/Transfer/Logics/TransferLogic.php

新增方法:

  • createTransferOutForThirdParty(): 第三方应用转出接口
  • createTransferOutFromArrayForThirdParty(): 第三方应用转出内部实现

特点:

  • 使用专用验证类跳过密码验证
  • 保持与原有转出逻辑一致的业务流程
  • 支持手续费计算和收取

4. 更新TransferThirdPartyService

文件: app/Module/Transfer/Services/TransferThirdPartyService.php

修改:

  • createTransferOut调用改为createTransferOutForThirdParty
  • 移除不再需要的密码参数处理

测试验证

测试脚本

文件: test_urs_withdraw_webhook.php

功能:

  • 模拟URS系统发送提取请求
  • 正确生成签名验证
  • 验证响应结果

测试结果

测试成功

  • URS用户10003(对应农场用户39026)成功提取50钻石
  • 签名验证通过
  • 资金正确扣除
  • Transfer订单正常创建
  • 返回正确的订单ID和状态

测试数据:

用户ID: 10003 (URS) -> 39026 (农场)
提取金额: 50.0000 钻石
订单ID: URS_WITHDRAW_TEST_1750257155
返回订单ID: OUT20250618223235mQTN1p
Transfer订单ID: 11

技术要点

1. 签名验证

  • 使用与WebhookDispatchService一致的签名算法
  • 参数按字母顺序排序
  • 使用HMAC-SHA256生成签名

2. 密码验证跳过

  • 创建专用验证类TransferOutThirdPartyValidation
  • 移除password字段的必需验证
  • 保持其他验证逻辑不变

3. 错误处理

  • 完整的异常捕获和日志记录
  • 详细的错误信息返回
  • 支持调试和问题排查

4. 数据一致性

  • 使用数据库事务确保操作原子性
  • 正确的资金流转记录
  • 完整的审计日志

配置要求

Transfer应用配置

  • 应用ID: 2 (urs)
  • 关联第三方应用ID: 11 (out_id3字段)
  • 支持转出操作
  • 手续费配置(可选)

URS用户映射

  • 表: kku_urs_promotion_user_mappings
  • 字段: urs_user_id -> farm_user_id
  • 状态: status = 1 (激活)

部署说明

  1. 代码部署: 确保所有新增文件和修改文件已部署
  2. 配置检查: 验证Transfer应用配置正确
  3. 权限验证: 确保Webhook路由可访问
  4. 测试验证: 运行测试脚本验证功能正常

后续优化

  1. 手续费配置: 根据业务需求调整手续费率
  2. 限额控制: 添加单次和日累计提取限额
  3. 风控机制: 添加异常检测和风险控制
  4. 监控告警: 添加关键指标监控和异常告警

相关文档

  • Transfer模块文档
  • URS推广系统文档
  • Webhook处理机制文档
  • 第三方服务集成规范