forked from hesabix/arc
8.2 KiB
Executable file
8.2 KiB
Executable file
🧪 راهنمای تست صفحات بازگشت پرداخت
✅ تغییرات اعمال شده
1. Backend (API)
- ✅ تابع
get_db()اصلاح شد - اضافه شدنcommit() - ✅ HTML Templates زیبا ساخته شد:
templates/payment/base.html- قالب پایهtemplates/payment/success.html- صفحه موفقیتtemplates/payment/failed.html- صفحه خطا
- ✅ ماژول
payment_response.pyبرای تشخیص هوشمند - ✅ Callback endpoints اصلاح شد (zarinpal, parsian, bitpay)
- ✅ پارامتر
sourceبه API اضافه شد
2. Frontend (Flutter)
- ✅ Deep Link تنظیم شد برای Android
- ✅ Deep Link تنظیم شد برای iOS
- ✅ سرویس
DeepLinkHandlerساخته شد - ✅ صفحه
PaymentResultPageبرای نمایش نتیجه - ✅ مستندات کامل
DEEP_LINK_INTEGRATION.md
🧪 سناریوهای تست
تست 1: پرداخت موفق از اپ موبایل
مراحل:
- اپ را در گوشی/شبیهساز باز کنید
- به بخش "افزایش اعتبار" بروید
- مبلغ را وارد کنید (حداقل 5000 ریال)
- روی "پرداخت" کلیک کنید
- به درگاه BitPay هدایت میشوید
- پرداخت کنید (sandbox mode)
- نتیجه مورد انتظار:
- ✅ صفحه HTML زیبا با پیام موفقیت
- ✅ بعد از 2 ثانیه اپ باز میشود
- ✅ صفحه نتیجه با جزئیات تراکنش نمایش داده میشود
- ✅ تراکنش در دیتابیس commit شده
تست دستی URL:
https://hsxn.hesabix.ir/api/v1/wallet/payments/callback/bitpay?tx_id=XX&trans_id=YYY&id_get=ZZZ&source=app
تست 2: پرداخت موفق از مرورگر موبایل
مراحل:
- از مرورگر موبایل به سایت بروید
- همان مراحل تست 1
- نتیجه مورد انتظار:
- ✅ صفحه HTML موبایل-فرندلی
- ✅ دکمههای "بازگشت به داشبورد" و "باز کردن در اپ"
- ✅ در صورت کلیک "باز کردن در اپ"، اپ باز میشود
تست دستی URL:
https://hsxn.hesabix.ir/api/v1/wallet/payments/callback/bitpay?tx_id=XX&trans_id=YYY&id_get=ZZZ&source=mobile_web
تست 3: پرداخت موفق از دسکتاپ
مراحل:
- از مرورگر دسکتاپ به سایت بروید
- همان مراحل تست 1
- نتیجه مورد انتظار:
- ✅ صفحه HTML کامل با تمام جزئیات
- ✅ دکمه "بازگشت به داشبورد"
- ✅ طراحی responsive و زیبا
تست دستی URL:
https://hsxn.hesabix.ir/api/v1/wallet/payments/callback/bitpay?tx_id=XX&trans_id=YYY&id_get=ZZZ&source=desktop
یا بدون source (تشخیص خودکار):
https://hsxn.hesabix.ir/api/v1/wallet/payments/callback/bitpay?tx_id=XX&trans_id=YYY&id_get=ZZZ
تست 4: پرداخت ناموفق
مراحل:
- پرداخت را کنسل کنید یا اطلاعات اشتباه وارد کنید
- نتیجه مورد انتظار:
- ✅ صفحه HTML قرمز با آیکون ضربدر
- ✅ پیام خطا و دلیل شکست
- ✅ دکمه "تلاش مجدد"
- ✅ راهنمایی برای کاربر
تست 5: درخواست JSON (برای API Clients)
مراحل:
curl -H "Accept: application/json" \
"https://hsxn.hesabix.ir/api/v1/wallet/payments/callback/bitpay?tx_id=XX&trans_id=YYY&id_get=ZZZ"
نتیجه مورد انتظار:
{
"success": true,
"data": {
"transaction_id": 28,
"success": true,
"external_ref": "33204507",
"amount": 100000
},
"message": "TOPUP_CONFIRMED"
}
یا با پارامتر format=json:
https://hsxn.hesabix.ir/api/v1/wallet/payments/callback/bitpay?tx_id=XX&trans_id=YYY&id_get=ZZZ&format=json
تست 6: Deep Link در اپ
Android (ADB):
# موفق
adb shell am start -W -a android.intent.action.VIEW \
-d "hesabix://payment/callback?tx_id=28&status=success&amount=100000&ref=123456"
# ناموفق
adb shell am start -W -a android.intent.action.VIEW \
-d "hesabix://payment/callback?tx_id=29&status=failed&ref=123457"
iOS (Simulator):
# موفق
xcrun simctl openurl booted \
"hesabix://payment/callback?tx_id=28&status=success&amount=100000&ref=123456"
# ناموفق
xcrun simctl openurl booted \
"hesabix://payment/callback?tx_id=29&status=failed&ref=123457"
🔍 بررسی لاگها
لاگهای API:
# مشاهده لاگهای real-time
journalctl -u hesabix-api -f
# جستجوی تراکنش خاص
journalctl -u hesabix-api | grep "tx_id.*28"
# بررسی commit های موفق
journalctl -u hesabix-api | grep "create_top_up_request_completed"
بررسی تراکنش در دیتابیس:
cd /var/www/ark/hesabixAPI && source .venv/bin/activate
python3 << 'EOF'
from sqlalchemy import create_engine, text
engine = create_engine("mysql+pymysql://root:your_password@localhost:3306/hesabixpy")
with engine.connect() as conn:
result = conn.execute(text("SELECT * FROM wallet_transactions ORDER BY id DESC LIMIT 5"))
for row in result:
print(f"ID: {row.id}, Type: {row.type}, Amount: {row.amount}, Status: {row.status}")
EOF
✅ Checklist تست
- پرداخت موفق از اپ Android
- پرداخت موفق از اپ iOS
- پرداخت موفق از Chrome موبایل
- پرداخت موفق از Safari موبایل
- پرداخت موفق از دسکتاپ
- پرداخت ناموفق از اپ
- پرداخت ناموفق از مرورگر
- Deep Link باز کردن اپ در Android
- Deep Link باز کردن اپ در iOS
- درخواست JSON با Accept header
- درخواست JSON با format parameter
- تراکنش commit شدن در دیتابیس
- نمایش صحیح اطلاعات در HTML
- Responsive بودن در سایزهای مختلف
🐛 عیبیابی
مشکل 1: تراکنش commit نمیشود
علت: تابع get_db() بدون commit
راه حل: ✅ قبلاً برطرف شد
مشکل 2: اپ باز نمیشود
علایم:
- کلیک روی لینک اثری ندارد
- دیالوگ انتخاب اپ نمایش داده نمیشود
بررسی:
- AndroidManifest.xml تنظیمات را چک کنید
- Info.plist تنظیمات را چک کنید
- اپ را uninstall و مجدداً install کنید
- با ADB/Simulator تست کنید
مشکل 3: صفحه HTML نمایش داده نمیشود
علایم:
- JSON خام نمایش داده میشود
- خطای 500
بررسی:
- Template ها موجود باشند در
templates/payment/ - Jinja2 نصب باشد
- لاگهای API را بررسی کنید
مشکل 4: source تشخیص داده نمیشود
بررسی:
- پارامتر
sourceبه API ارسال میشود؟ - در extra_info تراکنش ذخیره شده؟
- User-Agent header صحیح است؟
📊 معیارهای موفقیت
✅ عملکرد:
- زمان بارگذاری صفحه HTML < 1 ثانیه
- تراکنش commit شود در کمتر از 2 ثانیه
- Deep Link اپ را باز کند در کمتر از 3 ثانیه
✅ تجربه کاربری:
- کاربر پیام واضح و دوستانه ببیند
- دکمهها قابل کلیک و واضح باشند
- انیمیشنها نرم و زیبا باشند
✅ قابلیت اطمینان:
- 100% تراکنشها در دیتابیس ذخیره شوند
- صفحه fallback همیشه کار کند
- لاگهای کامل برای debugging
🎉 تبریک!
اگر تمام تستها موفق بودند، سیستم پرداخت شما آماده است! 🚀
برای سوالات یا مشکلات، به مستندات زیر مراجعه کنید:
/var/www/ark/hesabixUI/DEEP_LINK_INTEGRATION.md/var/www/ark/hesabixAPI/templates/payment//var/www/ark/hesabixAPI/app/core/payment_response.py