mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-10 23:36:11 +01:00
bug fix: make sure free scan works
This commit is contained in:
@@ -179,32 +179,86 @@ class AIScannerManager:
|
|||||||
if status == 'success':
|
if status == 'success':
|
||||||
api_key = request.GET.get('api_key')
|
api_key = request.GET.get('api_key')
|
||||||
balance = request.GET.get('balance', '0.00')
|
balance = request.GET.get('balance', '0.00')
|
||||||
|
charged = request.GET.get('charged') == 'true'
|
||||||
|
amount = request.GET.get('amount', '0.00')
|
||||||
|
|
||||||
self.logger.writeToFile(f'[AIScannerManager.setupComplete] API Key: {api_key[:20] if api_key else "None"}...')
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] API Key: {api_key[:20] if api_key else "None"}...')
|
||||||
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Balance from URL: {balance}')
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Balance from URL: {balance}')
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Charged: {charged}, Amount: {amount}')
|
||||||
|
|
||||||
if api_key:
|
if api_key:
|
||||||
|
try:
|
||||||
|
# Convert balance to float with error handling
|
||||||
|
balance_float = float(balance) if balance else 0.0
|
||||||
|
|
||||||
# Update scanner settings
|
# Update scanner settings
|
||||||
scanner_settings, created = AIScannerSettings.objects.get_or_create(
|
scanner_settings, created = AIScannerSettings.objects.get_or_create(
|
||||||
admin=admin,
|
admin=admin,
|
||||||
defaults={
|
defaults={
|
||||||
'api_key': api_key,
|
'api_key': api_key,
|
||||||
'balance': float(balance),
|
'balance': balance_float,
|
||||||
|
'is_payment_configured': True
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
if not created:
|
||||||
|
# Update existing record
|
||||||
|
scanner_settings.api_key = api_key
|
||||||
|
scanner_settings.balance = balance_float
|
||||||
|
scanner_settings.is_payment_configured = True
|
||||||
|
scanner_settings.save()
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Updated existing scanner settings')
|
||||||
|
else:
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Created new scanner settings')
|
||||||
|
|
||||||
|
# Verify the save worked
|
||||||
|
scanner_settings.refresh_from_db()
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Final state - API Key: {scanner_settings.api_key[:20] if scanner_settings.api_key else "None"}..., Balance: {scanner_settings.balance}, Configured: {scanner_settings.is_payment_configured}')
|
||||||
|
|
||||||
|
# Success message
|
||||||
|
if charged:
|
||||||
|
messages.success(request, f'Payment setup successful! ${amount} charged to your card. You have ${balance} credit.')
|
||||||
|
else:
|
||||||
|
messages.success(request, f'Payment setup successful! You have ${balance} credit.')
|
||||||
|
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager] Payment setup completed for {admin.userName} with balance ${balance}')
|
||||||
|
|
||||||
|
except ValueError as e:
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Balance conversion error: {str(e)}')
|
||||||
|
messages.error(request, 'Payment setup completed but balance format invalid.')
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Database save error: {str(e)}')
|
||||||
|
messages.error(request, 'Payment setup completed but failed to save settings.')
|
||||||
|
else:
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] No API key received in success callback')
|
||||||
|
messages.error(request, 'Payment setup completed but API key not received.')
|
||||||
|
|
||||||
|
elif status == 'partial_success':
|
||||||
|
# Handle partial success (payment method added but charge failed)
|
||||||
|
api_key = request.GET.get('api_key')
|
||||||
|
if api_key:
|
||||||
|
try:
|
||||||
|
scanner_settings, created = AIScannerSettings.objects.get_or_create(
|
||||||
|
admin=admin,
|
||||||
|
defaults={
|
||||||
|
'api_key': api_key,
|
||||||
|
'balance': 0.0,
|
||||||
'is_payment_configured': True
|
'is_payment_configured': True
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
if not created:
|
if not created:
|
||||||
scanner_settings.api_key = api_key
|
scanner_settings.api_key = api_key
|
||||||
scanner_settings.balance = float(balance)
|
|
||||||
scanner_settings.is_payment_configured = True
|
scanner_settings.is_payment_configured = True
|
||||||
scanner_settings.save()
|
scanner_settings.save()
|
||||||
|
|
||||||
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Saved balance: {scanner_settings.balance}')
|
messages.warning(request, 'Payment method added but initial charge failed. Please add funds manually.')
|
||||||
messages.success(request, f'Payment setup successful! You have ${balance} credit.')
|
self.logger.writeToFile(f'[AIScannerManager] Partial payment setup for {admin.userName}')
|
||||||
self.logger.writeToFile(f'[AIScannerManager] Payment setup completed for {admin.userName} with balance ${balance}')
|
except Exception as e:
|
||||||
|
self.logger.writeToFile(f'[AIScannerManager.setupComplete] Partial success save error: {str(e)}')
|
||||||
|
messages.error(request, 'Payment method setup partially failed.')
|
||||||
else:
|
else:
|
||||||
messages.error(request, 'Payment setup completed but API key not received.')
|
messages.error(request, 'Payment method setup failed - no API key received.')
|
||||||
|
|
||||||
elif status in ['failed', 'cancelled', 'error']:
|
elif status in ['failed', 'cancelled', 'error']:
|
||||||
error = request.GET.get('error', 'Payment setup failed')
|
error = request.GET.get('error', 'Payment setup failed')
|
||||||
|
|||||||
Reference in New Issue
Block a user