Security News
Introducing the Socket Python SDK
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
A Python library for generating payment transactions compliant with the Bakong KHQR standard. (Unofficial NBC Library)
A Python library for generating payment transactions compliant with the Bakong KHQR standard.
pip3 install bakong-khqr
The bakong-khqr package provides the KHQR class for generating QR code, Deeplink, Check Payment transaction for Bakong KHQR.
You can import the KHQR class from the package as follows:
from bakong_khqr import KHQR
To generate QR code data for a transaction, create an instance of the KHQR() class with Bakong Token and call the:
Example:
from bakong_khqr import KHQR
# Create an instance of KHQR with Bakong Developer Token
khqr = KHQR("eyJhbGciOiJIUzI1NiIsI...nMhgG87BWeDg9Lu-_CKe1SMqC0")
# Generate QR code data for a transaction
qr = khqr.create_qr(
bank_account='your_name@wing', # Check your address under Bakong profile (Mobile App)
merchant_name='Your Name',
merchant_city='Phnom Penh',
amount=9800, #9800 Riel
currency='KHR', # USD or KHR
store_label='MShop',
phone_number='85512345678',
bill_number='TRX019283775',
terminal_label='Buy 1A_Level_Book'
)
print(qr)
# String Result: 00020101021229180014your_name@wing520459995802KH5909Your Name6010Phnom Penh991700131724927295157541100000009800530311662610112TRX0192837750211855123456780305MShop0717Buy 1A_Level_Book63041087
# Generate Deeplink
deeplink = khqr.generate_deeplink(
qr,
callback="https://your_website.com/shop/details?q=ABC", # Or your app's custom scheme (e.g., mshop://purchase/39482)
appIconUrl="https://your_website.com/images/logo.png", # Your logo image .png or .svg
appName="MyAppName" # (e.g., MSHOP)
)
print(deeplink)
# String Result: https://bakong.page.link/CgXb....ks6az9a38
# Get Hash MD5
md5 = khqr.generate_md5(qr)
print(md5)
# String Result: dfcabf4598d1c405a75540a3d4ca099d
# Check Transaction paid or unpaid
payment_status = khqr.check_payment(md5)
print(payment_status)
# String Result: "UNPAID"
# Indicates that this transaction has not yet been paid.
# Check Bulk Transactions
md5_list = [
"dfcabf4598d1c405a75540a3d4ca099d",
"5154e4f795634ff1a0ae4b48e53a6d9c",
"a57d9bb85f52f12a20cf7beecb03d11d",
"495fdaec0be5d94c89bc1283c7283d3d",
"31bca02094ad576588e42b60db57bc98"
]
bulk_payments_status = khqr.check_bulk_payments(md5_list)
print(bulk_payments_status)
# List Result: ["5154e4f795634ff1a0ae4b48e53a6d9c", "495fdaec0be5d94c89bc1283c7283d3d"]
# Returns a list containing only the MD5 hashes that correspond to successful (paid) transactions.
create_qr()
Methodbank_account
: The bank account associated with the transaction.merchant_name
: Name of the merchant.merchant_city
: City where the merchant is located.amount
: Amount to be transacted.currency
: Currency of the transaction (e.g., 'USD', 'KHR').store_label
: Label or name of the store.phone_number
: Contact phone number.bill_number
: Reference number for the bill.terminal_label
: Label for the terminal.generate_deeplink()
Methodqr
: Valid QR Code data as string that generate from create_qr() method.callback
: Deeplink URL for opening your app after payment is completed.appIconUrl
: Your App Icon URL.appName
: Your App Name.generate_md5()
Methodqr
: Valid QR Code data as string that generate from create_qr() method.check_payment()
Methodmd5
: Valid hash md5 from generate_md5() method of the correct transaction.check_bulk_payments()
Methodmd5_list
: md5 list of all transacrions generate from generate_md5() method.KHQR SDK Documentation: https://bakong.nbc.gov.kh/download/KHQR/integration/KHQR%20SDK%20Document.pdf
Development API: https://sit-api-bakong.nbc.gov.kh/
Production API: https://api-bakong.nbc.gov.kh/
This project is licensed under the MIT License. See the LICENSE file for details.
If you would like to contribute to this project, please fork the repository and submit a pull request.
For any questions or feedback, you can contact ME or Buy Me A Coffee ☕️ ABA: 000510062
FAQs
A Python library for generating payment transactions compliant with the Bakong KHQR standard. (Unofficial NBC Library)
We found that bakong-khqr demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.
Security News
A new Rust RFC proposes "Trusted Publishing" for Crates.io, introducing short-lived access tokens via OIDC to improve security and reduce risks associated with long-lived API tokens.