شارژ كيف پول
متال استفاده از پي اكسا براي شارڑ كيف پول - پايتون/فلسك
دانلود ثبت شده
51
آخرین بروزرسانی
2026-09-25
حجم بسته
12.3 KB
منتشرکننده
مدیر ارشد سامانه
وضعیت نمایش
عمومی و فعال
در این صفحه بسته های آماده برای اتصال به سرویس پرداخت، افزونه های کمکی و مثال های اجرایی را مثل یک ریپازیتوری مرور می کنید: فایل ها را می بینید، README را می خوانید و کل بسته را با یک دانلود می گیرید.
CONTROLLED RELEASE
انتشار کنترل شده از پنل رسمی
هر بسته از مسیر مدیریتی رسمی پی اکسا منتشر می شود و قبل از دانلود، اطلاعات کلیدی آن به صورت شفاف نمایش داده می شود.
PRE-DOWNLOAD VISIBILITY
شفافیت محتوا پیش از دریافت
پیش نمایش README، مرور ساختار فایل و نمایش متادیتای بسته کمک می کند قبل از دانلود، ارزیابی دقیق تری از محتوا داشته باشید.
TRUST PROFILE
نمای رسمی تر برای انتخاب ابزار
صفحه بر پایه شفافیت انتشار، نمایش منبع README، تاریخ بروزرسانی و آمار دانلود چیده شده تا حس ارزیابی حرفه ای تری منتقل کند.
مرجع حقوقی و هویتی کنار دسترس
ساختار صفحه طوری چیده شده که اطلاعات انتشار، محتوای فایل ها و جزئیات هر بسته بدون شلوغی اضافه در دسترس باشند.
متال استفاده از پي اكسا براي شارڑ كيف پول - پايتون/فلسك
دانلود ثبت شده
51
آخرین بروزرسانی
2026-09-25
حجم بسته
12.3 KB
منتشرکننده
مدیر ارشد سامانه
وضعیت نمایش
عمومی و فعال
پوشه جاری را انتخاب کنید یا برای فایل های متنی پیش نمایش بگیرید.
| نام | نوع | اندازه |
|---|---|---|
| app | پوشه | - |
| .env.example | دانلودی | 1.7 KB |
| README.md | قابل پیش نمایش | 5.8 KB |
| requirements.txt | قابل پیش نمایش | 0.1 KB |
| run.py | قابل پیش نمایش | 0.1 KB |
README.md
# Payexa Wallet Demo (Flask)
An example Flask project for wallet top-up using Payexa payment gateway.
This demo covers the complete server-side payment flow:
1. Create top-up order in local database
2. Request payment from Payexa (`/v1/payment/request`)
3. Redirect user to Payexa start pay page
4. Receive callback in your app
5. Verify payment with Payexa (`/v1/payment/verify`)
6. Credit wallet only on successful verify (idempotent)
## Features
- Flask + SQLAlchemy (SQLite)
- Wallet and top-up order models
- Full order lifecycle statuses
- Server-side verify before crediting balance
- Idempotent crediting using `credited` flag
- Stores callback payload and verify response for debugging
## Project Structure
- `run.py`: app entrypoint
- `app/__init__.py`: app factory and config loading
- `app/models.py`: database models
- `app/payment_gateway.py`: Payexa HTTP client
- `app/routes.py`: web routes and payment flow
- `app/templates/`: UI templates
## Local Setup
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
```
Then set real values in `.env`:
- `PAYEXA_BASE_URL`: sandbox or production URL
- `PAYEXA_API_KEY`: your merchant API key
## Run
```bash
flask --app run.py --debug run
```
Open `http://127.0.0.1:5000/`.
## Environment Variables
See `.env.example` for all options.
Important keys:
- `PAYEXA_BASE_URL=https://sandbox.pexn.ir` (production: `https://pay.pexn.ir`)
- `PAYEXA_STARTPAY_PATH=/startPay`
- `PAYEXA_REQUEST_ENDPOINT=/v1/payment/request`
- `PAYEXA_VERIFY_ENDPOINT=/v1/payment/verify`
- `PAYEXA_CALLBACK_PATH=/payments/callback`
- `PAYEXA_BADGE_SCRIPT_URL=https://pexn.ir/merchant-badge.js?token=...` (template already renders the required badge `<div>`)
## Publish Checklist
Before publishing this project as an example on your website or GitHub:
1. Do not commit `.env` or any real API key.
2. Keep only placeholder values in `.env.example`.
3. Set production `PAYEXA_BASE_URL` to `https://pay.pexn.ir`.
4. Use a public HTTPS domain for callback URL.
5. Disable debug mode in production runtime.
6. Replace any localhost-only scripts (for example trust badge scripts) with public URL.
7. Use a production-grade DB (PostgreSQL/MySQL) instead of SQLite if needed.
## Payment Safety Notes
- Never credit wallet balance directly from callback status alone.
- Always verify transaction server-to-server with Payexa.
- Handle verify `200` as success and `201` as already-verified.
- Keep idempotency guard to prevent duplicate balance increase.
## License
Use this project as an educational example. Add your preferred license before public release.
---
# نسخه رسمي فارسي
## معرفي پروژه
اين پروژه يک نمونه عملي براي يکپارچه سازي درگاه پرداخت Payexa در يک وب اپليکيشن Flask است.
جريان کامل پرداخت در اين دمو:
1. ايجاد سفارش شارژ در پايگاه داده محلي
2. ارسال درخواست پرداخت به Payexa (`/v1/payment/request`)
3. هدايت کاربر به صفحه پرداخت Payexa
4. دريافت callback در اپليکيشن
5. وريفاي تراکنش با Payexa (`/v1/payment/verify`)
6. افزايش موجودي کيف پول فقط بعد از وريفاي موفق (idempotent)
## ويژگي ها
- پياده سازي با Flask و SQLAlchemy
- مدل کيف پول و سفارش شارژ
- مديريت چرخه کامل وضعيت سفارش
- اعتبارسنجي نهايي سمت سرور قبل از افزايش موجودي
- جلوگيري از افزايش تکراري موجودي با `credited`
- ذخيره payload هاي callback و verify براي تحليل و خطايابي
## ساختار پروژه
- `run.py`: نقطه شروع اجراي برنامه
- `app/__init__.py`: بارگذاري تنظيمات و ساخت اپ
- `app/models.py`: مدل هاي پايگاه داده
- `app/payment_gateway.py`: لايه ارتباط با Payexa
- `app/routes.py`: مسيرها و منطق جريان پرداخت
- `app/templates/`: قالب هاي رابط کاربري
## راه اندازي محلي
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
```
سپس مقادير واقعي را در `.env` قرار دهيد:
- `PAYEXA_BASE_URL`
- `PAYEXA_API_KEY`
نمونه تنظيمات مهم:
```dotenv
PAYEXA_BASE_URL=https://sandbox.pexn.ir
PAYEXA_API_KEY=YOUR_API_KEY
PAYEXA_STARTPAY_PATH=/startPay
PAYEXA_REQUEST_ENDPOINT=/v1/payment/request
PAYEXA_VERIFY_ENDPOINT=/v1/payment/verify
PAYEXA_CALLBACK_PATH=/payments/callback
PAYEXA_TIMEOUT_SECONDS=12
PAYEXA_BADGE_SCRIPT_URL=https://pexn.ir/merchant-badge.js?token=YOUR_BADGE_TOKEN
```
## اجرا
```bash
flask --app run.py --debug run
```
آدرس برنامه:
```text
http://127.0.0.1:5000/
```
## نکات امنيتي و عملياتي
- کليد API را فقط در سمت سرور نگه داريد.
- صرف callback را ملاک افزايش موجودي قرار ندهيد.
- افزايش موجودي فقط بعد از verify موفق انجام شود.
- براي `verify` با کد `201`، افزايش موجودي مجدد انجام ندهيد.
## چک ليست انتشار عمومي
1. فايل `.env` و کليدهاي واقعي را commit نکنيد.
2. در `.env.example` فقط مقادير نمونه نگه داريد.
3. در محيط production از `PAYEXA_BASE_URL=https://pay.pexn.ir` استفاده کنيد.
4. آدرس callback را روي دامنه عمومي HTTPS تنظيم کنيد.
5. حالت debug را در production خاموش کنيد.
6. اسکریپت هاي وابسته به `localhost` (مثل badge) را با URL عمومي جايگزين کنيد.
7. در انتشار واقعي، به جاي SQLite از PostgreSQL/MySQL استفاده کنيد.
منبع: README.md
An example Flask project for wallet top-up using Payexa payment gateway.
This demo covers the complete server-side payment flow:
/v1/payment/request)/v1/payment/verify)credited flagrun.py: app entrypointapp/__init__.py: app factory and config loadingapp/models.py: database modelsapp/payment_gateway.py: Payexa HTTP clientapp/routes.py: web routes and payment flowapp/templates/: UI templatespython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
Then set real values in .env:
PAYEXA_BASE_URL: sandbox or production URLPAYEXA_API_KEY: your merchant API keyflask --app run.py --debug run
Open http://127.0.0.1:5000/.
See .env.example for all options.
Important keys:
PAYEXA_BASE_URL=https://sandbox.pexn.ir (production: https://pay.pexn.ir)PAYEXA_STARTPAY_PATH=/startPayPAYEXA_REQUEST_ENDPOINT=/v1/payment/requestPAYEXA_VERIFY_ENDPOINT=/v1/payment/verifyPAYEXA_CALLBACK_PATH=/payments/callbackPAYEXA_BADGE_SCRIPT_URL=https://pexn.ir/merchant-badge.js?token=... (template already renders the required badge <div>)Before publishing this project as an example on your website or GitHub:
.env or any real API key..env.example.PAYEXA_BASE_URL to https://pay.pexn.ir.200 as success and 201 as already-verified.Use this project as an educational example. Add your preferred license before public release.
اين پروژه يک نمونه عملي براي يکپارچه سازي درگاه پرداخت Payexa در يک وب اپليکيشن Flask است.
جريان کامل پرداخت در اين دمو:
/v1/payment/request)/v1/payment/verify)creditedrun.py: نقطه شروع اجراي برنامهapp/__init__.py: بارگذاري تنظيمات و ساخت اپapp/models.py: مدل هاي پايگاه دادهapp/payment_gateway.py: لايه ارتباط با Payexaapp/routes.py: مسيرها و منطق جريان پرداختapp/templates/: قالب هاي رابط کاربريpython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
سپس مقادير واقعي را در .env قرار دهيد:
PAYEXA_BASE_URLPAYEXA_API_KEYنمونه تنظيمات مهم:
PAYEXA_BASE_URL=https://sandbox.pexn.ir
PAYEXA_API_KEY=YOUR_API_KEY
PAYEXA_STARTPAY_PATH=/startPay
PAYEXA_REQUEST_ENDPOINT=/v1/payment/request
PAYEXA_VERIFY_ENDPOINT=/v1/payment/verify
PAYEXA_CALLBACK_PATH=/payments/callback
PAYEXA_TIMEOUT_SECONDS=12
PAYEXA_BADGE_SCRIPT_URL=https://pexn.ir/merchant-badge.js?token=YOUR_BADGE_TOKEN
flask --app run.py --debug run
آدرس برنامه:
http://127.0.0.1:5000/
verify با کد 201، افزايش موجودي مجدد انجام ندهيد..env و کليدهاي واقعي را commit نکنيد..env.example فقط مقادير نمونه نگه داريد.PAYEXA_BASE_URL=https://pay.pexn.ir استفاده کنيد.localhost (مثل badge) را با URL عمومي جايگزين کنيد.من دستیار پی اکسا هستم، شما را در تمام مسیر راهنمایی میکنم و اگر به من نیازی ندارید با ۲ بار کلیک خاموش میشوم.