Skip to main content

Python SDK for ABA PayWay payment gateway (QR, Check, Close Transaction)

Project description

ABA Payway Python SDK

A clean, dependency-free Python SDK for the ABA PayWay payment gateway.

Python 3.10+ · No third-party dependencies · Stdlib only


Image Preview

preview

Quick Start

1. Install

# No pip install needed — just copy the aba_sdk/ folder into your project.
# Or install from this repo:
pip install -e .

2. Configure

from aba_sdk import PayWayClient, PayWayConfig, Environment

config = PayWayConfig(
    merchant_id="your_merchant_id",
    api_key="your_api_key",
    env=Environment.sandbox,   # OR Environment.production
)
client = PayWayClient(config)

3. Generate a QR Code

from aba_sdk.models import QRRequest, Currency, PaymentOption
from aba_sdk.utils import encode_items, encode_url
from aba_sdk.utils.timestamp import get_req_time


request = QRRequest(
    tran_id=tran_id = f"ORDER-{get_req_time()}",
    amount=8.00,
    currency=Currency.USD,      # Supported KHR, USD
    payment_option=PaymentOption.ABAPAY_KHQR,
    first_name="Khon",
    last_name="Chanphearaa",
    email="phearaa@example.com",
    phone="012345678",

    # Optional
    items=encode_items([
        {"name": "Coffee", "quantity": 2, "price": 2.50},
        {"name": "Sandwich", "quantity": 1, "price": 3.00},
    ]),
    callback_url=encode_url("https://yoursite.com/payway/callback"),
    lifetime=6,
)

response = client.qr.generate_qr(request)

print(response.qr_string)           # Raw KHQR string
print(response.abapay_deeplink)     # Deep link for ABA Mobile
response.save_qr_image("qr.png")    # Save Base64 PNG to disk

Error Handling

from aba_sdk import PayWayAPIError, PayWayRequestError

try:
    response = client.qr.generate_qr(request)
except PayWayAPIError as e:

    # API returned an error (wrong domain, invalid hash, etc.)
    print(f"[{e.code}] {e.message}  trace={e.trace_id}")
except PayWayRequestError as e:

    # Network timeout or connection error
    print(f"Network error: {e}")

Enums Reference

Currency

Value Constant
USD Currency.USD
KHR Currency.KHR

PaymentOption

Value Constant Notes
abapay PaymentOption.ABAPAY
khqr PaymentOption.KHQR
abapay_khqr PaymentOption.ABAPAY_KHQR Most common
wechat PaymentOption.WECHAT USD only
alipay PaymentOption.ALIPAY USD only
abapay_khqr_wechat_alipay PaymentOption.ALL USD only

QRImageTemplate

TEMPLATE1, TEMPLATE1_COLOR, TEMPLATE2, TEMPLATE2_COLOR, TEMPLATE3, TEMPLATE3_COLOR


Extending the SDK

Each API group gets its own file in aba_sdk/api/ and its own models in aba_sdk/models/. Then register the new client in PayWayClient:

# aba_sdk/client.py
from .api.checkout import CheckoutClient   # new module

class PayWayClient:
    def __init__(self, config):
        self.qr = QRClient(config)
        self.checkout = CheckoutClient(config)   # add here

Scope Project Feature

  • Generate QRCode
  • Check Transaction
  • Close Transaction

Example How to Usages

Folder /examples

Run Python File

Environments

Environment Base URL
Sandbox https://checkout-sandbox.payway.com.kh
Production https://checkout.payway.com.kh

Note: Your IP/domain must be whitelisted by PayWay before production calls work. Contact paywaysales@ababank.com for production credentials.

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

aba_payway-0.1.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

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

aba_payway-0.1.0-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file aba_payway-0.1.0.tar.gz.

File metadata

  • Download URL: aba_payway-0.1.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for aba_payway-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cfb6e6d2d570149b008203e57c616c4747fff374843f3e7b39b33539bcf233ce
MD5 9d0ecdd908888c78d8367f13a3008a05
BLAKE2b-256 02c98a956134487894b095931c50d86aadc8382c7ca7efd0b22fa4eed3c25194

See more details on using hashes here.

File details

Details for the file aba_payway-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aba_payway-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for aba_payway-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69792ae9cd847a0a838561a0e2de57a1fd813a6d89558ecf8e9479fbbd2c7c4b
MD5 3c2fcd9783f69ad8a198e8380733d66e
BLAKE2b-256 4450c83eadafa96ed311ee2509c45cfb049170fc5ede6244a6b041ba7acc5077

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