Skip to main content

Library for communication with ČSOB API

Project description

Codecov

CSOB client

Python library for communicating with ČSOB (https://platbakartou.csob.cz/) payment gateway API. The API is described here: https://github.com/csob/paymentgateway.

The library currently implements ČSOB API v.1.9.

Installation

pip install csobpg

Basic usage

API client initialization

The APIClient provides the interface to communicate with the API.

from csobpg.v19 import APIClient

client = APIClient("merchantId", "merch_private.key", "csob.pub", base_url=..., http_client=...)

# Use the client to interact with the API:
client.init_payment(...)

HTTP client

The library uses the httprest library for making HTTP requests. By default it will use httprest.http.urllib_client.UrllibHTTPClient.

But you may use any other httprest's HTTP client, or even write your own client.

Base methods

The library supports all base API methods. For example, that's how to initialize a payment:

from csobpg.v19.models import cart

response = client.init_payment(
    order_no="2233823251",
    total_amount=100,
    return_url="http://127.0.0.1:5000",
    cart=cart.Cart([cart.CartItem("Apples", 1, 100)]),
    merchant_data=b"Hello, World!",
)

OneClick methods

Here are the steps to perform a OneClick payment.

Step 1 - make a regular payment

First, make a regular payment using the "payment/init":

response = client.payment_init(...)

# finalize payment...

Preserve the response.pay_id, it will be used to refer to the OneClick template.

Step 2 - initialize OneClick payment

Now, having the template ID, initialize the OneClick payment. First, check that the template ID exists (optional):

response = client.oneclick_echo(template_id)
assert response.success

Then, initiate the payment:

response = client.oneclick_init_payment(template_id=..., ...)

Step 3 - process OneClick payment

Finally, process the payment:

response = client.oneclick_process(pay_id, fingerprint=...)

Exceptions handling

from csobpg.v19.errors import APIError, APIClientError
from httprest.http import HTTPRequestError

response = client.<operation>(...)
# you can access the response_code directly:
assert response.result_code == 0

# or call the `raise_for_result_code` method and handle exceptions:
try:
    response.raise_for_result_code()
except APIError as exc:
    # handle API error
    # it is raised on any API error. You may also catch the specific API error
except APIClientError as exc:
    # handle API client error
    # it is raised when API returns unexpected response (e.g. invalid JSON, invalid signature)
except HTTPRequestError as exc:
    # handle HTTP error
    # it is raised on any HTTP error
except ValueError as exc:
    # handle value error
    # it is raised on any library's misuse (e.g. passing invalid parameters)
    # it always means developer's mistake

RSA keys management

The simples way to pass RSA keys is to pass their file paths:

from csobpg.v19 import APIClient

client = APIClient(..., "merch_private.key", "csob.pub")

The library will read the private key from the file when needed. The public key will be cached into the RAM.

If you want to change it, use special classes:

from csobpg.v19 import APIClient
from csobpg.v19.key import FileRSAKey, CachedRSAKey

client = APIClient(..., FileRSAKey("merch_private.key"), FileRSAKey("csob.pub"))

You may also override the base RSAKey class to define your own key access strategy:

from csobpg.v19.key import RSAKey

class MyRSAKey(RSAKey):

    def __str__(self) -> str:
        return "my key"

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

csobpg-0.3.0.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

csobpg-0.3.0-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file csobpg-0.3.0.tar.gz.

File metadata

  • Download URL: csobpg-0.3.0.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.9 Linux/6.8.0-1014-azure

File hashes

Hashes for csobpg-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6c5e1ff5b86cc47b7bed02d309c8295b9efadfb187686c48c96c4f2f4098488e
MD5 dff4615357f4e9a3ca151958340a6ee9
BLAKE2b-256 0276be7b52872b4b4354bb627356dc34c68022eee4383ecb5add050a8d24f0b9

See more details on using hashes here.

File details

Details for the file csobpg-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: csobpg-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 37.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.9 Linux/6.8.0-1014-azure

File hashes

Hashes for csobpg-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7d5b2ce7bfd0cb8c8bf89ad01b086f6bb0e8a7026236da7216359540668b6c24
MD5 2c9e72faaa1aa6b9f8ee052c3df52121
BLAKE2b-256 25cd45f6feb791dbec46d1ec68568a58b50b259b73f4b04bcc2b27f0dd3548df

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page