用 Telegram 星币打造支付机器人——无需个人身份或护照信息
开发者可在 Telegram 中接收捐赠并销售数字商品,无需注册个体工商户(IP)或提供护照信息。通过使用 Telegram 星币作为支付货币,机器人可自动生成账单并处理付款。系统基于 Python、aiogram 3、SQLite 数据库存储以及 aiohttp 实现 Mini App API。任何 Telegram 用户均可即时创建商品并生成付款链接。
系统架构
aiogram 3 机器人与 SQLite 数据库交互,存储商品、卖家及付款链接信息。独立的 aiohttp API 通过以下端点为 Mini App 提供服务:
/api/products—— 商品目录/api/donate—— 捐赠按钮数据/api/create_invoice—— 账单生成
所有支付逻辑均在机器人内部完成:Mini App 通过 API 获取数据,机器人生成账单,并通过 successful_payment 事件确认支付成功。
生成唯一付款链接
为保障安全,链接采用唯一编码如 prod_fgU7d,存于 payment_links 表中。完整 URL 为:https://t.me/System_Paybot?start=prod_fgU7d。该机制防止 ID 暴力破解,同时支持流量来源追踪。
交付内容时,机器人根据 file_id 自动识别文件类型,并采用通用发送机制:
try:
await message.answer_document(document=content, caption=thanks)
except:
try:
await message.answer_photo(photo=content, caption=thanks)
except:
# 进一步尝试视频、音频等类型
sendDocument 方法对大多数 Telegram 文件类型均稳定可靠。
处理星币支付
账单通过 create_invoice_link 方法创建,参数如下:
invoice_link = await bot.create_invoice_link(
title=title,
description=f"购买: {title}",
payload=f"pay_{product_id}_{user_id}",
provider_token="",
currency="XTR",
prices=[{"label": title, "amount": amount}]
)
Telegram 完成支付后,会推送 successful_payment 更新,并携带 payload 以识别商品,进而向用户交付内容。
管理员功能与数据分析
管理员可使用以下命令:
/admin_stats—— 总体统计数据/admin_users—— 最近用户列表/admin_broadcast—— 群发消息/admin_ban//admin_unban—— 权限控制
卖家可通过 /stats 查看个人分析数据。
部署常见问题排查
星币限制
星币直接归属机器人拥有者,无法转给他人。解决方案:代码开源,任何人都可部署自己的机器人。
Mini App 的 HTTPS 要求
Mini App 必须使用 HTTPS。当 443 端口被占用(如 Xray VPN 占用)时,可使用 Nginx 在 8443 端口搭建子域名:
- 子域名:
shop.system-dev.ru - 使用 Certbot 获取 SSL 证书
- 在 iptables 中开放 8443 端口
- BotFather 设置地址:
https://shop.system-dev.ru:8443
将 /var/www/systempay 目录权限设为 chmod 755,并赋予 www-data 用户访问权限。
API 的 CORS 问题
在 aiohttp 中添加中间件:
@web.middleware
async def cors_middleware(request, handler):
response = await handler(request)
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type'
return response
最终功能亮点
该机器人支持:
- 上传任意类型文件或分享链接
- 任意金额的捐赠
- 带商品目录的响应式 Mini App 界面
- 个人数据分析仪表盘
- 管理员后台面板
即刻可用,轻松实现 Telegram 内自动销售。
核心要点
- 唯一链接编码确保安全且支持流量分析,无需猜测 ID。
- 通过
sendDocument及备用方案实现跨格式通用文件分发,兼容所有 Telegram 类型。 - 星币集成简单,但资金归机器人拥有者所有——开源设计支持自行托管。
- 非标准端口 HTTPS 问题可通过 Nginx + Certbot 解决,不与 VPN 冲突。
- aiohttp 中的 CORS 中间件有效解决 Mini App 的跨域请求问题。
— Editorial Team
暂无评论。