标签 Stripe 下的文章

HodlAI: Web3 × AI 的创新融合


一、问题:AI API 的付费模式太"Web2"了

用过 OpenAI/Claude/Gemini 等 API 的人都知道:

  • 先充值,后使用
  • 用多少扣多少
  • 花完再充,无限循环

这本质上是 SaaS 订阅模式——你永远在为使用权付费,而不是拥有什么。

但 Web3 的核心理念是什么?持有即权益。

有没有可能,把这个理念用到 AI 服务上?


二、HodlAI 的解法:代币 = 永久会员卡

HodlAI 提出了一个简单但巧妙的模型:

对比项 传统模式 HodlAI 模式
投入 充 $100 买 $100 代币
使用 用完归零 每天有额度
资金归属 资金锁在平台 代币在自己钱包
性质 纯消费 消费 + 投资
续费 用完再充 每天自动刷新

核心公式

每 5 万代币 = 每日 $1 API 额度

持有 50 万代币,每天就有 $10 免费额度,可以调用 GPT-5 、Claude 4.5 、Gemini 3 等 200+ 模型


三、钱从哪来?交易税驱动的永续资金池

这是最关键的问题。

HodlAI 的答案:3% 交易税,100% 进入 API 资金池。

代币每笔买卖 → 3% 税收 → API 资金池 → 按持有量分配
     ↑                                        ↓
     └──────── 交易越活跃,池子越大 ←─────────┘

正向飞轮效应

  1. 更多人持币
  2. → 更多交易
  3. → 更大资金池
  4. → 更多 API 额度
  5. → 更多人想持币
  6. → 回到 1


四、防作弊:Diamond Hands 钻石手机制

如果没有限制,套利党会这么玩:

买入 → 用光免费额度 → 立刻卖出 → 下次再来

HodlAI 用**"钻石手机制"**解决这个问题:

持有时间 额度释放
0-5 分钟 0%(冷启动)
5 分钟后 10% 额度释放
每小时 +4% 递增
24 小时不卖 100% 满额度(钻石手)
曾经卖过 永久最高 80%(纸手惩罚)

⚠️ 持有时间通过链上数据验证,无法作弊


五、透明度:Stripe 账单公开可查

很多项目说"税收用于开发",但谁也不知道钱去哪了。

HodlAI 做到了真正的透明:

  • ✅ 每一笔 API 充值都公开
  • ✅ 提供 Stripe 官方账单链接
  • ✅ 任何人可以点击验证
  • ✅ 团队 0 抽成

这不是"相信我们",而是"你自己来查"。


六、风险提示

说完优点,也要说风险:

  • ⚠️ 代币价格波动:可能涨,也可能跌
  • ⚠️ 项目早期:模式新颖但未经长期验证
  • ⚠️ 依赖交易量:如果没人交易,资金池增长会停滞


七、项目特点

这个项目的创新点在于:

用 Web3 的代币经济模型,解决 Web2 的订阅付费痛点。

它回答了一个问题:Meme 币除了炒作,能不能有实际用途?

HodlAI 的答案是:可以,把代币变成"AI 服务的永久会员卡"。

这个模式能不能跑通,需要时间验证。

但至少,这是目前有的最有想象力的 Web3 × AI 结合尝试


八、项目愿景

我们相信,AI 服务不应该是永无止境的订阅付费,而应该是持有即权益的价值共享。

HodlAI 是全球首个将 Web3 代币经济与 AI API 服务深度融合的创新平台。


相关链接

平台 链接
🌐 官网 https://hodlai.fun/
🐦 Twitter @hodlai_fun
💬 Telegram https://t.me/hodlai_fun

做出海工具站,绕不开的一道坎:收款

海外工具站最常见的支付方案是 Stripe ,
但现实是 Stripe 不支持大陆个人直接注册。

那么 Creem,是目前性价比非常高的一种选择。
Creem 的优势在于:

  • 不需要护照
  • 不需要营业执照
  • 只需要 身份证 + 支付宝
  • 支持用户使用 银行卡 / Google Pay 付款
  • 覆盖大多数海外用户的支付习惯
  • 非常适合个人出海、MVP 阶段

👉 等后期跑通变现、有稳定收入后,再考虑迁移到 Stripe,是一个非常合理的路径。

(原本是想放截图的,但是暂时没有找到插图的方式)

一、注册账号( 10 分钟搞定)

首次注册 Creem 后,需要先 创建一个 Store。这里非常简单:

  • Store Name:直接填写你的网站名即可
  • 不需要复杂描述,后面都可以修改

