|
|
@@ -0,0 +1,135 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+/**
|
|
|
+ * 测试TransferOutThirdPartyValidation中的余额验证功能
|
|
|
+ */
|
|
|
+
|
|
|
+require_once __DIR__ . '/../vendor/autoload.php';
|
|
|
+
|
|
|
+use App\Module\Transfer\Validations\TransferOutThirdPartyValidation;
|
|
|
+
|
|
|
+echo "=== TransferOutThirdPartyValidation 余额验证测试 ===\n\n";
|
|
|
+
|
|
|
+// 测试数据
|
|
|
+$testUserId = 39027; // 使用之前异常订单的用户ID
|
|
|
+$testTransferAppId = 2; // 使用现有的转账应用ID
|
|
|
+
|
|
|
+echo "测试用户ID: {$testUserId}\n";
|
|
|
+echo "测试应用ID: {$testTransferAppId}\n\n";
|
|
|
+
|
|
|
+// 测试1: 正常金额验证
|
|
|
+echo "1. 测试正常金额验证\n";
|
|
|
+echo "-------------------\n";
|
|
|
+
|
|
|
+$normalData = [
|
|
|
+ 'transfer_app_id' => $testTransferAppId,
|
|
|
+ 'user_id' => $testUserId,
|
|
|
+ 'amount' => '100', // 正常金额
|
|
|
+ 'remark' => '测试正常转出',
|
|
|
+];
|
|
|
+
|
|
|
+try {
|
|
|
+ $validation = new TransferOutThirdPartyValidation($normalData);
|
|
|
+ $validation->validated();
|
|
|
+ echo "✅ 正常金额验证通过\n";
|
|
|
+} catch (\Exception $e) {
|
|
|
+ echo "❌ 正常金额验证失败: " . $e->getMessage() . "\n";
|
|
|
+}
|
|
|
+
|
|
|
+echo "\n";
|
|
|
+
|
|
|
+// 测试2: 超额金额验证
|
|
|
+echo "2. 测试超额金额验证\n";
|
|
|
+echo "-------------------\n";
|
|
|
+
|
|
|
+$excessiveData = [
|
|
|
+ 'transfer_app_id' => $testTransferAppId,
|
|
|
+ 'user_id' => $testUserId,
|
|
|
+ 'amount' => '999999999', // 超额金额(近10亿)
|
|
|
+ 'remark' => '测试超额转出',
|
|
|
+];
|
|
|
+
|
|
|
+try {
|
|
|
+ $validation = new TransferOutThirdPartyValidation($excessiveData);
|
|
|
+ $validation->validated();
|
|
|
+ echo "❌ 超额金额验证失败:应该被拒绝但通过了\n";
|
|
|
+} catch (\Exception $e) {
|
|
|
+ echo "✅ 超额金额验证通过:正确拒绝了超额转出\n";
|
|
|
+ echo " 错误信息: " . $e->getMessage() . "\n";
|
|
|
+}
|
|
|
+
|
|
|
+echo "\n";
|
|
|
+
|
|
|
+// 测试3: 异常大金额验证(超过1000万限制)
|
|
|
+echo "3. 测试异常大金额验证\n";
|
|
|
+echo "---------------------\n";
|
|
|
+
|
|
|
+$abnormalData = [
|
|
|
+ 'transfer_app_id' => $testTransferAppId,
|
|
|
+ 'user_id' => $testUserId,
|
|
|
+ 'amount' => '20000000', // 2000万,超过1000万限制
|
|
|
+ 'remark' => '测试异常大金额',
|
|
|
+];
|
|
|
+
|
|
|
+try {
|
|
|
+ $validation = new TransferOutThirdPartyValidation($abnormalData);
|
|
|
+ $validation->validated();
|
|
|
+ echo "❌ 异常大金额验证失败:应该被拒绝但通过了\n";
|
|
|
+} catch (\Exception $e) {
|
|
|
+ echo "✅ 异常大金额验证通过:正确拒绝了异常大金额\n";
|
|
|
+ echo " 错误信息: " . $e->getMessage() . "\n";
|
|
|
+}
|
|
|
+
|
|
|
+echo "\n";
|
|
|
+
|
|
|
+// 测试4: 负数金额验证
|
|
|
+echo "4. 测试负数金额验证\n";
|
|
|
+echo "------------------\n";
|
|
|
+
|
|
|
+$negativeData = [
|
|
|
+ 'transfer_app_id' => $testTransferAppId,
|
|
|
+ 'user_id' => $testUserId,
|
|
|
+ 'amount' => '-100', // 负数金额
|
|
|
+ 'remark' => '测试负数金额',
|
|
|
+];
|
|
|
+
|
|
|
+try {
|
|
|
+ $validation = new TransferOutThirdPartyValidation($negativeData);
|
|
|
+ $validation->validated();
|
|
|
+ echo "❌ 负数金额验证失败:应该被拒绝但通过了\n";
|
|
|
+} catch (\Exception $e) {
|
|
|
+ echo "✅ 负数金额验证通过:正确拒绝了负数金额\n";
|
|
|
+ echo " 错误信息: " . $e->getMessage() . "\n";
|
|
|
+}
|
|
|
+
|
|
|
+echo "\n";
|
|
|
+
|
|
|
+// 测试5: 缺少必需参数验证
|
|
|
+echo "5. 测试缺少必需参数验证\n";
|
|
|
+echo "-----------------------\n";
|
|
|
+
|
|
|
+$incompleteData = [
|
|
|
+ 'amount' => '100', // 缺少user_id和transfer_app_id
|
|
|
+ 'remark' => '测试缺少参数',
|
|
|
+];
|
|
|
+
|
|
|
+try {
|
|
|
+ $validation = new TransferOutThirdPartyValidation($incompleteData);
|
|
|
+ $validation->validated();
|
|
|
+ echo "❌ 缺少参数验证失败:应该被拒绝但通过了\n";
|
|
|
+} catch (\Exception $e) {
|
|
|
+ echo "✅ 缺少参数验证通过:正确拒绝了不完整的数据\n";
|
|
|
+ echo " 错误信息: " . $e->getMessage() . "\n";
|
|
|
+}
|
|
|
+
|
|
|
+echo "\n";
|
|
|
+
|
|
|
+echo "=== 测试总结 ===\n";
|
|
|
+echo "TransferOutThirdPartyValidation 现在包含了完整的验证机制:\n";
|
|
|
+echo "1. ✅ 基础数据验证(必需字段、数据类型)\n";
|
|
|
+echo "2. ✅ 金额范围验证(最小0.01,最大1000万)\n";
|
|
|
+echo "3. ✅ 用户余额验证(确保余额充足)\n";
|
|
|
+echo "4. ✅ 转账应用验证(应用存在、启用、允许转出)\n";
|
|
|
+echo "5. ✅ 异常情况处理(负数、超额、缺少参数)\n\n";
|
|
|
+
|
|
|
+echo "修复完成!现在第三方应用转出也会进行完整的余额验证。\n";
|