Verdent 获取试用绑卡链接脚本(无需安装 IDE,支持插件)
Verdent 本身是必须要 下载 IDE 才可以拿到付款链接去试用的,插件和网页控制台都是无法获取试用链接的。
脚本自取,喜欢的老友留个评论和赞~
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Verdent 获取付款链接工具
用于获取注册后的Stripe支付链接(绑卡链接)
"""
import httpx
import json
import sys
import time
import io
# 修复 Windows 控制台编码问题
if sys.platform == 'win32':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
class VerdentPaymentLinkGetter:
"""Verdent 付款链接获取器"""
def __init__(self, token):
"""
初始化
token: Verdent 访问令牌
"""
self.token = token
self.base_url = "https://api.verdent.ai"
# 初始化 HTTP 客户端
self.client = httpx.Client(
timeout=30.0,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Origin': 'https://www.verdent.ai',
'Referer': 'https://www.verdent.ai/',
'sec-ch-ua': '"Chromium";v="142", "Microsoft Edge";v="142", "Not_A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
}
)
# Verdent 计划 ID
self.plan_ids = {
'Free': 'Pl1181733412181114881', # Free - 7天试用
'Starter': 'Pl1181727875814031360', # $19/月
'Pro': 'Pl1181727875813916672', # $59/月
'Max': 'Pl1181727875813818368', # $179/月
'PayAsYouGo_20': 'Pl1181727875813720064', # $20 一次性
'PayAsYouGo_60': 'Pl1181727875813588992', # $60 一次性
'PayAsYouGo_80': 'Pl1181727875813474304', # $80 一次性
'PayAsYouGo_100': 'Pl1181727875813376000', # $100 一次性
'PayAsYouGo_200': 'Pl1181727875813261312', # $200 一次性
}
def get_user_info(self):
"""获取用户信息(包含邮箱)"""
try:
print("📧 正在获取用户信息...")
# 添加 Cookie 头(包含 token)
headers = {
'Cookie': f'token={self.token}'
}
response = self.client.get(
f'{self.base_url}/verdent/user/info',
headers=headers
)
if response.status_code == 200:
data = response.json()
email = data.get('email', '')
print(f"✅ 用户邮箱: {email}")
return email
else:
print(f"⚠️ 获取用户信息失败: {response.status_code}")
print(f" 响应: {response.text}")
return None
except Exception as e:
print(f"❌ 获取用户信息出错: {e}")
return None
def create_subscription(self, plan_name='Free', user_email=None):
"""
创建订阅并获取支付链接
plan_name: 计划名称 (Free, Starter, Pro, Max, PayAsYouGo_20, 等)
user_email: 用户邮箱(如果不提供则自动获取)
"""
try:
# 获取 plan_id
plan_id = self.plan_ids.get(plan_name)
if not plan_id:
print(f"❌ 未知的计划名称: {plan_name}")
print(f" 支持的计划: {', '.join(self.plan_ids.keys())}")
return None
# 如果没有提供邮箱,尝试获取
if not user_email:
user_email = self.get_user_info()
if not user_email:
print("❌ 无法获取用户邮箱,请手动提供")
return None
print(f"\n💳 正在创建订阅...")
print(f" 计划: {plan_name}")
print(f" Plan ID: {plan_id}")
print(f" 邮箱: {user_email}")
# 添加 Cookie 头
headers = {
'Cookie': f'token={self.token}',
'Content-Type': 'application/json'
}
# 构造请求体
payload = {
'plan_id': plan_id,
'user_email': user_email,
'source': 'verdent'
}
# 发送请求
response = self.client.post(
f'{self.base_url}/verdent/subscription/create',
headers=headers,
json=payload
)
if response.status_code == 200:
data = response.json()
print(f"✅ 订阅创建成功!")
print(f"\n📋 完整响应:")
print(json.dumps(data, indent=2, ensure_ascii=False))
# 尝试提取支付链接
payment_url = None
# 常见的字段名
possible_keys = ['url', 'payment_url', 'checkout_url', 'stripe_url',
'redirect_url', 'session_url', 'link', 'checkout_session_url']
for key in possible_keys:
if key in data:
payment_url = data[key]
break
# 如果没有直接的URL字段,检查嵌套对象
if not payment_url:
if 'data' in data and isinstance(data['data'], dict):
for key in possible_keys:
if key in data['data']:
payment_url = data['data'][key]
break
if payment_url:
print(f"\n🔗 支付链接:")
print(payment_url)
return payment_url
else:
print(f"\n⚠️ 未在响应中找到支付链接,请查看完整响应")
return data
else:
print(f"❌ 创建订阅失败: {response.status_code}")
print(f" 响应: {response.text}")
return None
except Exception as e:
print(f"❌ 创建订阅出错: {e}")
import traceback
traceback.print_exc()
return None
def close(self):
"""关闭客户端"""
self.client.close()
def main():
"""主函数"""
print("=" * 60)
print("🌟 Verdent 付款链接获取工具")
print("=" * 60)
# 使用方式 1: 从命令行参数读取
if len(sys.argv) > 1:
token = sys.argv[1]
plan_name = sys.argv[2] if len(sys.argv) > 2 else 'Free'
user_email = sys.argv[3] if len(sys.argv) > 3 else None
else:
# 使用方式 2: 从 verdent_tokens.txt 读取
try:
with open('verdent_tokens.txt', 'r', encoding='utf-8') as f:
lines = [line.strip() for line in f if line.strip()]
if lines:
token = lines[0]
print(f"📄 从 verdent_tokens.txt 读取 token")
else:
print("❌ verdent_tokens.txt 为空")
print("\n使用方法:")
print(" python get_payment_link.py <token> [plan_name] [email]")
print("\n参数说明:")
print(" token: Verdent 访问令牌(必需)")
print(" plan_name: 计划名称(可选,默认: Free)")
print(" 支持: Free, Starter, Pro, Max, PayAsYouGo_20/60/80/100/200")
print(" email: 用户邮箱(可选,不提供则自动获取)")
return
except FileNotFoundError:
print("❌ 找不到 verdent_tokens.txt 文件")
print("\n使用方法:")
print(" python get_payment_link.py <token> [plan_name] [email]")
print("\n或创建 verdent_tokens.txt 文件并在第一行写入 token")
return
plan_name = 'Free' # 默认使用 Free 计划
user_email = None
print(f"\n🔐 Token: {token[:50]}...")
# 创建获取器
getter = VerdentPaymentLinkGetter(token)
try:
# 获取支付链接
result = getter.create_subscription(plan_name=plan_name, user_email=user_email)
if result:
print("\n" + "=" * 60)
print("✅ 成功!")
if isinstance(result, str) and result.startswith('http'):
print(f"🔗 复制此链接到浏览器即可绑卡:")
print(result)
print("=" * 60)
else:
print("\n" + "=" * 60)
print("❌ 获取失败,请检查 token 是否有效")
print("=" * 60)
finally:
getter.close()
if __name__ == "__main__":
main()

评论区(暂无评论)