分析时间: 2025年06月14日
分析对象: URS系统对接方案
建议类型: 技术架构对接建议
app/PlugIn/Urs/,包含基础API和Webhook功能URS外部系统 ←→ ThirdParty模块 ←→ UrsPromotion模块 ←→ Fund模块
↑ ↑ ↑ ↑
加密通信 服务管理 推广关系管理 资金操作
签名验证 监控告警 达人等级计算 钻石转换
在ThirdParty模块中注册URS服务:
// 服务基本信息
'name' => 'URS用户推广系统',
'code' => 'URS_PROMOTION',
'service_type' => 'SOCIAL',
'auth_type' => 'SIGNATURE',
'base_url' => 'https://urs.example.com/api',
// 业务配置
'config' => [
'diamond_ratio' => 300, // 1 USDT = 300 钻石
'fund_user_id' => 15, // 仓库账户用户ID
'control_user_id' => 16, // 调控账户用户ID
'currency_type' => 'DIAMOND', // 币种类型
],
// 认证凭证
'credentials' => [
'app_key' => 'Hy0LmLKJSbDQY2oaaZOZKR1XKpFHSY8Y',
'timeout' => 300,
'algorithm' => 'AES-256-CBC',
'hash_algorithm' => 'sha256',
]
创建URS专用的加密服务类:
// app/Module/ThirdParty/Services/Crypto/UrsCryptoService.php
class UrsCryptoService extends BaseCryptoService
{
public function encrypt(array $data): array
{
// 实现URS的AES-256-CBC加密逻辑
// 生成随机IV、时间戳、签名
// 返回加密数据包
}
public function decrypt(array $encryptedData): array
{
// 验证时间戳(5分钟有效期)
// 验证SHA256签名
// 解密数据并返回
}
}
创建URS服务类封装所有API调用:
// app/Module/ThirdParty/Services/UrsService.php
class UrsService
{
// 获取用户信息
public static function getUserInfo(string $userKey): array
// 获取用户团队关系
public static function getUserTeam(int $userId): array
// 获取用户下级统计
public static function getUserLevelCount(int $userId, int $level): array
}
创建专门的Webhook控制器:
// app/Module/ThirdParty/Controllers/UrsWebhookController.php
class UrsWebhookController extends Controller
{
// 注册通知处理
public function handleRegister(Request $request): JsonResponse
// 出包操作处理(用户提取钻石)
public function handleWithdraw(Request $request): JsonResponse
// 入包操作处理(用户充值钻石)
public function handleDeposit(Request $request): JsonResponse
// 入包检查处理(验证余额和费用)
public function handleCheck(Request $request): JsonResponse
}
与Fund模块对接实现资金操作:
// 出包操作:用户账户 → 专属账户
$result = FundService::transfer(
$userId, // 从用户账户
config('urs.fund_user_id'), // 转到专属账户
'DIAMOND', // 币种
$diamondAmount, // 数量
'URS出包操作', // 备注
$transactionId // 交易ID(防重复)
);
// 入包操作:专属账户 → 用户账户
$result = FundService::transfer(
config('urs.fund_user_id'), // 从专属账户
$userId, // 转到用户账户
'DIAMOND', // 币种
$diamondAmount, // 数量
'URS入包操作', // 备注
$transactionId // 交易ID(防重复)
);
-- 插入URS服务配置
INSERT INTO kku_thirdparty_services (
name, code, provider, service_type, base_url, auth_type,
config, credentials, timeout, retry_times
) VALUES (
'URS用户推广系统',
'URS_PROMOTION',
'URS',
'SOCIAL',
'https://urs.example.com/api',
'SIGNATURE',
'{"diamond_ratio":300,"fund_user_id":15,"control_user_id":16}',
'{"app_key":"Hy0LmLKJSbDQY2oaaZOZKR1XKpFHSY8Y","timeout":300}',
30,
3
);
-- 配置调用配额
INSERT INTO kku_thirdparty_quotas (service_id, quota_type, quota_limit) VALUES
(1, 'PER_MINUTE', 100), -- 每分钟100次
(1, 'PER_DAY', 10000); -- 每天10000次
// config/thirdparty.php
'services' => [
'urs' => [
'enabled' => true,
'base_url' => env('URS_BASE_URL', 'https://urs.example.com/api'),
'app_key' => env('URS_APP_KEY', 'Hy0LmLKJSbDQY2oaaZOZKR1XKpFHSY8Y'),
'diamond_ratio' => env('URS_DIAMOND_RATIO', 300),
'fund_user_id' => env('URS_FUND_USER_ID', 15),
'webhook_secret' => env('URS_WEBHOOK_SECRET', 'urs_webhook_secret'),
],
],
如果需要将农场系统的功能开放给URS系统调用,可以使用OpenAPI模块。
URS系统请求 → ThirdParty模块 → 业务逻辑处理 → 返回响应
↓ ↓ ↓ ↓
加密验证 服务路由 UrsPromotion 加密响应
签名检查 配额控制 Fund模块 日志记录
强烈推荐采用方案一(基于ThirdParty模块的统一对接),理由如下:
通过这种对接方案,既保持了URS系统的原有功能特性,又获得了ThirdParty模块提供的企业级服务管理能力,为系统的稳定运行和后续扩展奠定了坚实基础。