Skip to main content

QPay Integration made easy (async & sync, typed schemas, auto token refresh)

Project description

qpay-client

Tests codecov PyPI - Version Python PyPI - License PyPI - Downloads Documentation Status

qpay-client нь QPay v2 API-тай Python орчноос холбогдохыг хялбарчлах клиент сан юм. Энэ сан нь async болон sync клиент, schema validation, access token / refresh token удирдлага, retry logic, мөн түгээмэл endpoint-уудын typed wrapper-уудыг агуулдаг.

Баримт бичиг: qpay-client.readthedocs.io

QPay developer портал: developer.qpay.mn

Гол боломжууд

  • AsyncQPayClient болон QPayClient хоёуланг нь дэмжинэ
  • Authentication, token refresh-ийг дотооддоо удирдана
  • Pydantic schema ашиглан request/response-ийг шалгана
  • Network error болон серверийн түр зуурын алдаанд retry хийж чадна
  • payment_check polling-ийг тохиргоогоор удирдаж чадна
  • with болон async with context manager дэмждэг
  • QPay алдааг QPayError хэлбэрээр илүү ойлгомжтой буцаана

Суулгах

pip ашиглах:

pip install qpay-client

uv ашиглах:

uv add qpay-client

poetry ашиглах:

poetry add qpay-client

Хурдан эхлэх

Async клиент

from decimal import Decimal

from qpay_client.v2 import AsyncQPayClient, QPaySettings
from qpay_client.v2.schemas.schemas import InvoiceCreateSimpleRequest

settings = QPaySettings.sandbox()

async def main():
    async with AsyncQPayClient(settings=settings) as client:
        invoice = await client.invoice_create(
            InvoiceCreateSimpleRequest(
                sender_invoice_no="ORDER-1001",
                invoice_receiver_code="terminal",
                invoice_description="Туршилтын нэхэмжлэх",
                amount=Decimal("1500"),
                callback_url="https://example.com/qpay/callback?payment_id=ORDER-1001",
            )
        )

        print(invoice.invoice_id)
        print(invoice.qPay_shortUrl)

Sync клиент

from decimal import Decimal

from qpay_client.v2 import QPayClient, QPaySettings
from qpay_client.v2.schemas.schemas import InvoiceCreateSimpleRequest

settings = QPaySettings.sandbox()

with QPayClient(settings=settings) as client:
    invoice = client.invoice_create(
        InvoiceCreateSimpleRequest(
            sender_invoice_no="ORDER-1002",
            invoice_receiver_code="terminal",
            invoice_description="Sync туршилтын нэхэмжлэх",
            amount=Decimal("2500"),
            callback_url="https://example.com/qpay/callback?payment_id=ORDER-1002",
        )
    )

    print(invoice.invoice_id)

Тохиргоо

Sandbox

from qpay_client.v2 import QPaySettings

settings = QPaySettings.sandbox()

Production

from qpay_client.v2 import QPaySettings

settings = QPaySettings.production(
    username="your-merchant-username",
    password="your-merchant-password",
    invoice_code="YOUR_INVOICE_CODE",
)

Retry болон delay тохируулах

settings = QPaySettings.sandbox(
    client_retries=2,
    client_delay=0.25,
    client_jitter=0.1,
    payment_check_retries=8,
    payment_check_delay=0.5,
    payment_check_jitter=0.2,
)

Төлбөр шалгах жишээ

from qpay_client.v2.schemas.enums import ObjectType
from qpay_client.v2.schemas.schemas import Offset, PaymentCheckRequest

check_request = PaymentCheckRequest(
    object_type=ObjectType.invoice,
    object_id="YOUR_INVOICE_ID",
    offset=Offset(page_number=1, page_limit=100),
)

result = await client.payment_check(check_request)

if result.count > 0:
    print("Төлбөр олдлоо")

FastAPI callback урсгал

examples/quickstart.py файлд callback endpoint-тэй энгийн async жишээ бий.

Үндсэн санаа нь:

  1. Invoice үүсгэнэ
  2. invoice_id-г өөрийн storage-д хадгална
  3. QPay callback ирэх үед payment_check ашиглан төлбөрийг шалгана
  4. Амжилттай боловсруулсны дараа SUCCESS буцаана

Жишээ файлыг ажиллуулах:

fastapi dev examples/quickstart.py

QPay callback endpoint-ийн хариу амжилттай байх үед HTTP 200 болон SUCCESS буцаах нь чухал.

Импортын зөвлөмж

Клиент болон тохиргоог qpay_client.v2-оос импортлоорой:

from qpay_client.v2 import AsyncQPayClient, QPayClient, QPaySettings, QPayError

Schema болон enum-уудыг дараах модулиудаас импортлоно:

from qpay_client.v2.schemas.enums import ObjectType
from qpay_client.v2.schemas.schemas import InvoiceCreateSimpleRequest, Offset, PaymentCheckRequest

Дэмжигддэг endpoint-ууд

Authentication

  • token
  • refresh

Invoice

  • invoice_get
  • invoice_create
  • invoice_cancel

Payment

  • payment_get
  • payment_list
  • payment_check
  • payment_cancel
  • payment_refund

Ebarimt

  • ebarimt_get
  • ebarimt_create

Subscription

  • subscription_get
  • subscription_cancel

Анхаарах зүйлс

  • QPaySettings()-ийг хоосноор нь дуудахгүй. sandbox() эсвэл production() factory ашиглана.
  • Public endpoint-ууд auth-аа өөрсдөө шалгадаг тул request бүрийн өмнө токенээ гараар шинэчлэх шаардлагагүй.
  • payment_check polling хийж болох тул timeout болон retry тохиргоогоо өөрийн хэрэглээнд тааруулж сонгоно.
  • Production credential-ээ репод шууд хадгалахгүй байхыг зөвлөе.

Лиценз

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qpay_client-2.0.2.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qpay_client-2.0.2-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file qpay_client-2.0.2.tar.gz.

File metadata

  • Download URL: qpay_client-2.0.2.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for qpay_client-2.0.2.tar.gz
Algorithm Hash digest
SHA256 39945da475ab2d5395828477ed7ac6934c068effe568015877f09e8eb40b8f5e
MD5 a93af228d8043e0b22214b51f1dd0935
BLAKE2b-256 df291cd3fb99fe6941d9dab0398db9d079e1f204761fa4b9df0358c57219ddb9

See more details on using hashes here.

File details

Details for the file qpay_client-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: qpay_client-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 25.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for qpay_client-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2006b198d7e0f6e88737fa17f3ca937453339fac6aba48714c9515f03de4bf80
MD5 cf88eeb7b95fafb53d6c17d328011211
BLAKE2b-256 7275ff0286b0466a39cd25f13ca57c8d62d762b2b24290dc11488d5e4b67d044

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page