e79bc2d291
- 删除 polymarket_wallet_activity_watcher.py(914行)及 runtime_coordinator 调度 - 移除 LGBM / Polymarket 价格层 / Groq / prewarm 等 v1.7.0 已废弃功能的文档引用 - 清理 6 个死文档链接,更新文档索引和版本日期 - 移除 POLYMARKET_WALLET_ACTIVITY_* / PREWARM_* 等废弃环境变量 Directive: 文档与代码同步清理,无功能变更 Tested: pytest tests/test_bot_runtime_coordinator.py pass Confidence: high
3.4 KiB
3.4 KiB
Supabase + 登录 + 支付接入说明(v1.7.0)
最后更新:2026-03-14
1. 目标
- 前端支持 Google 一键登录 + 邮箱注册/登录。
- 后端支持 Supabase JWT 鉴权。
- 支持 Polygon 合约支付(USDC / USDC.e)并自动确认开通订阅。
2. Supabase 控制台配置
Auth -> Providers打开Google与Email。- Google Cloud OAuth 回调配置:
https://<project-ref>.supabase.co/auth/v1/callback
Auth -> URL Configuration添加:- 站点 URL(生产域名)
- 回调 URL(例如
https://polyweather-pro.vercel.app/auth/callback)
3. 数据库脚本
在 Supabase SQL Editor 执行:
scripts/supabase/schema.sql
会创建支付与订阅相关表:
subscriptionspaymentsentitlement_eventsuser_walletswallet_link_challengespayment_intentspayment_transactions
4. 环境变量
4.1 前端(Vercel / frontend/.env.local)
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
POLYWEATHER_AUTH_ENABLED=true
POLYWEATHER_AUTH_REQUIRED=false
POLYWEATHER_API_BASE_URL=http://<backend-host>:8000
POLYWEATHER_BACKEND_ENTITLEMENT_TOKEN=
# WalletConnect(支持手机钱包扫码)
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=
NEXT_PUBLIC_WALLETCONNECT_POLYGON_RPC_URL=https://polygon-bor-rpc.publicnode.com
# Overlay 跳转
NEXT_PUBLIC_TELEGRAM_GROUP_URL=https://t.me/<your_group>
4.2 后端 / Bot(.env)
POLYWEATHER_AUTH_ENABLED=true
POLYWEATHER_AUTH_REQUIRED=false
POLYWEATHER_AUTH_REQUIRE_SUBSCRIPTION=false
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_HTTP_TIMEOUT_SEC=8
POLYWEATHER_PAYMENT_ENABLED=true
POLYWEATHER_PAYMENT_CHAIN_ID=137
POLYWEATHER_PAYMENT_RPC_URL=https://polygon-bor-rpc.publicnode.com
POLYWEATHER_PAYMENT_RECEIVER_CONTRACT=0x<receiver_contract>
POLYWEATHER_PAYMENT_CONFIRMATIONS=2
POLYWEATHER_PAYMENT_INTENT_TTL_SEC=1800
POLYWEATHER_PAYMENT_WALLET_CHALLENGE_TTL_SEC=600
POLYWEATHER_PAYMENT_POLL_INTERVAL_SEC=4
POLYWEATHER_PAYMENT_MAX_WAIT_SEC=50
# 支持双币种(示例)
POLYWEATHER_PAYMENT_ACCEPTED_TOKENS_JSON=[{"code":"usdc_e","symbol":"USDC.e","name":"USDC.e (PoS)","address":"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174","decimals":6,"receiver_contract":"0x<receiver>","is_default":true},{"code":"usdc","symbol":"USDC","name":"Native USDC","address":"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359","decimals":6,"receiver_contract":"0x<receiver>"}]
# 套餐(当前只保留月付)
POLYWEATHER_PAYMENT_PLAN_CATALOG_JSON={"pro_monthly":{"plan_id":101,"amount_usdc":"5","duration_days":30}}
POLYWEATHER_PAYMENT_ALLOWED_PLAN_CODES=pro_monthly
# 积分抵扣
POLYWEATHER_PAYMENT_POINTS_ENABLED=true
POLYWEATHER_PAYMENT_POINTS_PER_USDC=500
POLYWEATHER_PAYMENT_POINTS_MAX_DISCOUNT_USDC=3
# 支付自动补单
POLYWEATHER_PAYMENT_EVENT_LOOP_ENABLED=true
POLYWEATHER_PAYMENT_CONFIRM_LOOP_ENABLED=true
5. 验证步骤
- 登录后请求
/api/auth/me,确认authenticated=true。 - 请求
/api/payments/config,确认enabled=true、configured=true。 - 钱包绑定:
POST /api/payments/wallets/challengePOST /api/payments/wallets/verify
- 支付流程:
POST /api/payments/intents- 发链上交易
POST /api/payments/intents/{id}/submitPOST /api/payments/intents/{id}/confirm
- 若前端显示 pending,轮询:
GET /api/payments/intents/{id}
- 确认订阅:
/api/auth/me返回subscription_active=true。