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.0.tar.gz (17.9 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.0-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qpay_client-2.0.0.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","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.0.tar.gz
Algorithm Hash digest
SHA256 c3d424506fd1c06299a1ffa93cfccd2dc64b3931ab5ad729337b2c00ef82c2dd
MD5 97a0c01cfcc897f27ba7a5b2d0e75ecc
BLAKE2b-256 af3a0a2eb91f836d7f78da25573a740fc55b32eb8c901b486103d078cb4bda0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qpay_client-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d585b57d3534e04747a0f0df604bbed9fd53693f9a386fb7d62f555e332e567f
MD5 a1b2daaa862e7a702634b2a3b62de56d
BLAKE2b-256 785a47e2d11f2697017baef499f213ef22e64c86d6f185a7baea9f7e9f7c33c4

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