# Zarinpal SDK for Python
این پکیج یک SDK برای تعامل با درگاه پرداخت زرینپال در زبان پایتون است. با استفاده از این SDK میتوانید به راحتی عملیاتهای پرداخت، تایید پرداخت، استعلام تراکنش و موارد دیگر را در پروژههای پایتون و جنگو خود پیادهسازی کنید.
## نصب
### پیشنیازها
این پکیج برای کار با پایتون 3.6 به بالا توسعه داده شده است. برای استفاده از این پکیج ابتدا باید آن را نصب کنید.
### نصب با استفاده از pip
```
pip install zarinpal-python-sdk
```
نحوه استفاده
تنظیمات اولیه
برای استفاده از SDK، ابتدا باید merchant_id (مرچنت کد) خود را از پنل زرینپال دریافت کرده و آن را برای تعامل با درگاه پرداخت تنظیم کنید. همچنین، میتوانید بین حالت آزمایشی (sandbox) و واقعی سوییچ کنید.
```
from zarinpal_python_sdk.client import ZarinpalClient
client = ZarinpalClient(merchant_id="your_merchant_id", sandbox=True)
```
درخواست پرداخت
برای شروع یک پرداخت جدید، میتوانید از متد request_payment استفاده کنید:
```
response = client.request_payment(
amount=11000, # مبلغ به ریال
description="خرید محصول تستی", # توضیحات پرداخت
callback_url="http://your-site.com/verify/", # آدرس بازگشت
mobile="09123456789", # (اختیاری) شماره موبایل خریدار
email="test@example.com" # (اختیاری) ایمیل خریدار
)
if response['Status'] == 100:
print(f"Redirect to: https://sandbox.zarinpal.com/pg/StartPay/{response['Authority']}")
else:
print(f"Error: {response['Status']}")
```
تایید پرداخت
پس از بازگشت کاربر به سایت شما، میتوانید از متد verify_payment برای تایید پرداخت استفاده کنید:
```
authority = request.GET.get('Authority')
response = client.verify_payment(authority=authority, amount=10000)
if response['Status'] == 100:
print("پرداخت با موفقیت تایید شد.")
else:
print("پرداخت ناموفق.")
```
استعلام تراکنش
برای بررسی وضعیت تراکنشها میتوانید از متد inquiry_transaction استفاده کنید:
```
response = client.inquiry_transaction(authority="YourAuthorityCode")
if response['Status'] == 100:
print("تراکنش موفق.")
else:
print(f"وضعیت تراکنش: {response['Status']}")
```
تراکنشهای تایید نشده
برای دریافت لیستی از تراکنشهای تایید نشده، از متد get_unverified_transactions استفاده کنید:
```
response = client.get_unverified_transactions()
if response['Status'] == 100:
print("تراکنشهای تایید نشده:", response['Authorities'])
else:
print("خطا در دریافت تراکنشها.")
```
ریورس تراکنش
برای لغو تراکنش، میتوانید از متد reverse_transaction استفاده کنید:
```
response = client.reverse_transaction(authority="YourAuthorityCode")
if response['Status'] == 100:
print("تراکنش با موفقیت لغو شد.")
else:
print(f"خطا: {response['Status']}")
```
استرداد وجه
برای استرداد وجه یک تراکنش، میتوانید از متد refund_transaction استفاده کنید:
```
response = client.refund_transaction(authority="YourAuthorityCode", amount=5000)
if response['Status'] == 100:
print("وجه با موفقیت استرداد شد.")
else:
print(f"خطا: {response['Status']}")
```
مدیریت خطاها
در SDK، خطاها و استثناهای مختلفی تعریف شده است که به شما کمک میکند تا بتوانید به سادگی مشکلات را مدیریت کنید. برای مثال، اگر در درخواست پرداخت خطایی رخ دهد، پیام خطا به صورت زیر نمایش داده میشود:
```
from zarinpal_python_sdk.exceptions import PaymentRequestError, NetworkError
try:
response = client.request_payment(
amount=11000,
description="خرید محصول تستی",
callback_url="http://your-site.com/verify/"
)
except PaymentRequestError as e:
print(f"خطا در درخواست پرداخت: {e}")
except NetworkError as e:
print(f"خطای شبکه: {e}")
```
ابزارها (Utilities)
پکیج دارای توابع کمکی نیز میباشد که به شما در مدیریت بهتر کد کمک میکند. به عنوان مثال:
دریافت پیام خطای مرتبط با کد وضعیت:
```
from zarinpal_python_sdk.utils import get_status_message
status_code = -10
message = get_status_message(status_code)
print(message) # خروجی: "ای پی یا مرچنت کد پذیرنده صحیح نیست."
```
بررسی فرمت ایمیل:
```
from zarinpal_python_sdk.utils import is_valid_email
email = "test@example.com"
if is_valid_email(email):
print("ایمیل معتبر است.")
else:
print("ایمیل نامعتبر است.")
```
بررسی فرمت شماره موبایل:
```
from zarinpal_python_sdk.utils import is_valid_mobile
mobile = "09123456789"
if is_valid_mobile(mobile):
print("شماره موبایل معتبر است.")
else:
print("شماره موبایل نامعتبر است.")
```
## توسعه و مشارکت
اگر میخواهید به توسعهی این SDK کمک کنید یا باگهای موجود را گزارش دهید، میتوانید به [لینک](https://github.com/MohamadHusein/zarinpal-python-sdk) مراجعه کنید و تغییرات پیشنهادی خود را از طریق Pull Request ارسال کنید.
Raw data
{
"_id": null,
"home_page": "https://github.com/MohamadHusein/zarinpal-python-sdk",
"name": "zarinpal-python-sdk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "zarinpal, payment, sdk, python",
"author": "Mohammad Hossein",
"author_email": "mohamd.qorbani383@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/83/82/318bb462fefee6fe983409b41d86e8e101f2ec74e7e0a1406ec0b387e0c0/zarinpal_python_sdk-0.2.tar.gz",
"platform": null,
"description": "# Zarinpal SDK for Python\r\n\r\n\u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c \u06cc\u06a9 SDK \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u062f\u0631\u06af\u0627\u0647 \u067e\u0631\u062f\u0627\u062e\u062a \u0632\u0631\u06cc\u0646\u200c\u067e\u0627\u0644 \u062f\u0631 \u0632\u0628\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 SDK \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a\u060c \u062a\u0627\u06cc\u06cc\u062f \u067e\u0631\u062f\u0627\u062e\u062a\u060c \u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0648 \u062c\u0646\u06af\u0648 \u062e\u0648\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.\r\n\r\n## \u0646\u0635\u0628\r\n\r\n### \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627\r\n\r\n\u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u067e\u0627\u06cc\u062a\u0648\u0646 3.6 \u0628\u0647 \u0628\u0627\u0644\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.\r\n\r\n### \u0646\u0635\u0628 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 pip\r\n\r\n```\r\npip install zarinpal-python-sdk\r\n```\r\n\r\n\r\n\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\r\n\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647\r\n\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SDK\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f merchant_id (\u0645\u0631\u0686\u0646\u062a \u06a9\u062f) \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u067e\u0646\u0644 \u0632\u0631\u06cc\u0646\u200c\u067e\u0627\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u062f\u0631\u06af\u0627\u0647 \u067e\u0631\u062f\u0627\u062e\u062a \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u06cc\u0646 \u062d\u0627\u0644\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc (sandbox) \u0648 \u0648\u0627\u0642\u0639\u06cc \u0633\u0648\u06cc\u06cc\u0686 \u06a9\u0646\u06cc\u062f.\r\n```\r\nfrom zarinpal_python_sdk.client import ZarinpalClient\r\n\r\nclient = ZarinpalClient(merchant_id=\"your_merchant_id\", sandbox=True)\r\n```\r\n\r\n\r\n\r\n\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631\u062f\u0627\u062e\u062a\r\n\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06cc\u06a9 \u067e\u0631\u062f\u0627\u062e\u062a \u062c\u062f\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f request_payment \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:\r\n\r\n```\r\nresponse = client.request_payment(\r\n amount=11000, # \u0645\u0628\u0644\u063a \u0628\u0647 \u0631\u06cc\u0627\u0644\r\n description=\"\u062e\u0631\u06cc\u062f \u0645\u062d\u0635\u0648\u0644 \u062a\u0633\u062a\u06cc\", # \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u067e\u0631\u062f\u0627\u062e\u062a\r\n callback_url=\"http://your-site.com/verify/\", # \u0622\u062f\u0631\u0633 \u0628\u0627\u0632\u06af\u0634\u062a\r\n mobile=\"09123456789\", # (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc) \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u062e\u0631\u06cc\u062f\u0627\u0631\r\n email=\"test@example.com\" # (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc) \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f\u0627\u0631\r\n)\r\n\r\nif response['Status'] == 100:\r\n print(f\"Redirect to: https://sandbox.zarinpal.com/pg/StartPay/{response['Authority']}\")\r\nelse:\r\n print(f\"Error: {response['Status']}\")\r\n```\r\n\r\n\r\n\r\n\r\n\u062a\u0627\u06cc\u06cc\u062f \u067e\u0631\u062f\u0627\u062e\u062a\r\n\u067e\u0633 \u0627\u0632 \u0628\u0627\u0632\u06af\u0634\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0633\u0627\u06cc\u062a \u0634\u0645\u0627\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f verify_payment \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u067e\u0631\u062f\u0627\u062e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:\r\n\r\n```\r\nauthority = request.GET.get('Authority')\r\nresponse = client.verify_payment(authority=authority, amount=10000)\r\n\r\nif response['Status'] == 100:\r\n print(\"\u067e\u0631\u062f\u0627\u062e\u062a \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062a\u0627\u06cc\u06cc\u062f \u0634\u062f.\")\r\nelse:\r\n print(\"\u067e\u0631\u062f\u0627\u062e\u062a \u0646\u0627\u0645\u0648\u0641\u0642.\")\r\n```\r\n\r\n\r\n\r\n\r\n\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u062a\u0631\u0627\u06a9\u0646\u0634\r\n\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f inquiry_transaction \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:\r\n\r\n```\r\nresponse = client.inquiry_transaction(authority=\"YourAuthorityCode\")\r\nif response['Status'] == 100:\r\n print(\"\u062a\u0631\u0627\u06a9\u0646\u0634 \u0645\u0648\u0641\u0642.\")\r\nelse:\r\n print(f\"\u0648\u0636\u0639\u06cc\u062a \u062a\u0631\u0627\u06a9\u0646\u0634: {response['Status']}\")\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u0646\u0634\u062f\u0647\r\n\u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u0646\u0634\u062f\u0647\u060c \u0627\u0632 \u0645\u062a\u062f get_unverified_transactions \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:\r\n\r\n```\r\nresponse = client.get_unverified_transactions()\r\nif response['Status'] == 100:\r\n print(\"\u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u0646\u0634\u062f\u0647:\", response['Authorities'])\r\nelse:\r\n print(\"\u062e\u0637\u0627 \u062f\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627.\")\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u0631\u06cc\u0648\u0631\u0633 \u062a\u0631\u0627\u06a9\u0646\u0634\r\n\u0628\u0631\u0627\u06cc \u0644\u063a\u0648 \u062a\u0631\u0627\u06a9\u0646\u0634\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f reverse_transaction \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:\r\n\r\n```\r\nresponse = client.reverse_transaction(authority=\"YourAuthorityCode\")\r\nif response['Status'] == 100:\r\n print(\"\u062a\u0631\u0627\u06a9\u0646\u0634 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0644\u063a\u0648 \u0634\u062f.\")\r\nelse:\r\n print(f\"\u062e\u0637\u0627: {response['Status']}\")\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0648\u062c\u0647\r\n\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0648\u062c\u0647 \u06cc\u06a9 \u062a\u0631\u0627\u06a9\u0646\u0634\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u062a\u062f refund_transaction \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:\r\n\r\n```\r\nresponse = client.refund_transaction(authority=\"YourAuthorityCode\", amount=5000)\r\nif response['Status'] == 100:\r\n print(\"\u0648\u062c\u0647 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0634\u062f.\")\r\nelse:\r\n print(f\"\u062e\u0637\u0627: {response['Status']}\")\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627\r\n\u062f\u0631 SDK\u060c \u062e\u0637\u0627\u0647\u0627 \u0648 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u062f\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631\u062f\u0627\u062e\u062a \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0647\u062f\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:\r\n\r\n\r\n```\r\nfrom zarinpal_python_sdk.exceptions import PaymentRequestError, NetworkError\r\n\r\ntry:\r\n response = client.request_payment(\r\n amount=11000,\r\n description=\"\u062e\u0631\u06cc\u062f \u0645\u062d\u0635\u0648\u0644 \u062a\u0633\u062a\u06cc\",\r\n callback_url=\"http://your-site.com/verify/\"\r\n )\r\nexcept PaymentRequestError as e:\r\n print(f\"\u062e\u0637\u0627 \u062f\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631\u062f\u0627\u062e\u062a: {e}\")\r\nexcept NetworkError as e:\r\n print(f\"\u062e\u0637\u0627\u06cc \u0634\u0628\u06a9\u0647: {e}\")\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u0627\u0628\u0632\u0627\u0631\u0647\u0627 (Utilities)\r\n\u067e\u06a9\u06cc\u062c \u062f\u0627\u0631\u0627\u06cc \u062a\u0648\u0627\u0628\u0639 \u06a9\u0645\u06a9\u06cc \u0646\u06cc\u0632 \u0645\u06cc\u200c\u0628\u0627\u0634\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0647\u062a\u0631 \u06a9\u062f \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644:\r\n\r\n\u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a:\r\n\r\n```\r\nfrom zarinpal_python_sdk.utils import get_status_message\r\n\r\nstatus_code = -10\r\nmessage = get_status_message(status_code)\r\nprint(message) # \u062e\u0631\u0648\u062c\u06cc: \"\u0627\u06cc \u067e\u06cc \u06cc\u0627 \u0645\u0631\u0686\u0646\u062a \u06a9\u062f \u067e\u0630\u06cc\u0631\u0646\u062f\u0647 \u0635\u062d\u06cc\u062d \u0646\u06cc\u0633\u062a.\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u0628\u0631\u0631\u0633\u06cc \u0641\u0631\u0645\u062a \u0627\u06cc\u0645\u06cc\u0644:\r\n\r\n```\r\nfrom zarinpal_python_sdk.utils import is_valid_email\r\n\r\nemail = \"test@example.com\"\r\nif is_valid_email(email):\r\n print(\"\u0627\u06cc\u0645\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.\")\r\nelse:\r\n print(\"\u0627\u06cc\u0645\u06cc\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.\")\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u0628\u0631\u0631\u0633\u06cc \u0641\u0631\u0645\u062a \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644:\r\n\r\n```\r\nfrom zarinpal_python_sdk.utils import is_valid_mobile\r\n\r\nmobile = \"09123456789\"\r\nif is_valid_mobile(mobile):\r\n print(\"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.\")\r\nelse:\r\n print(\"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.\")\r\n```\r\n\r\n\r\n\r\n\r\n## \u062a\u0648\u0633\u0639\u0647 \u0648 \u0645\u0634\u0627\u0631\u06a9\u062a\r\n\r\n\u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647 \u062a\u0648\u0633\u0639\u0647\u200c\u06cc \u0627\u06cc\u0646 SDK \u06a9\u0645\u06a9 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0628\u0627\u06af\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u06af\u0632\u0627\u0631\u0634 \u062f\u0647\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 [\u0644\u06cc\u0646\u06a9](https://github.com/MohamadHusein/zarinpal-python-sdk) \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Pull Request \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Zarinpal Payment Gateway SDK for Python",
"version": "0.2",
"project_urls": {
"Homepage": "https://github.com/MohamadHusein/zarinpal-python-sdk"
},
"split_keywords": [
"zarinpal",
" payment",
" sdk",
" python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ef2a132a87c83dde50c7d02e44ad873d8abfb3f4a74f6c68bd257c4db3589517",
"md5": "e3fcea9dcdef138e1bfccc3121a2abaa",
"sha256": "d2620b338ceac1d68cda7f2d66ed6060f35c3bcb789db0f03b2ec1e3465a562a"
},
"downloads": -1,
"filename": "zarinpal_python_sdk-0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e3fcea9dcdef138e1bfccc3121a2abaa",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 8826,
"upload_time": "2024-10-19T20:42:03",
"upload_time_iso_8601": "2024-10-19T20:42:03.644668Z",
"url": "https://files.pythonhosted.org/packages/ef/2a/132a87c83dde50c7d02e44ad873d8abfb3f4a74f6c68bd257c4db3589517/zarinpal_python_sdk-0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8382318bb462fefee6fe983409b41d86e8e101f2ec74e7e0a1406ec0b387e0c0",
"md5": "59c1cf82afe4a9be49d92e32e9a75673",
"sha256": "aa341e3b54ac8bce3934af545f7b102b08ebf030a80f7b87b3b665b21b3cb422"
},
"downloads": -1,
"filename": "zarinpal_python_sdk-0.2.tar.gz",
"has_sig": false,
"md5_digest": "59c1cf82afe4a9be49d92e32e9a75673",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 8918,
"upload_time": "2024-10-19T20:42:04",
"upload_time_iso_8601": "2024-10-19T20:42:04.870379Z",
"url": "https://files.pythonhosted.org/packages/83/82/318bb462fefee6fe983409b41d86e8e101f2ec74e7e0a1406ec0b387e0c0/zarinpal_python_sdk-0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-19 20:42:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MohamadHusein",
"github_project": "zarinpal-python-sdk",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "zarinpal-python-sdk"
}