PayU payment gateway integration for python-getpaid ecosystem.
Project description
python-getpaid-payu
PayU payment processor plugin for the python-getpaid ecosystem.
Provides a fully async HTTP client (PayUClient) and a payment processor (PayUProcessor) implementing the getpaid-core BaseProcessor interface. Communicates with PayU via their REST API v2.1 using OAuth2 authentication.
Features
- Full Payment Lifecycle: Supports prepared, locked, paid, failed, and refunded states.
- Pre-authorization: Reserve funds on customer's card (lock) and capture them later (charge).
- Refunds: Full and partial refund support via API.
- Multiple Currencies: Support for 15 currencies across Europe and beyond.
- Asynchronous: Built with
httpxfor non-blocking API communication. - Security: Robust callback signature verification (SHA-256 and MD5).
- Comprehensive API: Wraps every PayU REST API v2.1 endpoint.
Supported Currencies
The following 15 currencies are supported: BGN, CHF, CZK, DKK, EUR, GBP, HRK, HUF, NOK, PLN, RON, RUB, SEK, UAH, USD.
Installation
pip install python-getpaid-payu
Install simulator support only when you want this package to register its local
simulator plugin with python-getpaid-simulator:
pip install python-getpaid-payu[simulator]
This extra installs the simulator host and Litestar dependencies, then exposes
the payu plugin through the getpaid.simulator.providers entry point.
Simulator Plugin
When python-getpaid-payu[simulator] is installed alongside
python-getpaid-simulator, the simulator host auto-discovers the PayU plugin.
Typical local setup:
pip install python-getpaid-simulator python-getpaid-payu[simulator]
getpaid-simulator
The plugin contributes:
- PayU OAuth and order/refund simulator API routes
- PayU authorization UI at
/sim/payu/authorize/{order_id} - PayU-specific webhook signing and state transitions
Useful simulator environment variables:
SIMULATOR_PAYU_SECOND_KEYSIMULATOR_PLUGIN_FAILURE_MODE(warnorstrict)
Configuration
To use the PayU backend, register it in your getpaid configuration and provide the following settings:
| Key | Type | Default | Description |
|---|---|---|---|
pos_id |
int |
— | PayU POS (point of sale) identifier |
second_key |
str |
— | Second key (MD5) from PayU panel, used for signature verification |
oauth_id |
int |
— | OAuth client ID from PayU panel |
oauth_secret |
str |
— | OAuth client secret from PayU panel |
sandbox |
bool |
True |
Use sandbox (secure.snd.payu.com) or production (secure.payu.com) |
notify_url |
str |
None |
Notification callback URL template, e.g. https://example.com/payments/{payment_id}/notify |
continue_url |
str |
None |
Redirect URL template after payment, e.g. https://example.com/payments/{payment_id}/continue |
Example configuration:
GETPAID_BACKENDS = {
"payu": {
"pos_id": "300746",
"second_key": "b6ca15b0d1020e8094d9b5f8d163db54",
"oauth_id": "300746",
"oauth_secret": "2ee86a66e5d97e3fadc400c9f19b065d",
"notify_url": "https://your-domain.com/payments/payu/callback/",
"continue_url": "https://your-domain.com/payments/payu/success/",
"sandbox": True,
}
}
Sandbox Mode
PayU provides a sandbox environment for testing. You can use the example keys provided above for testing in PLN.
Ecosystem
python-getpaid-payu is part of the larger python-getpaid ecosystem. Use it with one of our web framework wrappers:
Requirements
- Python 3.12+
python-getpaid-core >= 3.0.0a3httpx >= 0.27.0
License
MIT
Credits
Created by Dominik Kozaczko.
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 python_getpaid_payu-3.0.0a4.tar.gz.
File metadata
- Download URL: python_getpaid_payu-3.0.0a4.tar.gz
- Upload date:
- Size: 108.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":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 |
1a9ccd347fb0486cedd50e85de52c3f57b3c823fc89322faffc176a0869f34a8
|
|
| MD5 |
aefb29c69d7cabb6c79129b731f7b7e5
|
|
| BLAKE2b-256 |
2f31c16b7d1d76d369473a803137cc8c6cda04076430ed4a8018d5199ed6ab7e
|
File details
Details for the file python_getpaid_payu-3.0.0a4-py3-none-any.whl.
File metadata
- Download URL: python_getpaid_payu-3.0.0a4-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":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 |
f75e2d56160c499e087a6ad6825f6bb6720fdfb5f7c982c0f701e22801a4bf36
|
|
| MD5 |
7b38bfe4c6f6bc318c0b51c7ff010788
|
|
| BLAKE2b-256 |
2f593259a18cef360fc7421d210da17a6af55912463981813f26eb834b9d92d9
|