进入 Creem 后,默认是测试模式( Test Mode )。在测试模式下:所有支付都是 测试卡、不会真实扣钱、适合在本地或测试站调接口

👉 测试卡非常常见,随便找个 AI 问就能拿到。

二、完善账户提现和产品信息

Step 1:账户提现信息(生产环境)

⚠️ 一定要先切换到 生产环境( Production / Live )

切完后,完善提💰信息,Balance → Payout account → Create new account

接下来,按页面提示,逐步完善信息,信息填完后即可提交。

如果有不清楚的地方,可以直接找客服(左下角在线客服,回复速度还可以)。

Step 2:产品信息

1️⃣ 价格设置

这里只遵循一个原则:

你打算怎么卖,就怎么填。

看你想怎么卖你的产品,面向什么用户,单次付费还是订阅,价格区间,看用户能接受什么样的价位和档次。
只要构思好了,表单照填即可。

⚠️ 重要避坑提醒:

测试环境 & 生产环境的产品信息,都需要各填一遍。因为它们使用的是 不同的 API Key,如果只改测试环境,代码还没发版,生产环境数据却变了。用户会一脸懵,你也会一脸懵。

2️⃣ 网站必备页面(审核关键)

先给结论,Creem 审核非常看重以下内容:

Privacy Policy (隐私政策)Terms of Service (服务条款)联系邮箱(如:support@yourdomainfeedback@yourdomain)、检查是否存在违规内容(如:虚假评价、虚假销量,有就删掉)

我第一次提审为什么没过?

我一开始的想法是:

“Creem 应该只审核身份吧?
支付功能我还没完全接好,先提审看看。
等通过审核,再把支付功能接上去。”

于是:网站还没正式接支付、一些页面也没写、就直接提交了审核

一般 48h 内会有回复,结果我收到了一封邮件:未提供网站,信息不完整

后来我才认真看官方文档,发现他们有一整套
Account Review Checklist

如果支付功能还在测试,怎么办?

如果你的支付功能还没上生产环境,可以这样做:提交 正式网站(不带测试支付)、说明支付功能仍在测试阶段、提供测试地址(如 xxx.test)、同时提交产品截图(能看到价格、能看到产品形态 )

这样审核方也好判断:产品是否真实存在、是否可售、是否符合合规要求

⚠️避坑点

1️⃣一定不要出现任何虚假信息。
不管是虚假评价、虚假销量,还是一些看起来“无伤大雅”的营销描述,在 Creem 审核阶段都非常容易被卡。至少在审核期间,建议全部删除,否则基本就是直接不过。

2️⃣二次提审一定要做到“对症下药”。
Creem 的二次提审通常是通过邮件沟通,对方会非常明确地指出你当前不符合要求的地方,这时候不要只回复一句“我已经修改了”,而是要针对每一条反馈逐项解决,并附上对应的证据,比如截图、链接或页面地址,否则很容易再次被拒,甚至进入更长的等待周期。

3️⃣不要反复硬提审。
目前 Creem 并没有公开说明最多可以提审多少次,但不少伙伴的反馈是,提交次数一多,审核等待时间会明显被拉长。结合实际经验来看,只要前期准备到位,认真按照清单补齐内容,三次以内基本都能通过,没有必要赌运气。

我的整个提审周期

从第一次提交审核到最终通过,我前后大概花了 11 天,时间拉长主要是两个原因。

1️⃣我自己没有勤看邮箱。
手机收不到 Gmail 提醒,必须打开电脑、登录 Gmail 才能看到审核邮件,结果提审后一周才发现对方早就回复过我,指出我缺少网站链接。再一对照自查清单,才发现产品截图、价格展示等内容也都没准备齐,于是花了一天时间补齐静态页面,又用一天时间重新梳理产品定价,剩下的时间基本都在 vibe coding 。

2️⃣刚好赶上他们的圣诞节假期。
理论上 Creem 官方给的审核回复时间是 48 小时内,但叠加假期之后,实际大概等了 4 天左右才收到回复,好在后续流程就比较顺利了,再次回复邮件后就直接通过。

小小结

如果你现在正在做 AI 出海工具站,正好卡在「收款」这一步,又不想一开始就折腾海外公司、税务和一整套复杂结构,那么 Creem 这条路径是非常值得参考的。

先把 MVP 跑起来,先把现金流跑通,再去考虑更复杂、更长期的方案,往往是对个人开发者来说性价比最高的选择。

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()



📌 转载信息
转载时间:
2025/12/29 15:28:36