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.1.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.1-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qpay_client-2.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 eb4011071ea25bf69e1ed5db1722036be9c821bca78ff1abbbcd906996c55ce5
MD5 099608caae07bab9dde2a6c7cdf024fb
BLAKE2b-256 7e9c22d1abfee697c1250c0b4fa5174abc743ac6da014da093f54cf664a04ffa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qpay_client-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 23.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d4f02c3b8855fb36c008c9ec3046fdb895efa990a8d76fbb265f4960f2003b6a
MD5 9415ad9bde428503b0d44d05d57842fe
BLAKE2b-256 b47c89bbb840bb45b634e2c6ad84c0d5da71e970108c4fc25427a52729f2bbca

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