AI Assistant eaefaee2a1 实现URS注册用户设置昵称和头像功能 6 months ago
..
Docs ab33653290 1 6 months ago
Dto 976409773b refactor(ThirdParty): 新增获取配置 DTO 方法 6 months ago
Request e246228102 1 6 months ago
Services 5383beb68a 6 months ago
Util 8641a3f8c2 refactor(urs): 重构URS包的目录结构和命名空间 6 months ago
Webhook eaefaee2a1 实现URS注册用户设置昵称和头像功能 6 months ago
UrsServiceProvider.php 2c3f4c9e1b 新增URS注册农场用户WebHook处理器 6 months ago
readme.md 5383beb68a 6 months ago

readme.md

URS 第三方包

概述

URS(User Referral System)用户推广系统第三方包,用于对接URS生态系统的API接口。

重要更新:本包已重构为遵循"一个Request类只完成一种请求"的原则,每个API操作都有对应的专用Request类。

目录结构

Urs/
├── readme.md                           # 本说明文件
├── UrsServiceProvider.php              # 服务提供者
├── Request/                            # 请求类目录
│   ├── UrsGetUserInfoRequest.php       # 获取用户信息请求类
│   ├── UrsGetUserTeamRequest.php       # 获取用户团队关系请求类
│   └── UrsGetUserLevelCountRequest.php # 获取用户下级统计请求类
├── Services/                           # 服务类目录
│   └── UrsService.php                  # URS统一服务类
├── Webhook/                            # Webhook处理器目录
│   ├── UrsRegisterWebhook.php          # 注册通知处理器
│   ├── UrsDepositWebhook.php           # 充值通知处理器
│   ├── UrsWithdrawWebhook.php          # 提取通知处理器
│   └── UrsCheckWebhook.php             # 检查通知处理器
├── Util/                               # 工具类目录
│   └── CryptoService.php               # 加密服务类
└── Docs/                               # 文档目录
    ├── Api.md                          # API文档
    ├── URS对接建议.md                   # 对接建议
    ├── urs对接.md                      # 对接说明
    └── urs对接ThirdParty文档.md         # ThirdParty对接文档

Request类设计原则

重构前的问题

  • 原有的UrsRequest类使用switch语句处理多种操作
  • 违反了单一职责原则,一个类承担了多种不同的请求处理
  • 代码耦合度高,难以维护和扩展

重构后的优势

  • 单一职责:每个Request类只处理一种特定的请求
  • 易于维护:修改某个功能不会影响其他功能
  • 易于扩展:新增功能只需创建新的Request类
  • 代码清晰:每个类的职责明确,代码更易理解

重要说明

本包包含URS实际提供的业务接口对应的Request类。

API接口说明

1. 用户登录

  • 类名UrsLoginRequest
  • 功能:使用手机号和密码进行登录认证
  • 参数mobile(手机号码)、password(登录密码)
  • 返回:用户ID和用户密钥

2. 获取用户信息

  • 类名UrsGetUserInfoRequest
  • 功能:根据用户密钥获取用户ID
  • 参数userKey(用户密钥)
  • 返回:用户ID信息

2. 获取用户团队关系

  • 类名UrsGetUserTeamRequest
  • 功能:获取用户的3级上级关系链
  • 参数userId(用户ID)
  • 返回:各级上级用户ID

3. 获取用户下级统计

  • 类名UrsGetUserLevelCountRequest
  • 功能:获取用户下级人数统计
  • 参数userId(用户ID)、level(1或3)
  • 返回:下级人数统计

使用方法

方式一:直接使用Request类

use ThirdParty\Urs\Request\UrsGetUserInfoRequest;

$request = new UrsGetUserInfoRequest();
$result = $request->request(['userKey' => 'user_key_here']);

方式二:使用统一服务类(推荐)

use ThirdParty\Urs\Services\UrsService;

// 用户登录
$loginResult = UrsService::login('18600648353', 'a123123');

// 获取用户信息
$userInfo = UrsService::getUserInfo('user_key_here');

// 获取用户团队关系
$userTeam = UrsService::getUserTeam(12345);

// 获取用户下级统计
$levelCount = UrsService::getUserLevelCount(12345, 1);

Webhook处理机制

支持的Webhook类型

  1. 注册通知:传入uid和三级上级,返回处理成功
  2. 充值通知:用户ID、USDT数量、交易ID,按1:300比例充值钻石
  3. 提取通知:用户ID、USDT数量、交易ID,按1:300比例提取钻石
  4. 余额检查:用户ID、USDT数量,返回是否允许及相关费用信息

Webhook路由

  • 注册通知:POST /thirdParty/webhook/urs/register
  • 充值通知:POST /thirdParty/webhook/urs/deposit
  • 提取通知:POST /thirdParty/webhook/urs/withdraw
  • 余额检查:POST /thirdParty/webhook/urs/check

核心流程

  1. URS应用访问:URS应用访问农场客户端,携带ukey
  2. 用户信息获取:农场使用ukey到URS获取用户的urs.user_id
  3. 用户关联创建:为URS用户创建农场用户,建立关联(创建urs_user表)
  4. 推广关系同步:农场获取URS的推广关系,同步到UrsPromotion模块
  5. 资金操作:根据webhook进行钻石的充值和提取

资金系统设计

设计资金系统操作,需要创建专属充值资金操作用户ID,充值的资金如钻石从这个专属用户账户转移到用户账户;提取钻石专属操作用户ID,提取钻石从用户账户转移到这个专属用户账户

配置要求

thirdparty_services表中注册URS服务配置:

{
    "api_url": "https://urs.example.com",
    "app_key": "your_app_key_here",
    "ecology_id": 1,
    "app_id": "your_app_id",
    "app_secret": "your_app_secret"
}

urs 服务

Api通讯 Key : Hy0LmLKJSbDQY2oaaZOZKR1XKpFHSY8Y ecology_id 生态ID: 1 用户Key (测试用,实际通过客户端传递) ukey : $2y$10$i.h97m13olfIaU.ZTYiyeeXFl8xqn48w2bFiAhcoQsJdU6K3w.Lgu

对接建议