Skip to main content

Library to manage payments using the KASS API

Project description

Helper for the KASS payment gateway. Written for python 3.8.5 (probably works on versions >= 3.6).

See the KASS API docs for more info.

This module is not affiliated with KASS.

TODO

  • [x] Create payment

  • [ ] Retreive payment info

  • [ ] Retreive payment status

  • [ ] Cancel payment

  • [ ] Add concurrency with RQ when dispatching multiple payments

Usage

Here is a short guide to get you started.

This will dispatch a payment to the KASS API.

poetry add kass-flow
# or
pip install kass-flow
from kass_flow.kass import KassBilling
from kass_flow.interfaces import KassRequestPaymentDict

kass_token: str = "some-token"
kass_url: str = "https://api.kass.is/v1/payments"
instance = KassBilling(kass_token, kass_url)

payload: KassRequestPaymentDict = {
    "amount": 2199,
    "description": "Kass bolur",
    "image_url": "https://photos.kassapi.is/kass/kass-bolur.jpg",
    "order": "ABC123",
    "recipient": "7798217",
    "terminal": 1,
    "expires_in": 90,
    "notify_url": "https://example.com/callbacks/kass",
}

result, is_valid = instance.dispatch(payload)

When the recipient cancels or pays the requested order KASS will send a callback to the notify_url, which you need to catch on your server and probably validate the signature that is included in the POST payload.

At some point in time the user will pay/reject the requested order. Here is an example on how to validate the payload.

from kass_flow.kass import KassBilling
from kass_flow.interfaces import KassRequestPaymentDict

def some_view_that_handles_kass_callback(request):
    payload = request.data
    kass_token: str = "some-token"
    kass_url: str = "https://api.kass.is/v1/payments"
    instance = KassBilling(kass_token, kass_url)

    if instance.is_signature_valid(payload):
        # process the payload.

Development

pip install poetry
 # to manage envs yourself
poetry config virtualenvs.create false
poetry install
pytest tests

If you are using VSCode for development there is a .vscode/settings.example.json for sensible defaults. Since mypy is used you need to install the mypyls language server.

poetry install "https://github.com/matangover/mypyls/archive/master.zip#egg=mypyls[default-mypy]"
# or
pip install "https://github.com/matangover/mypyls/archive/master.zip#egg=mypyls[default-mypy]"

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

kass-flow-0.2.6.tar.gz (4.4 kB view hashes)

Uploaded Source

Built Distribution

kass_flow-0.2.6-py3-none-any.whl (4.8 kB view hashes)

Uploaded Python 3

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