更新时间: 2025-06-15
模块: Transfer
Transfer 模块不直接提供API接口,而是通过其他模块进行功能暴露:
接口提供方式:
说明: Transfer模块专注于核心业务逻辑实现,所有对外接口都通过其他专门的模块进行暴露和管理。
Transfer 模块不提供直接的用户端API,而是通过服务层供客户端模块调用。
/**
* 创建转出订单
* @param array $data 订单数据
* @return TransferOrderDto|string 成功返回DTO,失败返回错误信息
*/
TransferService::createTransferOut(array $data);
参数说明:
$data = [
'user_id' => 123, // 用户ID (必填)
'transfer_app_id' => 1, // 划转应用ID (必填)
'amount' => '100.50', // 转出金额 (必填)
'password' => 'user_password', // 安全密码 (必填)
'google_code' => '123456' // Google 2FA验证码 (可选)
];
返回数据:
// 成功时返回 TransferOrderDto
$dto = new TransferOrderDto([
'id' => 12345,
'transfer_app_id' => 1,
'out_order_id' => 'EXT_123456',
'amount' => '100.50',
'status' => 1,
'created_at' => '2025-06-15 14:53:00'
]);
// 失败时返回错误信息字符串
$error = "余额不足";
/**
* 查询订单状态
* @param int $orderId 订单ID
* @param int $userId 用户ID
* @return TransferOrderDto|null
*/
TransferService::getOrderInfo(int $orderId, int $userId);
/**
* 获取用户可用的划转应用列表
* @param int $userId 用户ID
* @return TransferAppDto[]
*/
TransferService::getAvailableApps(int $userId);
/**
* 获取用户订单列表
* @param int $userId 用户ID
* @param array $filters 筛选条件
* @return array
*/
TransferService::getUserOrders(int $userId, array $filters = []);
Transfer模块不直接提供外部应用API,而是通过OpenAPI模块进行对外开放。
在OpenAPI模块中注册Transfer相关的Handler:
// 在OpenAPI模块的Handlers目录下创建Transfer处理器
app/Module/OpenAPI/Handlers/Transfer/
├── TransferInHandler.php # 转入处理器
├── TransferOutHandler.php # 转出处理器
└── TransferQueryHandler.php # 查询处理器
在OpenAPI模块的权限系统中定义Transfer相关权限:
// SCOPE_TYPE枚举中添加
case TRANSFER_IN = 'transfer:in'; // 转入权限
case TRANSFER_OUT = 'transfer:out'; // 转出权限
case TRANSFER_QUERY = 'transfer:query'; // 查询权限
通过OpenAPI模块的路由系统暴露接口:
// 转入订单创建
POST /openapi/transfer/in
Handler: TransferInHandler
Scope: transfer:in
// 转出订单创建
POST /openapi/transfer/out
Handler: TransferOutHandler
Scope: transfer:out
// 订单状态查询
GET /openapi/transfer/order/{businessId}
Handler: TransferQueryHandler
Scope: transfer:query
<?php
namespace App\Module\OpenAPI\Handlers\Transfer;
use App\Module\OpenAPI\Handlers\BaseHandler;
use App\Module\Transfer\Services\TransferService;
use App\Module\Transfer\Validations\TransferInValidation;
class TransferInHandler extends BaseHandler
{
protected string $scope = 'transfer:in';
public function handle(array $data): array
{
// 验证请求数据
$validation = new TransferInValidation($data);
$validation->validated();
// 调用Transfer服务
$result = TransferService::createTransferIn($data);
if (is_string($result)) {
return $this->error($result);
}
return $this->success([
'order_id' => $result->id,
'business_id' => $result->out_order_id,
'amount' => $result->out_amount,
'internal_amount' => $result->amount,
'exchange_rate' => $result->exchange_rate,
'status' => $result->status,
'created_at' => $result->created_at
]);
}
}
<?php
namespace App\Module\OpenAPI\Handlers\Transfer;
use App\Module\OpenAPI\Handlers\BaseHandler;
use App\Module\Transfer\Services\TransferService;
use App\Module\Transfer\Validations\TransferOutValidation;
class TransferOutHandler extends BaseHandler
{
protected string $scope = 'transfer:out';
public function handle(array $data): array
{
// 验证请求数据
$validation = new TransferOutValidation($data);
$validation->validated();
// 调用Transfer服务
$result = TransferService::createTransferOut($data);
if (is_string($result)) {
return $this->error($result);
}
return $this->success([
'order_id' => $result->id,
'business_id' => $result->out_order_id,
'amount' => $result->amount,
'out_amount' => $result->out_amount,
'exchange_rate' => $result->exchange_rate,
'status' => $result->status,
'created_at' => $result->created_at
]);
}
}
接口: POST /openapi/transfer/in
权限: transfer:in
说明: 外部应用向用户账户转入资金
请求参数:
{
"business_id": "EXT_ORDER_789", // 外部订单ID (必填,唯一)
"out_user_id": "EXT_USER_123", // 外部用户ID (必填)
"user_id": 456, // 内部用户ID (必填)
"amount": "50.25", // 转入金额 (必填)
"remark": "游戏充值", // 备注信息 (可选)
"callback_data": { // 回调数据 (可选)
"game_order_id": "GAME_123",
"item_id": 100
}
}
接口: POST /openapi/transfer/out
权限: transfer:out
说明: 用户向外部应用转出资金
请求参数:
{
"business_id": "EXT_ORDER_456", // 外部订单ID (必填,唯一)
"user_id": 123, // 用户ID (必填)
"amount": "100.00", // 转出金额 (必填)
"remark": "游戏提现" // 备注信息 (可选)
}
接口: GET /openapi/transfer/order/{businessId}
权限: transfer:query
说明: 查询订单处理状态
响应数据:
{
"code": 0,
"message": "查询成功",
"data": {
"business_id": "EXT_ORDER_789",
"status": 100,
"status_text": "已完成",
"amount": "50.25",
"internal_amount": "48.00",
"user_id": 456,
"created_at": "2025-06-15 14:53:00",
"completed_at": "2025-06-15 14:54:00"
}
}
Transfer 模块不提供管理端API接口,管理功能通过后台控制器实现。
// 应用列表页面
public function index()
// 应用详情页面
public function show($id)
// 应用编辑页面
public function edit($id)
// 更新应用配置
public function update(Request $request, $id)
// 启用/禁用应用
public function toggleStatus($id)
// 订单列表页面
public function index()
// 订单详情页面
public function show($id)
// 重试订单处理
public function retry($id)
// 手动补单
public function manual(Request $request, $id)
// 订单统计页面
public function statistics()
1: 已创建 (CREATED)20: 处理中 (PROCESSING)30: 已回调 (CALLBACK)100: 已完成 (COMPLETED)-1: 失败 (FAILED)1: 转入 (IN)2: 转出 (OUT)0: 成功1001: 参数错误1002: 用户不存在1003: 应用不存在或未启用1004: 余额不足1005: 订单不存在1006: 订单状态错误1007: 签名验证失败1008: 权限不足1009: 系统错误X-Signature: {signature}文档更新时间: 2025-06-15 14:53
如有疑问请联系开发团队