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.
- 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.
The following 15 currencies are supported: BGN, CHF, CZK, DKK, EUR, GBP, HRK, HUF, NOK, PLN, RON, RUB, SEK, UAH, USD.
pip install python-getpaid-payuTo 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,
}
}PayU provides a sandbox environment for testing. You can use the example keys provided above for testing in PLN.
python-getpaid-payu is part of the larger python-getpaid ecosystem. Use it with one of our web framework wrappers:
- Python 3.12+
python-getpaid-core >= 3.0.0a2httpx >= 0.27.0
MIT
Created by Dominik Kozaczko.