
Birçok VPN servisi Telegram üzerinden satış yapar: müşteri zaten sohbettedir, satın alma da orada gerçekleşmelidir. Bu rehber, hazır bir botu kendi sunucunuzda nasıl çalıştıracağınızı gösteriyor: müşteri bir paket seçer, TRC20, ERC20, BEP20, Solana, TON, Polygon veya başka bir ağda USDT ile ya da başka bir kripto parayla öder; bot da Marzban, 3x-ui veya Remnawave panelinizde kullanıcıyı oluşturur ya da süresini uzatır ve abonelik linkini aynı sohbete gönderir. Cüzdan veya blockchain node'u çalıştırmazsınız — para SnapEX Pay üye işyeri bakiyenize düşer.
Bir satış nasıl ilerler
customer → /start → taps a plan
bot → SnapEX Pay: invoice → "Pay" button
customer → pays on the SnapEX Pay page
SnapEX Pay → signed webhook → bot
bot → GET invoice from the API → paid?
bot → panel: create or extend user
bot → customer: subscription link
(Şema: müşteri /start ile paketi seçer → bot SnapEX Pay'de fatura oluşturur ve “Pay” düğmesini gösterir → müşteri SnapEX Pay sayfasında öder → SnapEX Pay bota imzalı webhook gönderir → bot faturayı API'den okur ve ödendiğini kontrol eder → panelde kullanıcıyı oluşturur veya süresini uzatır → müşteriye abonelik linkini gönderir.)
/startpaketlerinizi düğme olarak gösterir. Bir pakete her dokunulduğunda bir SnapEX Pay faturası oluşturulur ve bot bir Pay (“Öde”) düğmesiyle yanıt verir.- Müşteri ödeme sayfasında bir kripto para seçer ve öder. Fatura ödendiğinde SnapEX Pay bota imzalı bir webhook gönderir.
- Bot imzayı kontrol eder, faturayı SnapEX Pay API'sinden ister ve kullanıcıya erişimi yalnızca oradaki durum
paidise ve fatura botun oluşturduğu bir siparişe aitse verir.
VPN panelindeki kullanıcı adı tg<telegram_id> biçimindedir; böylece her Telegram hesabı tam olarak bir VPN kullanıcısına karşılık gelir.
Neler gerekli
- @BotFather'dan alınmış bir bot token'ı.
- Marzban, 3x-ui (MHSanaei) veya Remnawave (2.x ya da 3.x) panelinde yönetici erişimi. VPN paneli olmadan bot yalnızca ödeme alabilir (
PANEL_TYPE=none); erişimi kendiniz verirsiniz. - Docker Compose (veya Python 3.12) kurulu bir sunucu.
- Webhook için herkese açık bir HTTPS adresi: SnapEX Pay webhook'ları yalnızca
https://URL'lerine gönderir. - Bir SnapEX Pay üye işyeri hesabı: pay.snapex.pro adresinden kayıt olun.
Bot long polling kullanır, bu yüzden Telegram için sunucunuzda açık bir port gerekmez — yalnızca HTTPS arkasındaki webhook portuna erişilebilmelidir.
Adım 1. Botu indirin
snapexpay-telegram-vpn-bot-1.1.0.zip arşivini indirin (MIT, ücretsiz) ve ayar dosyasını oluşturun:
curl -fsSLO https://pay.snapex.pro/downloads/telegram-vpn-bot/snapexpay-telegram-vpn-bot-1.1.0.zip
unzip snapexpay-telegram-vpn-bot-1.1.0.zip
cd snapexpay-telegram-vpn-bot-1.1.0
cp .env.example .env
Tüm ayarlar .env dosyasındadır. Bot token'ını TELEGRAM_BOT_TOKEN alanına, mağazanızın adını SHOP_NAME alanına yazın — bu ad /start mesajında ve fatura açıklamasında görünür.
Adım 2. API anahtarı alın
SnapEX Pay üye işyeri panelinde Geliştiriciler sayfasını açın ve API anahtarı al düğmesine basın. Anahtar yalnızca bir kez gösterilir — hemen SNAPEX_API_KEY alanına kopyalayın. Panelde oluşturulan anahtar, botun ihtiyaç duyduğu invoices.read ve invoices.write dahil Üye işyeri API'sinin tüm yetkilerine sahiptir. Anahtarı yeniden oluşturmak eskisini anında iptal eder, bu yüzden .env dosyasını aynı anda güncelleyin.
İki ödeme ayarı daha:
SNAPEX_FEE_ON—merchant(varsayılan): müşteri tam olarak paket fiyatını öder, komisyonlar sizin alacağınız tutardan düşülür;customer: komisyonlar fiyatın üzerine eklenir. Ayrıntılar: Kripto faturada komisyonu kim öder (İngilizce).SNAPEX_EXPIRES_MINUTES— faturanın ne kadar süre ödenebilir kalacağı; varsayılan 60 dakika (1 ile 1440 arası).
Adım 3. Paketlerinizi tanımlayın
Paketler PLANS değişkenine tek satırda, virgülle ayrılarak yazılır: id:days:price_usd:traffic_bytes. 0 bayt sınırsız trafik demektir.
PLANS=week:7:2.00:0,month:30:5.00:0,quarter:90:12.00:107374182400
Burada quarter, 100 GiB trafikli 90 günlük pakettir. id düğmede görünür ("month — $5.00 / 30d"), bu yüzden kısa tutun: Latin harfleri, rakamlar, _ ve -. Fiyatlar USD cinsindendir; en düşük fatura tutarı 0,50 USD'dir.
Her sipariş kendi paketinin bir kopyasını saklar; böylece ödenmiş siparişlere dokunmadan fiyatları sonradan değiştirebilirsiniz.
Adım 4. VPN panelini bağlayın
PANEL_TYPE değerini ve VPN panelinizin erişim bilgilerini girin.
Marzban — PANEL_TYPE=marzban:
MARZBAN_URL,MARZBAN_USERNAME,MARZBAN_PASSWORD— panel adresi ve bir yönetici hesabının giriş bilgileri (ya daMARZBAN_TOKENiçinde hazır bir yönetici token'ı).MARZBAN_SUB_URL— yalnızca Marzban göreli/sub/<token>linkleri döndürüyorsa (XRAY_SUBSCRIPTION_URL_PREFIXboşsa): link için herkese açık temel adres.
3x-ui — PANEL_TYPE=3xui:
XUI_URL— ayarladıysanız web base path dahil panel adresi (https://xui.example.com:2053/secretpath).XUI_USERNAME,XUI_PASSWORD— bu hesapta iki adımlı doğrulama kapalı olmalıdır.XUI_INBOUND_ID— yeni client'ların ekleneceği inbound (vless, vmess, trojan veya shadowsocks).XUI_SUB_URL— abonelik temel adresi, örneğinhttps://xui.example.com:2096/sub. Bu ayar olmadan bot yalnızcasubIdgönderir.
Remnawave — PANEL_TYPE=remnawave:
REMNAWAVE_URLveREMNAWAVE_TOKEN— panel adresi ve API Tokens bölümünden alınan bir API token'ı.REMNAWAVE_SQUAD_UUIDS— yeni kullanıcılar için internal squad'lar, virgülle ayrılmış. Squad olmadan yeni kullanıcının hiç sunucusu olmaz.
Adım 5. Botu HTTPS arkasında başlatın
docker compose up -d --build
docker compose logs -f bot
Bot 8080 portunu dinler: SnapEX Pay için /webhook, durum kontrolleri için /health. Botu TLS'li bir ters proxy'nin (reverse proxy) arkasına koyun, örneğin Caddy:
pay-bot.example.com {
reverse_proxy 127.0.0.1:8080
}
Proxy, istek gövdesini değiştirmeden iletmelidir — imza ham gövde üzerinden hesaplanır.
Adım 6. Webhook'u ayarlayın
SnapEX Pay panelinde, Geliştiriciler sayfasında webhook URL'si olarak https://pay-bot.example.com/webhook girin ve kaydedin. “Webhook imza anahtarı” (whsec_…) yalnızca bir kez, ilk kayıttan hemen sonra gösterilir — SNAPEX_WEBHOOK_SECRET alanına kopyalayın ve botu yeniden başlatın: docker compose up -d.
SnapEX Pay panelinde hesap başına tek bir webhook URL'si vardır ve tüm olaylar ona gider. Bot yalnızca fatura olaylarını işler, diğerlerini yalnızca alındı olarak onaylar.
Bot bir bildirimi nasıl kontrol eder:
Webhook-Signatureheader'ı: gizli anahtarınızla{Webhook-Timestamp}.{ham istek gövdesi}üzerinden HMAC-SHA256; imzasız veya değiştirilmiş istekler401alır;Webhook-Timestamp, sunucu saatinden en fazla 5 dakika farklı olmalı — NTP'yi açık tutun;- faturanın kendisi, anahtarınızla SnapEX Pay API'sinden yeniden okunur: erişim yalnızca oradaki durum
paidise verilir.
O anda VPN paneli veya SnapEX Pay API'si erişilemezse bot 502 döndürür ve SnapEX Pay gönderimi yeniden dener (en fazla 5 deneme). Gönderim tekrarlansa veya aynı anda birkaç kez gelse bile fatura yalnızca bir kez işlenir. İmzalar ve yeniden denemeler hakkında daha fazlası: Kripto ödeme webhook'ları.
Adım 7. Gerçek para olmadan test satın alma
SNAPEX_ENVIRONMENT=testdeğerini girin ve yeniden başlatın:docker compose up -d.- Kendi Telegram hesabınızdan botunuza
/startgönderin ve bir pakete dokunun. - Pay düğmesine basın. SnapEX Pay sayfasında Test etiketi görünür. Herhangi bir kripto para ve ağ seçin: sayfa bir test adresi gösterir ve yaklaşık 10 saniye sonra ödeme kendiliğinden onaylanır. Hiçbir şey göndermeniz gerekmez.
- Bot "Payment received" mesajını ve abonelik linkini göndermeli, VPN panelinde de
tg<telegram id'niz>kullanıcısı görünmelidir. Görünmezsedocker compose logs -f botçıktısına ve Geliştiriciler sayfasındaki “Webhook gönderimleri” listesine bakın. SNAPEX_ENVIRONMENT=livedeğerini girin ve yeniden başlatın.
Bot test modundayken bot üzerinden satın alınan her paket için ödeme yapılmadan erişim verilir — testi kısa tutun. Ayrıntılar: Kripto ödemeleri gerçek para olmadan nasıl test edilir.
Müşteri ne görür
/start— mağazanızın adı, USDT (TRC20 / ERC20 / BEP20 / Solana / TON ve diğerleri) veya başka kripto paralarla ödeme hakkında bir satır ve paket düğmeleri.- Pakete dokunduktan sonra — paket adı, süresi (gün), fiyatı ve fatura numarası, ayrıca "Pay $5.00 with crypto" düğmesi.
- Kripto para seçimli SnapEX Pay sayfası: TRC20, ERC20, BEP20, Solana, TON, Polygon ve diğer ağlarda USDT ve SnapEX Pay'in o fatura tutarı için sunduğu diğer kripto paralar (toplam 70+).
- Ödemeden sonra — aynı sohbette "Payment received" mesajı ve abonelik linki.
PANEL_TYPE=noneise mesaj, erişimin kısa süre içinde yönetici tarafından gönderileceğini söyler.
Botun kendi mesajları İngilizcedir; yalnızca mağaza adı ve paket adları sizindir.
Geri dönen bir müşteri aynı Telegram hesabından öder ve kullanıcısının süresi mevcut bitiş tarihinden itibaren (o tarih geçtiyse şu andan itibaren) uzatılır; trafik sınırlı pakette kota sıfırdan başlar. Ayrıntılar: Kripto ile VPN aboneliği yenileme (İngilizce).
Müşteri toplam tutardan az gönderirse erişim verilmez: bot erişimi yalnızca paid durumundaki bir fatura için verir. Alınan tutar SnapEX Pay bakiyenize düşer, kalanını müşteriyle siz halledersiniz. Eksik ödemede neler olduğu: Müşteri fatura tutarından az gönderdi (İngilizce).
Bir şey çalışmazsa
- Pakete dokunduktan sonra "Payment is unavailable right now". Bot fatura oluşturamadı:
SNAPEX_API_KEYdeğerini (yanlış veya iptal edilmiş anahtar) ve logları kontrol edin. - Webhook 401 "bad webhook signature" alıyor.
SNAPEX_WEBHOOK_SECRETeşleşmiyor ya da proxy istek gövdesini değiştiriyor. Sunucu saatinin senkronize olduğunu da kontrol edin. - Müşteri ödedi ama hiçbir şey almadı. Loglarda
provision failedarayın. SnapEX Pay gönderimi yeniden denemeye devam eder; VPN paneli tekrar çalıştığında bir sonraki gönderim erişimi açar. Gönderimi SnapEX Pay panelindeki “Webhook gönderimleri” listesinden “Yeniden gönder” ile kendiniz de tekrarlayabilirsiniz. - Marzban host içermeyen bir link gönderiyor. Marzban'da
XRAY_SUBSCRIPTION_URL_PREFIXveya bottaMARZBAN_SUB_URLayarlayın. - 3x-ui: "login failed".
XUI_URL(web base path ile) ve giriş bilgilerini kontrol edin, o hesapta iki adımlı doğrulamayı kapatın. - Remnawave: kullanıcı oluşturuluyor ama abonelik boş.
REMNAWAVE_SQUAD_UUIDSdeğerine node'larınızın bulunduğu squad'ları yazın. - Botun birden fazla kopyası çalışıyor. Her
DATA_DIRiçin tek bir kopya çalıştırın: mükerrer işlem koruması tek bir süreç ve onun SQLite dosyası içinde çalışır.
Maliyet
Ödeme başına %1 komisyon, kurulum ücreti ve aylık ücret yok. Bot ücretsizdir.
Bot sayfası: Telegram VPN botu. Bunun yerine VPN panelinin kendi mağazası üzerinden mi satıyorsunuz? Şu rehbere bakın: Xboard ve V2Board'da kripto ödeme (İngilizce). VPN servisleri için genel bakış: VPN servisleri için kripto ödeme. Kayıt: pay.snapex.pro.