QPay Integration made easy (async & sync, typed schemas, auto token refresh)
Project description
qpay-client
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_checkpolling-ийг тохиргоогоор удирдаж чаднаwithболонasync withcontext 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 жишээ бий.
Үндсэн санаа нь:
- Invoice үүсгэнэ
invoice_id-г өөрийн storage-д хадгална- QPay callback ирэх үед
payment_checkашиглан төлбөрийг шалгана - Амжилттай боловсруулсны дараа
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
tokenrefresh
Invoice
invoice_getinvoice_createinvoice_cancel
Payment
payment_getpayment_listpayment_checkpayment_cancelpayment_refund
Ebarimt
ebarimt_getebarimt_create
Subscription
subscription_getsubscription_cancel
Анхаарах зүйлс
QPaySettings()-ийг хоосноор нь дуудахгүй.sandbox()эсвэлproduction()factory ашиглана.- Public endpoint-ууд auth-аа өөрсдөө шалгадаг тул request бүрийн өмнө токенээ гараар шинэчлэх шаардлагагүй.
payment_checkpolling хийж болох тул timeout болон retry тохиргоогоо өөрийн хэрэглээнд тааруулж сонгоно.- Production credential-ээ репод шууд хадгалахгүй байхыг зөвлөе.
Лиценз
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb4011071ea25bf69e1ed5db1722036be9c821bca78ff1abbbcd906996c55ce5
|
|
| MD5 |
099608caae07bab9dde2a6c7cdf024fb
|
|
| BLAKE2b-256 |
7e9c22d1abfee697c1250c0b4fa5174abc743ac6da014da093f54cf664a04ffa
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4f02c3b8855fb36c008c9ec3046fdb895efa990a8d76fbb265f4960f2003b6a
|
|
| MD5 |
9415ad9bde428503b0d44d05d57842fe
|
|
| BLAKE2b-256 |
b47c89bbb840bb45b634e2c6ad84c0d5da71e970108c4fc25427a52729f2bbca
|