درباره پروژه
قابلیتهای کلیدی
ورژن 1
شروع ساده با دستور /start
پیام خوشآمد و توضیح کوتاه میفرسته و بهت میگه چطور تست پرداخت رو انجام بدی.
پرداخت تستی با دستور /buy
/buy 50000 → کاربر میتونه مبلغ (به تومان) بده.
لینک پرداخت زرینپال (StartPay) ساخته میشه و به کاربر نشون داده میشه.
حالت Sandbox یا Production رو هم مشخص میکنه.
اتصال به درگاه زرینپال (v4 API)
درخواست پرداخت (Payment Request)
ساخت لینک پرداخت
تأیید نهایی پرداخت (Verify)
مدیریت پایگاه داده (SQLite)
جدول سادهی payments برای ذخیرهی اطلاعات هر پرداخت:
authority (شناسه تراکنش زرینپال)
chat_id (کاربر تلگرام)
مبلغ، توضیحات، وضعیت (pending, paid, failed)
ref_id (کد پیگیری موفق زرینپال)
وبهوک (Flask)
مسیر /zarinpal/callback برای بازگشت کاربر بعد از پرداخت.
وضعیت OK → تأیید و ذخیرهی ref_id و کارت کاربر.
وضعیت NOK → ثبت شکست یا لغو پرداخت.
اطلاعرسانی مستقیم به کاربر در تلگرام
اگر پرداخت موفق بود: پیام ✅ با مبلغ و ref_id.
اگر پرداخت ناموفق یا لغو بود: پیام ❌ به کاربر.
ساختار ساده و قابل توسعه
استفاده از python-telegram-bot برای ربات.
استفاده از Flask برای هندل کردن callback.
امکان ران همزمان ربات + سرور callback توی یک پروسه.
آپدیت بعد از حمایت 1.2
چیزهایی که میشه اضافه کرد
تعریف محصولها یا پلنهای مختلف (منو خرید).
سیستم کد تخفیف / کوپن.
اتصال به دیتابیس قویتر (مثلاً MySQL/Postgres).
پنل ادمین ساده برای مدیریت سفارشها.
ارسال فاکتور PDF بعد از پرداخت.
مشخصات فنی
راهنمای نصب و راهاندازی
راهاندازی سریع
پیشنیازها:
pip install python-telegram-bot==20.* Flask==3.* requests==2.* python-dotenv==1.*
تنظیم متغیرها (فایل .env کنار اسکریپت بساز):
TELEGRAM_BOT_TOKEN=توکن-بات-تلگرام
ZARINPAL_MERCHANT_ID=مرچنت-آیدی-زرینپال
PUBLIC_BASE_URL=https://آدرس-عمومی-سرور-تو (مثلاً ngrok)
ZARINPAL_USE_SANDBOX=true # یا false برای محیط واقعی
PORT=8000
اجرا:
python telegram_zarinpal_bot.py
تست در تلگرام:
به بات بزن /start
سپس /buy 50000 (مبلغ به تومان)
لینک پرداخت برات میاد؛ بعد از پرداخت، نتیجه توی همون چت ارسال میشه.