نمونه کد پایتون
کیت پایتون فینوپال برای اتصال درگاه در پروژههای سمت سرور است. مبلغها به ریال و حداقل ۱۰۰۰ ریال هستند.
نصب
پیشنیاز: Python نسخه ۳.۹ یا بالاتر و pip.
تا زمان انتشار روی PyPI، بسته را از مسیر محلی نصب کنید. بعد از انتشار:
pip install finopal-py-sdk
معادل: pip3 install finopal-py-sdk
پیکربندی
مرچنتکد را از پنل کاربری بردارید. برای محیط آزمایشی sandbox را true بگذارید. میزبان واقعی https://payment.finopal.ir و سندباکس https://sandbox.finopal.ir است.
from finopal import FinoPal, Config
finopal = FinoPal(Config(
merchant_id="fino-xxxx-xxxx-xxxx-xxxx",
sandbox=False,
))
درخواست پرداخت
order_id و description الزامیاند. توضیحات حداکثر ۲۵۵ کاراکتر و شماره سفارش حداکثر ۱۰۰ کاراکتر است. کاربر را به payment_url بفرستید.
payment = finopal.payments.create({
"amount": 10000,
"callback_url": "https://shop.example/callback",
"description": "سفارش ۱۲۳۴۵",
"order_id": "ORD-12345",
"mobile": "09123456789",
"email": "customer@example.com",
})
url = payment.payment_url or finopal.payments.generate_payment_url(payment.authority)
تأیید پرداخت
فقط وقتی Status=OK است (در سندباکس Status=0) تأیید کنید. مبلغ باید همان مبلغ درخواست باشد. کد ۱۰۰ تازه تأییدشده و کد ۱۰۱ قبلاً تأییدشده است.
from finopal import parse_callback
cb = parse_callback(request.args)
if cb.is_success:
result = finopal.verifications.verify({
"amount": order_amount_rial,
"authority": cb.authority,
})
print(result.ref_id)
استعلام تراکنش
استعلام وضعیت را عوض نمیکند. اگر verify بهخاطر قطع شبکه نامعلوم ماند، بهجای ساخت پرداخت تازه استعلام بگیرید. وضعیتها: pending، successful، failed، cancelled، refunded و callback.
status = finopal.inquiries.inquire({"authority": authority})
print(status.status, status.is_paid)
ریورس تراکنش
فقط روی تراکنش تأییدشده و در بازه کوتاه پس از تأیید.
finopal.reversals.reverse({"authority": authority})
محاسبه کارمزد
fee_type برابر Merchant یعنی کارمزد روی پذیرنده و Payer یعنی روی خریدار است.
fee = finopal.fees.calculate({"amount": 1000000})
print(fee.fee, fee.fee_type)
خطا
| کلاس | معنی |
|---|---|
| ValidationError | ورودی نامعتبر؛ درخواستی ارسال نشده |
| FinoPalException | گیتوی درخواست را رد کرده و کد خطا دارد |
| TransportError | شبکه یا پاسخ نامعتبر. نتیجه نامعلوم است؛ استعلام بگیرید |
کدهای پرکاربرد: ۱۰۰ و ۱۰۱ موفق، ۹− اعتبارسنجی، ۱۱− درگاه یا تراکنش پیدا نشد، ۱۴− دامنه بازگشت با دامنه ثبتشده یکی نیست، ۵۰− مبلغ تأیید با مبلغ درخواست فرق دارد.