| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?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";
|