|
|
@@ -4,8 +4,10 @@ namespace App\Module\Transfer\Logics;
|
|
|
|
|
|
use App\Module\Transfer\Enums\TransferStatus;
|
|
|
use App\Module\Transfer\Enums\TransferType;
|
|
|
+use App\Module\Transfer\Events\FeeCalculatedEvent;
|
|
|
use App\Module\Transfer\Models\TransferApp;
|
|
|
use App\Module\Transfer\Models\TransferOrder;
|
|
|
+use App\Module\Transfer\Services\FeeService;
|
|
|
use App\Module\Transfer\Validations\TransferInValidation;
|
|
|
use App\Module\Transfer\Validations\TransferOutValidation;
|
|
|
use App\Module\Fund\Services\FundService;
|
|
|
@@ -19,6 +21,7 @@ use Illuminate\Support\Facades\Log;
|
|
|
*/
|
|
|
class TransferLogic
|
|
|
{
|
|
|
+
|
|
|
/**
|
|
|
* 创建转出订单(对外接口)
|
|
|
*
|
|
|
@@ -34,24 +37,25 @@ class TransferLogic
|
|
|
* @throws \Exception
|
|
|
*/
|
|
|
public static function createTransferOut(
|
|
|
- int $transferAppId,
|
|
|
- int $userId,
|
|
|
- string $amount,
|
|
|
- string $password,
|
|
|
+ int $transferAppId,
|
|
|
+ int $userId,
|
|
|
+ string $amount,
|
|
|
+ string $password,
|
|
|
?string $googleCode = null,
|
|
|
?string $outUserId = null,
|
|
|
?string $remark = null,
|
|
|
- array $callbackData = []
|
|
|
- ): TransferOrder {
|
|
|
+ array $callbackData = []
|
|
|
+ ): TransferOrder
|
|
|
+ {
|
|
|
$data = [
|
|
|
'transfer_app_id' => $transferAppId,
|
|
|
- 'user_id' => $userId,
|
|
|
- 'amount' => $amount,
|
|
|
- 'password' => $password,
|
|
|
- 'google_code' => $googleCode,
|
|
|
- 'out_user_id' => $outUserId,
|
|
|
- 'remark' => $remark,
|
|
|
- 'callback_data' => $callbackData,
|
|
|
+ 'user_id' => $userId,
|
|
|
+ 'amount' => $amount,
|
|
|
+ 'password' => $password,
|
|
|
+ 'google_code' => $googleCode,
|
|
|
+ 'out_user_id' => $outUserId,
|
|
|
+ 'remark' => $remark,
|
|
|
+ 'callback_data' => $callbackData,
|
|
|
];
|
|
|
|
|
|
return self::createTransferOutFromArray($data);
|
|
|
@@ -59,6 +63,7 @@ class TransferLogic
|
|
|
|
|
|
/**
|
|
|
* 创建第三方应用转出订单(跳过密码验证)
|
|
|
+ * 我 =》 三方
|
|
|
*
|
|
|
* @param int $transferAppId 划转应用ID
|
|
|
* @param int $userId 用户ID
|
|
|
@@ -70,20 +75,21 @@ class TransferLogic
|
|
|
* @throws \Exception
|
|
|
*/
|
|
|
public static function createTransferOutForThirdParty(
|
|
|
- int $transferAppId,
|
|
|
- int $userId,
|
|
|
- string $amount,
|
|
|
+ int $transferAppId,
|
|
|
+ int $userId,
|
|
|
+ string $amount,
|
|
|
?string $outUserId = null,
|
|
|
?string $remark = null,
|
|
|
- array $callbackData = []
|
|
|
- ): TransferOrder {
|
|
|
+ array $callbackData = []
|
|
|
+ ): TransferOrder
|
|
|
+ {
|
|
|
$data = [
|
|
|
'transfer_app_id' => $transferAppId,
|
|
|
- 'user_id' => $userId,
|
|
|
- 'amount' => $amount,
|
|
|
- 'out_user_id' => $outUserId,
|
|
|
- 'remark' => $remark,
|
|
|
- 'callback_data' => $callbackData,
|
|
|
+ 'user_id' => $userId,
|
|
|
+ 'amount' => $amount,
|
|
|
+ 'out_user_id' => $outUserId,
|
|
|
+ 'remark' => $remark,
|
|
|
+ 'callback_data' => $callbackData,
|
|
|
];
|
|
|
|
|
|
return self::createTransferOutFromArrayForThirdParty($data);
|
|
|
@@ -91,7 +97,7 @@ class TransferLogic
|
|
|
|
|
|
/**
|
|
|
* 创建第三方应用转出订单(内部实现,跳过密码验证)
|
|
|
- *
|
|
|
+ * 我 =》 三方
|
|
|
* 注意:第三方应用传入的金额是外部金额,需要转换为内部金额进行处理
|
|
|
*
|
|
|
* @param array $data 订单数据
|
|
|
@@ -110,13 +116,13 @@ class TransferLogic
|
|
|
}
|
|
|
|
|
|
// 验证汇率是否合理
|
|
|
- if (bccomp((string) $app->exchange_rate, '0', 10) <= 0) {
|
|
|
+ if (bccomp((string)$app->exchange_rate, '0', 10) <= 0) {
|
|
|
throw new \Exception('汇率配置错误:汇率必须大于0');
|
|
|
}
|
|
|
|
|
|
// 第三方应用金额处理:传入的是外部金额,需要转换为内部金额
|
|
|
- $outAmount = (string) $data['amount']; // 外部金额(第三方系统金额)
|
|
|
- $amount = bcmul($outAmount, (string) $app->exchange_rate, 10); // 内部金额 = 外部金额 × 汇率
|
|
|
+ $outAmount = (string)$data['amount']; // 外部金额(第三方系统金额)
|
|
|
+ $amount = bcmul($outAmount, (string)$app->exchange_rate, 10); // 内部金额 = 外部金额 × 汇率
|
|
|
|
|
|
// 验证外部金额是否合理
|
|
|
if (bccomp($outAmount, '0', 10) <= 0) {
|
|
|
@@ -129,7 +135,7 @@ class TransferLogic
|
|
|
}
|
|
|
|
|
|
// 修改验证数据:将外部金额替换为内部金额,这样验证器就能正确验证余额
|
|
|
- $validationData = $data;
|
|
|
+ $validationData = $data;
|
|
|
$validationData['amount'] = $amount; // 传递内部金额给验证器
|
|
|
|
|
|
// 使用第三方应用专用验证类(跳过密码验证)
|
|
|
@@ -137,31 +143,35 @@ class TransferLogic
|
|
|
$validation->validated();
|
|
|
|
|
|
// 计算手续费(基于内部金额)
|
|
|
- $feeInfo = $app->calculateOutFee($amount, ['user_id' => $data['user_id']]);
|
|
|
+ $FeeCalculatedEvent = \App\Module\Transfer\Services\FeeService::calculateOutFee($app, $amount, [ 'user_id' => $data['user_id'] ]);
|
|
|
|
|
|
// 生成外部订单ID
|
|
|
$outOrderId = self::generateOutOrderId('OUT');
|
|
|
|
|
|
// 创建订单
|
|
|
+ /**
|
|
|
+ * @var TransferOrder $order
|
|
|
+ */
|
|
|
$order = TransferOrder::create([
|
|
|
- 'transfer_app_id' => $app->id,
|
|
|
- 'out_id' => $app->out_id2 ?? 0,
|
|
|
- 'out_order_id' => $outOrderId,
|
|
|
- 'out_user_id' => $data['out_user_id'] ?? null,
|
|
|
- 'user_id' => $data['user_id'],
|
|
|
- 'currency_id' => $app->currency_id,
|
|
|
- 'fund_id' => $app->fund_id,
|
|
|
- 'type' => TransferType::OUT,
|
|
|
- 'status' => TransferStatus::CREATED,
|
|
|
- 'out_amount' => $outAmount,
|
|
|
- 'amount' => $amount,
|
|
|
- 'exchange_rate' => $app->exchange_rate,
|
|
|
- 'fee_rate' => $feeInfo['fee_rate'],
|
|
|
- 'fee_amount' => $feeInfo['fee_amount'],
|
|
|
- 'actual_amount' => $feeInfo['actual_amount'],
|
|
|
- 'callback_data' => $data['callback_data'] ?? [],
|
|
|
- 'remark' => $data['remark'] ?? null,
|
|
|
- ]);
|
|
|
+ 'transfer_app_id' => $app->id,
|
|
|
+ 'out_id' => $app->out_id2 ?? 0,
|
|
|
+ 'out_order_id' => $outOrderId,
|
|
|
+ 'out_user_id' => $data['out_user_id'] ?? null,
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'currency_id' => $app->currency_id,
|
|
|
+ 'fund_id' => $app->fund_id,
|
|
|
+ 'type' => TransferType::OUT,
|
|
|
+ 'status' => TransferStatus::CREATED,
|
|
|
+ 'out_amount' => $outAmount,
|
|
|
+ 'amount' => $FeeCalculatedEvent->amount,
|
|
|
+ 'exchange_rate' => $app->exchange_rate,
|
|
|
+ 'fee_rate' => $FeeCalculatedEvent->feeRate,
|
|
|
+ 'fee_amount' => $FeeCalculatedEvent->feeAmount,
|
|
|
+ 'actual_amount' => $FeeCalculatedEvent->actualAmount,
|
|
|
+ 'totle_amount' => $FeeCalculatedEvent->totleAmount,
|
|
|
+ 'callback_data' => $data['callback_data'] ?? [],
|
|
|
+ 'remark' => $data['remark'] ?? null,
|
|
|
+ ]);
|
|
|
|
|
|
// 验证fund_to_uid必须存在
|
|
|
if (empty($app->fund_to_uid)) {
|
|
|
@@ -207,16 +217,16 @@ class TransferLogic
|
|
|
|
|
|
if (is_string($feeTradeResult)) {
|
|
|
Log::warning('Transfer out fee collection failed', [
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'fee_amount' => $order->fee_amount,
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'fee_amount' => $order->fee_amount,
|
|
|
'fee_account_uid' => $feeAccountUid,
|
|
|
- 'error' => $feeTradeResult
|
|
|
+ 'error' => $feeTradeResult
|
|
|
]);
|
|
|
} else {
|
|
|
Log::info('Transfer out fee collected successfully', [
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'fee_amount' => $order->fee_amount,
|
|
|
- 'fee_account_uid' => $feeAccountUid,
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'fee_amount' => $order->fee_amount,
|
|
|
+ 'fee_account_uid' => $feeAccountUid,
|
|
|
'configured_account' => $app->fee_account_uid
|
|
|
]);
|
|
|
}
|
|
|
@@ -241,7 +251,7 @@ class TransferLogic
|
|
|
|
|
|
/**
|
|
|
* 创建转出订单(内部实现)
|
|
|
- *
|
|
|
+ * 我 =》 三方
|
|
|
* 处理流程:
|
|
|
* 1. 验证请求数据
|
|
|
* 2. 获取应用配置
|
|
|
@@ -266,10 +276,10 @@ class TransferLogic
|
|
|
}
|
|
|
|
|
|
// 计算金额(转出:内部金额转换为外部金额)
|
|
|
- $amount = (string) $data['amount']; // 内部金额
|
|
|
+ $amount = (string)$data['amount']; // 内部金额
|
|
|
|
|
|
// 验证汇率是否合理
|
|
|
- if (bccomp((string) $app->exchange_rate, '0', 10) <= 0) {
|
|
|
+ if (bccomp((string)$app->exchange_rate, '0', 10) <= 0) {
|
|
|
throw new \Exception('汇率配置错误:汇率必须大于0');
|
|
|
}
|
|
|
|
|
|
@@ -278,7 +288,7 @@ class TransferLogic
|
|
|
throw new \Exception('转出金额必须大于0');
|
|
|
}
|
|
|
|
|
|
- $outAmount = bcdiv($amount, (string) $app->exchange_rate, 10); // 外部金额 = 内部金额 ÷ 汇率
|
|
|
+ $outAmount = bcdiv($amount, (string)$app->exchange_rate, 10); // 外部金额 = 内部金额 ÷ 汇率
|
|
|
|
|
|
// 验证计算结果是否合理
|
|
|
if (bccomp($outAmount, '0', 10) <= 0) {
|
|
|
@@ -286,31 +296,31 @@ class TransferLogic
|
|
|
}
|
|
|
|
|
|
// 计算手续费
|
|
|
- $feeInfo = $app->calculateOutFee($amount, ['user_id' => $data['user_id']]);
|
|
|
+ $feeInfo = $app->calculateOutFee($amount, [ 'user_id' => $data['user_id'] ]);
|
|
|
|
|
|
// 生成外部订单ID
|
|
|
$outOrderId = self::generateOutOrderId('OUT');
|
|
|
|
|
|
// 创建订单
|
|
|
$order = TransferOrder::create([
|
|
|
- 'transfer_app_id' => $app->id,
|
|
|
- 'out_id' => $app->out_id2 ?? 0,
|
|
|
- 'out_order_id' => $outOrderId,
|
|
|
- 'out_user_id' => $data['out_user_id'] ?? null,
|
|
|
- 'user_id' => $data['user_id'],
|
|
|
- 'currency_id' => $app->currency_id,
|
|
|
- 'fund_id' => $app->fund_id,
|
|
|
- 'type' => TransferType::OUT,
|
|
|
- 'status' => TransferStatus::CREATED,
|
|
|
- 'out_amount' => $outAmount,
|
|
|
- 'amount' => $amount,
|
|
|
- 'exchange_rate' => $app->exchange_rate,
|
|
|
- 'fee_rate' => $feeInfo['fee_rate'],
|
|
|
- 'fee_amount' => $feeInfo['fee_amount'],
|
|
|
- 'actual_amount' => $feeInfo['actual_amount'],
|
|
|
- 'callback_data' => $data['callback_data'] ?? [],
|
|
|
- 'remark' => $data['remark'] ?? null,
|
|
|
- ]);
|
|
|
+ 'transfer_app_id' => $app->id,
|
|
|
+ 'out_id' => $app->out_id2 ?? 0,
|
|
|
+ 'out_order_id' => $outOrderId,
|
|
|
+ 'out_user_id' => $data['out_user_id'] ?? null,
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'currency_id' => $app->currency_id,
|
|
|
+ 'fund_id' => $app->fund_id,
|
|
|
+ 'type' => TransferType::OUT,
|
|
|
+ 'status' => TransferStatus::CREATED,
|
|
|
+ 'out_amount' => $outAmount,
|
|
|
+ 'amount' => $amount,
|
|
|
+ 'exchange_rate' => $app->exchange_rate,
|
|
|
+ 'fee_rate' => $feeInfo['fee_rate'],
|
|
|
+ 'fee_amount' => $feeInfo['fee_amount'],
|
|
|
+ 'actual_amount' => $feeInfo['actual_amount'],
|
|
|
+ 'callback_data' => $data['callback_data'] ?? [],
|
|
|
+ 'remark' => $data['remark'] ?? null,
|
|
|
+ ]);
|
|
|
|
|
|
// 验证fund_to_uid必须存在
|
|
|
if (empty($app->fund_to_uid)) {
|
|
|
@@ -327,7 +337,7 @@ class TransferLogic
|
|
|
|
|
|
// 预先验证用户余额是否充足(转出金额 + 手续费)
|
|
|
$userFundService = new FundService($data['user_id'], $app->fund_id);
|
|
|
- $totalRequired = bcadd($order->amount, $order->fee_amount, 10);
|
|
|
+ $totalRequired = bcadd($order->amount, $order->fee_amount, 10);
|
|
|
if (bccomp((string)$userFundService->balance(), $totalRequired, 10) < 0) {
|
|
|
$order->updateStatus(TransferStatus::FAILED, '用户余额不足');
|
|
|
throw new \Exception('用户余额不足');
|
|
|
@@ -357,16 +367,16 @@ class TransferLogic
|
|
|
|
|
|
if (is_string($feeTradeResult)) {
|
|
|
Log::warning('Transfer out fee collection failed', [
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'fee_amount' => $order->fee_amount,
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'fee_amount' => $order->fee_amount,
|
|
|
'fee_account_uid' => $feeAccountUid,
|
|
|
- 'error' => $feeTradeResult
|
|
|
+ 'error' => $feeTradeResult
|
|
|
]);
|
|
|
} else {
|
|
|
Log::info('Transfer out fee collected successfully', [
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'fee_amount' => $order->fee_amount,
|
|
|
- 'fee_account_uid' => $feeAccountUid,
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'fee_amount' => $order->fee_amount,
|
|
|
+ 'fee_account_uid' => $feeAccountUid,
|
|
|
'configured_account' => $app->fee_account_uid
|
|
|
]);
|
|
|
}
|
|
|
@@ -391,6 +401,7 @@ class TransferLogic
|
|
|
|
|
|
/**
|
|
|
* 创建转入订单(对外接口)
|
|
|
+ * 三方 =》 我
|
|
|
*
|
|
|
* @param int $transferAppId 划转应用ID
|
|
|
* @param int $userId 用户ID
|
|
|
@@ -403,30 +414,31 @@ class TransferLogic
|
|
|
* @throws \Exception
|
|
|
*/
|
|
|
public static function createTransferIn(
|
|
|
- int $transferAppId,
|
|
|
- int $userId,
|
|
|
- string $businessId,
|
|
|
- string $amount,
|
|
|
+ int $transferAppId,
|
|
|
+ int $userId,
|
|
|
+ string $businessId,
|
|
|
+ string $amount,
|
|
|
?string $outUserId = null,
|
|
|
?string $remark = null,
|
|
|
- array $callbackData = []
|
|
|
- ): TransferOrder {
|
|
|
+ array $callbackData = []
|
|
|
+ ): TransferOrder
|
|
|
+ {
|
|
|
$data = [
|
|
|
'transfer_app_id' => $transferAppId,
|
|
|
- 'user_id' => $userId,
|
|
|
- 'business_id' => $businessId,
|
|
|
- 'amount' => $amount,
|
|
|
- 'out_user_id' => $outUserId,
|
|
|
- 'remark' => $remark,
|
|
|
- 'callback_data' => $callbackData,
|
|
|
+ 'user_id' => $userId,
|
|
|
+ 'business_id' => $businessId,
|
|
|
+ 'amount' => $amount,
|
|
|
+ 'out_user_id' => $outUserId,
|
|
|
+ 'remark' => $remark,
|
|
|
+ 'callback_data' => $callbackData,
|
|
|
];
|
|
|
|
|
|
- return self::createTransferInFromArray($data);
|
|
|
+ return self::createTransferInFromArray($data, $userId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 创建转入订单(内部实现)
|
|
|
- *
|
|
|
+ * 三方 =》 我
|
|
|
* 处理流程:
|
|
|
* 1. 验证请求数据
|
|
|
* 2. 获取应用配置
|
|
|
@@ -438,13 +450,16 @@ class TransferLogic
|
|
|
* @return TransferOrder
|
|
|
* @throws \Exception
|
|
|
*/
|
|
|
- public static function createTransferInFromArray(array $data): TransferOrder
|
|
|
+ public static function createTransferInFromArray(array $data, $user_id): TransferOrder
|
|
|
{
|
|
|
// 验证请求数据
|
|
|
$validation = new TransferInValidation($data);
|
|
|
$validation->validated();
|
|
|
|
|
|
// 获取应用配置
|
|
|
+ /**
|
|
|
+ * @var TransferApp $app
|
|
|
+ */
|
|
|
$app = TransferApp::findOrFail($data['transfer_app_id']);
|
|
|
if (!$app->is_enabled) {
|
|
|
throw new \Exception('应用已禁用');
|
|
|
@@ -460,32 +475,39 @@ class TransferLogic
|
|
|
}
|
|
|
|
|
|
// 计算金额(转入:外部金额转换为内部金额)
|
|
|
- $outAmount = (string) $data['amount']; // 外部金额
|
|
|
- $amount = bcmul($outAmount, (string) $app->exchange_rate, 10); // 内部金额 = 外部金额 × 汇率
|
|
|
+ $outAmount = (string)$data['amount']; // 外部金额
|
|
|
+ $amount = bcmul($outAmount, (string)$app->exchange_rate, 10); // 内部金额 = 外部金额 × 汇率
|
|
|
|
|
|
// 计算手续费
|
|
|
- $feeInfo = $app->calculateInFee($amount);
|
|
|
|
|
|
+ $feeInfo = FeeService::calculateInFee($app, $amount, [
|
|
|
+ 'user_id' => $user_id
|
|
|
+ ]);
|
|
|
// 创建订单
|
|
|
+ /**
|
|
|
+ * @var TransferOrder $order
|
|
|
+ */
|
|
|
$order = TransferOrder::create([
|
|
|
- 'transfer_app_id' => $app->id,
|
|
|
- 'out_id' => $app->out_id2 ?? 0,
|
|
|
- 'out_order_id' => $data['business_id'],
|
|
|
- 'out_user_id' => $data['out_user_id'] ?? null,
|
|
|
- 'user_id' => $data['user_id'],
|
|
|
- 'currency_id' => $app->currency_id,
|
|
|
- 'fund_id' => $app->fund_id,
|
|
|
- 'type' => TransferType::IN,
|
|
|
- 'status' => TransferStatus::CREATED,
|
|
|
- 'out_amount' => $outAmount,
|
|
|
- 'amount' => $amount,
|
|
|
- 'exchange_rate' => $app->exchange_rate,
|
|
|
- 'fee_rate' => $feeInfo['fee_rate'],
|
|
|
- 'fee_amount' => $feeInfo['fee_amount'],
|
|
|
- 'actual_amount' => $feeInfo['actual_amount'],
|
|
|
- 'callback_data' => $data['callback_data'] ?? [],
|
|
|
- 'remark' => $data['remark'] ?? null,
|
|
|
- ]);
|
|
|
+ 'transfer_app_id' => $app->id,
|
|
|
+ 'out_id' => $app->out_id2 ?? 0,
|
|
|
+ 'out_order_id' => $data['business_id'],
|
|
|
+ 'out_user_id' => $data['out_user_id'] ?? null,
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'currency_id' => $app->currency_id,
|
|
|
+ 'fund_id' => $app->fund_id,
|
|
|
+ 'type' => TransferType::IN,
|
|
|
+ 'status' => TransferStatus::CREATED,
|
|
|
+ 'out_amount' => $outAmount,
|
|
|
+ 'amount' => $feeInfo->amount,
|
|
|
+ 'exchange_rate' => $app->exchange_rate,
|
|
|
+ 'fee_rate' => $feeInfo->feeRate,
|
|
|
+ 'fee_amount' => $feeInfo->feeAmount,
|
|
|
+ 'actual_amount' => $feeInfo->actualAmount,
|
|
|
+ 'totle_amount' => $feeInfo->totleAmount,
|
|
|
+
|
|
|
+ 'callback_data' => $data['callback_data'] ?? [],
|
|
|
+ 'remark' => $data['remark'] ?? null,
|
|
|
+ ]);
|
|
|
|
|
|
// 验证fund_in_uid必须存在
|
|
|
if (empty($app->fund_in_uid)) {
|
|
|
@@ -501,7 +523,7 @@ class TransferLogic
|
|
|
}
|
|
|
|
|
|
// 验证来源账户余额是否充足
|
|
|
- if ($sourceFundService->balance() < $amount) {
|
|
|
+ if ($sourceFundService->balance() < $order->totle_amount) {
|
|
|
$order->updateStatus(TransferStatus::FAILED, '来源账户余额不足');
|
|
|
throw new \Exception('来源账户余额不足');
|
|
|
}
|
|
|
@@ -530,16 +552,16 @@ class TransferLogic
|
|
|
|
|
|
if (is_string($feeTradeResult)) {
|
|
|
Log::warning('Transfer in fee collection failed', [
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'fee_amount' => $order->fee_amount,
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'fee_amount' => $order->fee_amount,
|
|
|
'fee_account_uid' => $feeAccountUid,
|
|
|
- 'error' => $feeTradeResult
|
|
|
+ 'error' => $feeTradeResult
|
|
|
]);
|
|
|
} else {
|
|
|
Log::info('Transfer in fee collected successfully', [
|
|
|
- 'order_id' => $order->id,
|
|
|
- 'fee_amount' => $order->fee_amount,
|
|
|
- 'fee_account_uid' => $feeAccountUid,
|
|
|
+ 'order_id' => $order->id,
|
|
|
+ 'fee_amount' => $order->fee_amount,
|
|
|
+ 'fee_account_uid' => $feeAccountUid,
|
|
|
'configured_account' => $app->fee_account_uid
|
|
|
]);
|
|
|
}
|
|
|
@@ -578,11 +600,12 @@ class TransferLogic
|
|
|
|
|
|
if (!$order) {
|
|
|
Log::warning('Transfer callback order not found', $callbackData);
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 更新订单状态
|
|
|
- $status = $callbackData['success'] ? TransferStatus::COMPLETED : TransferStatus::FAILED;
|
|
|
+ $status = $callbackData['success'] ? TransferStatus::COMPLETED : TransferStatus::FAILED;
|
|
|
$message = $callbackData['message'] ?? null;
|
|
|
|
|
|
return $order->updateStatus($status, $message);
|
|
|
@@ -649,4 +672,5 @@ class TransferLogic
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
}
|