Хурдан эхлэл

Суулгах

qpay-client-ийг өөрийн ашиглаж буй package manager-аар суулгана.

pip install qpay-client

эсвэл

uv add qpay-client

Async клиентээр эхлэх

Асинхрон орчинд AsyncQPayClient ашиглана.

from decimal import Decimal

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

settings = QPaySettings.sandbox()
client = AsyncQPayClient(settings=settings)

async def main():
    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 клиентээр эхлэх

Синхрон скрипт, background job, cron зэрэгт QPayClient ашиглахад илүү тохиромжтой.

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)

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

payment_check endpoint нь invoice-ийн төлбөр орж ирсэн эсэхийг шалгахад түгээмэл ашиглагдана.

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("Төлбөр олдлоо")

Production тохиргоо

Production орчинд өөрийн merchant credential-ийг ашиглана.

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

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

  • QPaySettings() нь шууд default credential үүсгэдэггүй. sandbox() эсвэл production() factory ашиглана.

  • invoice_create дээр request дотор invoice_code өгөхгүй орхивол settings.invoice_code автоматаар ашиглагдана.

  • Public API endpoint-ууд auth-аа өөрсдөө шалгадаг тул request бүрийн өмнө токен гараар шинэчлэх шаардлагагүй.

  • payment_check нь тохиргооны дагуу polling хийж болох тул payment_check_retries-ийг өөрийн хэрэгцээнд тааруулж тохируулна.