File size: 3,976 Bytes
5ad3e05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
"""

Deepseek API相关功能模块 - 提供Deepseek API的调用和验证功能

"""
import requests

def validate_api_key(api_key):
    """

    验证Deepseek API密钥是否有效并获取账户余额

    

    Args:

        api_key (str): 需要验证的Deepseek API密钥

    

    Returns:

        dict: 包含验证结果的字典,包括:

            - success (bool): API密钥验证成功为True,失败为False

            - return_message (str): 验证响应的具体消息,成功时为"200: Success!",失败时为错误详情

            - balance (float): 账户余额,成功时为账户总余额,失败时为0

            - states (str): 账户状态

    """
    url = "https://api.deepseek.com/v1/user/balance"
    
    headers = {
        "Authorization": f"Bearer {api_key}"
    }
    
    try:
        response = requests.get(url, headers=headers)
        
        if response.status_code == 200:
            response_data = response.json()
            is_available = response_data.get("is_available", False)
            
            if not is_available:
                return {
                    "success": False,
                    "return_message": "429: Insufficient balance",
                    "balance": 0,
                    "states": ""
                }
             
            balance_infos = response_data.get("balance_infos", [])
            
            balance = 0.0
            
            try:
                exchange_rate_response = requests.get("https://api.exchangerate-api.com/v4/latest/USD")
                exchange_rate_response.raise_for_status()
                exchange_rate_data = exchange_rate_response.json()
                exchange_rate = exchange_rate_data.get("rates", {}).get("CNY")
                
                if exchange_rate is None:
                    exchange_rate = 7.2
            except Exception as e:
                exchange_rate = 7.2
            
            has_cny = False
            has_usd = False
            
            for balance_info in balance_infos:
                currency = balance_info.get("currency")
                total_balance = float(balance_info.get("total_balance", 0))
                
                if currency == "CNY":
                    balance += total_balance
                    if total_balance > 0:
                        has_cny = True
                elif currency == "USD":
                    balance += total_balance * exchange_rate
                    if total_balance > 0:
                        has_usd = True
            
            states = ""
            if has_cny and has_usd:
                states = "CNY/USD"
            elif has_cny:
                states = "CNY"
            elif has_usd:
                states = "USD"
            
            return {
                "success": True,
                "return_message": "200: Success!",
                "balance": balance,
                "states": states
            }
        else:
            return_message = ""
            try:
                error_data = response.json()
                if "error" in error_data:
                    return_message = error_data["error"].get("message", "")
                    return_message = f"{response.status_code}: {return_message}"
            except:
                return_message = f"{response.status_code}: {response.text or f'HTTP错误'}"
                
            return {
                "success": False,
                "return_message": return_message,
                "balance": 0,
                "states": ""
            }
    except Exception as e:
        error_str = str(e)
        print(f"验证API密钥时出错: {error_str}")
        return {
            "success": False,
            "return_message": f"500: 请求异常: {error_str}",
            "balance": 0,
            "states": ""
        }