홈으로 돌아가기

IP 없이 Telegram Stars 결제 봇

이 기사는 등록 없이 Stars를 통한 Telegram 봇 결제 생성 방법을 설명합니다. aiogram 3, SQLite, Mini App용 aiohttp 사용. 고유 링크, 파일 처리, HTTPS 및 CORS 배포를 다룹니다.

Stars 봇: 등록 없이 Telegram 결제
Advertisement 728x90

텔레그램 스타즈로 결제봇 만들기 — IP나 신분증 없이도 가능

개발자들은 개인사업자(IP) 등록이나 여권 정보 제공 없이도 텔레그램에서 기부금을 받거나 디지털 상품을 판매할 수 있습니다. 텔레그램 스타즈를 통화로 활용하면 봇이 자동으로 송장 생성 및 결제 처리를 수행합니다. 시스템은 Python과 aiogram 3, 데이터 저장용 SQLite, 미니앱 API용 aiohttp를 사용하며, 누구나 텔레그램 사용자로서 즉시 제품을 만들고 결제 링크를 생성할 수 있습니다.

시스템 아키텍처

aiogram 3 봇은 제품, 판매자, 결제 링크를 저장하는 SQLite 데이터베이스와 상호작용합니다. 별도의 aiohttp API는 다음과 같은 엔드포인트를 통해 미니앱을 제공합니다:

  • /api/products — 제품 카탈로그
  • /api/donate — 기부 버튼 데이터
  • /api/create_invoice — 송장 생성

결제 로직은 봇 내부에서 완전히 처리됩니다: 미니앱은 API를 통해 데이터를 가져오고, 봇은 송장을 생성하며, successful_payment 이벤트를 통해 결제 성공 여부를 확인합니다.

Google AdInline article slot

고유 결제 링크 생성

보안을 위해 링크는 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 메서드는 대부분의 텔레그램 파일 형식에서 안정적으로 작동합니다.

Google AdInline article slot

스타즈 결제 처리

송장은 다음 매개변수를 사용해 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}]
)

텔레그램이 결제를 처리하고, payload를 포함한 successful_payment 업데이트를 보내어 제품을 식별하고 사용자에게 전달합니다.

관리자 기능 및 분석

운영자는 다음 명령어에 접근할 수 있습니다:

Google AdInline article slot
  • /admin_stats — 전반적인 통계
  • /admin_users — 최근 사용자 목록
  • /admin_broadcast — 대량 메시지 발송
  • /admin_ban / /admin_unban — 접근 제어

판매자는 /stats 명령어로 개인 분석 데이터를 확인할 수 있습니다.

배포 문제 해결

스타즈 제한 사항

스타즈는 봇 소유자에게 직접 지급되며 다른 사람에게 이체할 수 없습니다. 해결책: 오픈소스 코드를 활용해 누구나 자신의 봇을 배포할 수 있습니다.

미니앱용 HTTPS

미니앱은 HTTPS가 필요합니다. 포트 443이 이미 사용 중일 경우(예: Xray VPN), Nginx를 포트 8443에 설정하고 하위 도메인을 사용하세요:

  • 하위 도메인: shop.system-dev.ru
  • SSL 인증서용 Certbot
  • iptables에서 포트 8443 열기
  • BotFather URL: 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

최종 기능 요약

봇은 다음을 지원합니다:

  • 모든 종류의 파일 업로드 또는 링크 공유
  • 원하는 금액의 기부 가능
  • 제품 카탈로그와 반응형 UI를 갖춘 미니앱
  • 개인 분석 대시보드
  • 관리자 패널

즉시 사용 가능하며, 텔레그램에서 판매를 자동화할 수 있습니다.

핵심 포인트

  • 고유 링크 코드는 ID 추측 없이 보안과 트래픽 분석을 보장합니다.
  • sendDocument와 후속 시도를 통한 유니버설 파일 전송은 모든 텔레그램 형식에서 작동합니다.
  • 스타즈 통합은 간단하지만 자금은 봇 소유자에게 집중됩니다. 오픈소스로 자체 호스팅이 가능합니다.
  • 비표준 포트에서 HTTPS는 Nginx + Certbot를 활용해 VPN과 충돌 없이 해결됩니다.
  • aiohttp의 CORS 미들웨어로 미니앱의 크로스오리진 문제를 해결할 수 있습니다.

— Editorial Team

Advertisement 728x90

다음 읽기