کاربر هیچوقت از ربات خارج نمیشود و به صفحه دیگری هدایت نمیشود. شماره کارت، نام صاحب کارت، مبلغ یکتا و
مهلت پرداخت را همانجا در چت نشان میدهید و بعد از واریز، با یک استعلام ساده سفارش را نهایی میکنید.
بدون ریدایرکتنمایش کارت در همان چتاستعلام خودکار یا دکمه دستیRequest → Info → Status → Verify
Quick Start
یک درخواست پرداخت بسازید، اطلاعات کارت را بگیرید و در پیام ربات نشان دهید.
Operational Rule
status فقط برای نمایش وضعیت است؛ سفارش را فقط بعد از verify موفق نهایی کنید.
Production Safety
قبل از هر استعلام، مهلت (expire_at) را خودتان چک کنید تا سفارشهای رهاشده تا ابد استعلام نشوند.
AUTH HEADER
X-API-KEY
فقط برای ساخت درخواست و verify لازم است؛ استعلام وضعیت و اطلاعات نیاز به کلید ندارند.
FINALIZATION
Status → Verify
وقتی status برابر SUCCESS شد، verify بزنید تا سفارش برای شما هم نهایی (merchant_verified) شود.
1) نمای کلی جریان در ربات تلگرام
کل ماجرا همین ۶ قدم است؛ بقیه صفحه همینها را با نمونه کد باز میکند.
01
ساخت درخواست پرداخت
وقتی کاربر مبلغ را انتخاب کرد، payment/request را بزنید.
02
دریافت اطلاعات کامل کارت
بلافاصله با همان authority، payment/info را بزنید تا نام صاحب کارت را هم داشته باشید.
03
نمایش در چت
شماره کارت، نام صاحب کارت، مبلغ یکتا و مهلت پرداخت را در همان پیام ربات نشان دهید.
04
صبر تا مهلت، با دو ابزار استعلام
در بازه مهلت، یا خودتان دورهای استعلام میگیرید (خودکار) یا منتظر کلیک کاربر روی «پرداخت کردم» میمانید (دستی).
05
تشخیص واریز
هر وقت payment/status برابر SUCCESS شد، یعنی پول نشسته.
06
Verify و نهاییسازی سفارش
با payment/verify نهایی کنید و فقط بعد از آن سفارش/محصول را در ربات تحویل بدهید.
2) ساخت درخواست پرداخت و دریافت اطلاعات کارت
POST
اول درخواست پرداخت را میسازید. پاسخ این مرحله شماره کارت (ماسکشده)، مبلغ یکتا و مهلت را دارد اما
نام صاحب کارت را ندارد — برای آن باید بلافاصله یک درخواست دوم به payment/info بزنید.
https://pay.pexn.ir/v1/payment/request
فیلد درخواست
نوع
الزام
توضیح
amount
number
بله
مبلغ اصلی به ریال.
callback_url
string
بله
آدرس سرور ربات شما برای اطلاع اولیه؛ برای نهاییسازی همچنان به verify نیاز دارید.
مقدار order_id را برای مرحله استعلام (status) نگه دارید و amount_unique را برای مرحله verify.
amount_unique با amount فرق دارد؛ همین رقم دقیق را باید به کاربر نشان دهید تا واریزش قابل تشخیص باشد.
3) نمایش به کاربر در همان چت
یک پیام ساده با همین ۴ فیلد کافی است؛ نمونه متن پیام ربات:
💳 شماره کارت: 603799******0010
👤 به نام: علی رضایی
💰 مبلغ دقیق واریزی: 250,170 تومان
⏳ مهلت پرداخت: تا 15:15
بعد از واریز، چند ثانیه صبر کنید و روی دکمه «پرداخت کردم، بررسی کن» بزنید.
همیشه amount_unique را نشان دهید، نه مبلغ اصلی درخواستی؛ این رقم یکتا همان چیزی است که سیستم برای تطبیق واریز استفاده میکند.
expire_at را بهصورت شمارش معکوس یا ساعت پایان نشان دهید تا کاربر بداند چقدر وقت دارد.
4) استعلام خودکار
GET
اگر میخواهید ربات خودش زیر پوست دورهای چک کند، همین endpoint را هر ۱۰ تا ۱۵ ثانیه یکبار صدا بزنید — نیازی به کلید API ندارد.
قبل از هر بار صدا زدن status، اول expire_at را که خودتان ذخیره کردهاید با ساعت فعلی مقایسه کنید. اگر گذشته، دیگر درخواست نزنید و سفارش را خودتان expired علامت بزنید — وگرنه سفارشهای رهاشده تا ابد به سرور PAYEXA درخواست میفرستند.
وقتی status برابر SUCCESS شد، فوراً به مرحله ۶ (verify) بروید. تا زمانی که verify نکردهاید سفارش را نهایی نکنید.
اگر status برابر EXPIRED شد، به کاربر اطلاع دهید و امکان ساخت درخواست جدید (مرحله ۲) را بدهید.
5) استعلام دستی — دکمه «پرداخت کردم، بررسی کن»
GET
این روش وقتی مفید است که نمیخواهید ربات مدام در پسزمینه poll کند و ترجیح میدهید خود کاربر با یک دکمه استعلام را شروع کند.
۱
به کاربر بگویید صبر کند
در همان پیام مرحله ۳ تصریح کنید: «بعد از واریز چند ثانیه صبر کنید، بعد دکمه را بزنید» — ثبت واریز روی سرور بانک/PAYEXA لحظهای نیست.
۲
با کلیک دکمه، یک بار status را صدا بزنید
همان https://pay.pexn.ir/v1/payment/status?order_id={order_id} مرحله قبل، ولی فقط یکبار و درست وقتی کاربر دکمه را زد.
۳
بر اساس نتیجه پاسخ بدهید
PENDING → «هنوز ثبت نشده، چند ثانیه دیگر دوباره بزن».
SUCCESS → برو به مرحله ۶ (verify).
EXPIRED → «مهلت تمام شد، دوباره سفارش بده».
روی این دکمه یک محدودیت ساده بگذارید (مثلاً هر چند ثانیه یکبار قابل کلیک باشد) تا کاربر با کلیک پشتسرهم سرور را درگیر نکند.
استعلام خودکار و دکمه دستی با هم تناقضی ندارند؛ میتوانید هر دو را همزمان فعال نگه دارید — هرکدام زودتر SUCCESS را دید، جریان verify را شروع میکند.
6) نهاییسازی سفارش با Verify
POST
همین که status برابر SUCCESS شد (چه از مسیر خودکار، چه از دکمه دستی)، این endpoint را بزنید. این تنها جایی است که سفارش رسماً برای شما هم verify میشود.
https://pay.pexn.ir/v1/payment/verify
فیلد
نوع
توضیح
order_id
string
همان order_id دریافتی در مرحله ۲.
token
string
دقیقاً همان مقدار amount_unique مرحله ۲ (بهصورت رشته). چیز دیگری اینجا لازم نیست تولید کنید.