پرش به محتوای اصلی
نمونه‌کد و بات·Telegram bot sample

نمونهٔ بات فروش تلگرام شی‌پی

نمونهٔ کامل و بدون وابستگی برای فروش از داخل تلگرام. کاربر محصول را انتخاب می‌کند، بات دکمهٔ پرداخت شی‌پی را می‌فرستد و پس از بازگشت یا رسیدن وب‌هوک، پرداخت را سمت سرور و با مبلغ سفارش تأیید می‌کند و رسید را در همان چت می‌فرستد. پرداخت در انتظار بانک ناموفق حساب نمی‌شود.

  • وب‌هوک امضاشده
  • وضعیت «در انتظار» درست
  • تومان و ریال
  • حالت آزمایشی با sk_test_

این نسخه بتا است: کامل است ولی هنوز روی فروشگاه‌های واقعی کافی اجرا نشده. اول روی نسخهٔ آزمایشی سایتتان و با کلید sk_test_ امتحانش کنید و هر اشکالی دیدید به پشتیبانی بگویید.

نصب

  1. ۱

    zip را روی سروری با Node.js 18 یا بالاتر باز کنید.

  2. ۲

    از BotFather در تلگرام یک بات بسازید و توکن را بگیرید.

  3. ۳

    فایل .env.example را به .env کپی کنید و توکن بات، کلید شی‌پی (برای آزمایش sk_test_) و PUBLIC_URL را بنویسید. PUBLIC_URL باید روی دامنهٔ تأییدشدهٔ درگاه باشد.

  4. ۴

    در پنل شی‌پی › وب‌هوک‌ها آدرس PUBLIC_URL/webhook را ثبت و رمز آن را در SHEYPAY_WEBHOOK_SECRET بگذارید.

  5. ۵

    بات را اجرا کنید: node --env-file=.env bot.mjs

  • این یک نمونه‌کد است؛ پیش از استفادهٔ واقعی، ذخیرهٔ سفارش را به پایگاه دادهٔ خودتان منتقل کنید.

تنظیمات

TELEGRAM_BOT_TOKEN
توکن بات از BotFather.
SHEYPAY_KEY
کلید API شی‌پی؛ sk_test_ برای آزمایش.
PUBLIC_URL
آدرس HTTPS همین سرور؛ صفحهٔ بازگشت /return و وب‌هوک /webhook روی آن است.
SHEYPAY_WEBHOOK_SECRET
رمز امضای وب‌هوک از پنل شی‌پی.
PRODUCTS
فهرست محصولات و قیمت‌ها (تومان) در ابتدای bot.mjs.

تست در محیط آزمایشی

با کلید sk_test_ پول واقعی جابه‌جا نمی‌شود و در صفحهٔ بانک آزمایشی نتیجه را خودتان انتخاب می‌کنید.

  • با کلید sk_test_ بات را اجرا کنید و در تلگرام /buy را بزنید.
  • در بانک آزمایشی «پرداخت موفق» را انتخاب کنید؛ رسید با کد پیگیری باید در چت بیاید.
  • یک بار «ناموفق» و یک بار «در انتظار» را هم امتحان کنید و با /orders وضعیت را ببینید.

مشکلات رایج

بات به پیام‌ها جواب نمی‌دهد.

توکن را بررسی کنید و مطمئن شوید برای این بات وب‌هوک تلگرام تنظیم نشده است (این نمونه از long polling استفاده می‌کند).

خطای callback_domain_mismatch هنگام خرید.

PUBLIC_URL باید روی دامنهٔ تأییدشدهٔ درگاه شی‌پی باشد.

رسید فقط وقتی کاربر به صفحهٔ بازگشت برسد می‌آید.

وب‌هوک را در پنل شی‌پی ثبت کنید تا پرداخت‌هایی که کاربرشان برنمی‌گردد هم تکمیل شوند.

تغییرات

  1. نسخهٔ ۱.۰.۰

    • نسخهٔ اول: فهرست محصولات، دکمهٔ پرداخت، تأیید سمت سرور، وب‌هوک و رسید در چت.

ماژول‌های دیگر در «نمونه‌کد و بات»

همهٔ ماژول‌ها

اولین رسیدتان را امروز صادر کنید

ثبت‌نام با شمارهٔ موبایل انجام می‌شود و تا تأیید مدارک، همه‌چیز را در محیط آزمایشی امتحان می‌کنید.

هزینهٔ ثبت‌نامندارد
کارمزدفقط تراکنش موفق