Skip to main content

iSwitch😎 Python Library

SwitchPay Python SDK for AllDotPy internal use.

Currently Supported Providers

Next

We will add progressively support for following Providers:

Prerequisites

You need to have at least 3.9 version of python to be able to continue. To do this:

Next you can go ahead with iSwitch.

Install

pip install iswitch

API

The iSwitch Python library's API is designed around the SWITCHPAY REST API

Settings

from iswitch import Client

# Creating a client
client = Client(
    configs = {
        'host':'',                          # Your API Host or localhost:9000 by Default
        'service': 'SEMOA',                 # The Provider Service to use
        'raise_on_error': False,            # If True, client will raise on request errors
        'credentials':{
            'username':'YOUR-APP-USERNAME',
            'password':'YOUR-APP-PASSWORD',
        }
    }
)

Authentication

response = client.authenticate()

if not response.has_error:
    print(type(response))      # <class 'iswitch._types.Response'>
    data = response.json
    ...
else :
    print(type(response))      # <class 'iswitch._types.ErrorResponse'>

Get active application

app = client.get_application()

Providres

Get Provider

provider = client.get_provider()

List Providers

response = client.list_providers()

Transactions

Create Order

# Creating order for SEMOA Transaction.
semoa_order = {
    'merchant_reference': '13fx5er5v7',
    'client': {
        'last_name': 'Doe',
        'first_name': 'John',
        'phone': '+123456789',
    }
}

# Creating order for CINETPAY Transaction.
cinetpay_order = {
    'transaction_id': '123456',
    'currency': 'XOF',
    'description': 'YOUR-ORDER-DESCRIPTION',
    'customer_name': 'Doe',
    'customer_surname': 'John',
}

Create Transaction

from iSwitch import Client, Transaction

# Initializing Client
client = Client(
    configs = {
        'host':'',
        'service': 'CINETPAY',
        'raise_on_error': False,
        'credentials':{
            'username':'YOUR-APP-USERNAME',
            'password':'WRONG-PASSWORD',
        }
    }
)

# Creating Transaction
transaction = Transaction(
    amount = 250,
    callback_url = 'YOUR-CALLBACK-URL',
    return_url='YOUR-RETURN/REDIRECT-URL',
    order = cinetpay_order
)

response = client.create_transaction(transaction)
print(type(response))       # <Class Response status: 201 error: False>

List Transactions

To list transactions you can use list_transactions function.

response = client.list_transactions()

Retrieve Transaction

To get a specific transaction you can use the get_transaction function.

response = client.get_transaction(transaction_id)

Get a Specific Transaction payment url

You can also get a payment URL for a specific Transaction using get_bill_url function.

response = client.get_bill_url(transaction_id)

Responses

  • Response class

The default Request response class, is returned when detail is set to True in the request.

response = client.create_transaction(my_transaction)

print(response)         # <Class Response status: 201, error: False>

# Use json attribute to access response data.
print(response.json)   # {"id":transaction_id,...}
  • PagginatedResponse Class

PagginatedResponse is used to manage Pagginated response data. It provides properties such as :

  • has_next : bool , True if the PagginatedResponse has a next page else False.
  • has_prev : bool, True if the PagginatedResponse has a next page else False
  • next_page : PagginatedResponse, the next page if has_next is True
  • previous_page : PagginatedResponse, the next page if has_prev is True
  • result : sequence[ Mapping[ str,any ] ], the page data.

Errors

Errors are raised if requests return an error status.

  • ErrorResponse class

This Error is returned if raise_on_error is set to True in Client configs.

from iSwitch import Client

client = Client(
    configs = {
        'host':'',
        'service': 'SEMOA',
        'raise_on_error': False,
        'credentials':{
            'username':'YOUR-APP-USERNAME',
            'password':'WRONG-PASSWORD',
        }
    }
)

# Do Authentication
response = Client.authenticate()

# With raise_on_error set to False
print(type(response))           # <class 'iswitch._types.ErrorResponse'>
print(response.get_message())   # Invalid password.
  • ResponseError class

This Error is raised if raise_on_error is set to True in Client configs.

from iSwitch import Client

client = Client(
    configs = {
        'host':'',
        'service': 'SEMOA',
        'raise_on_error': True,
        'credentials':{
            'username':'YOUR-APP-USERNAME',
            'password':'WRONG-PASSWORD',
        }
    }
)

# Do Authentication
response = Client.authenticate()        # Will raise a ResponseError with response message.

Made with ❤️ By DotPy

Metadata

Release files for iSwitch 1.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iSwitch 1.0.7
File Size Uploaded
iSwitch-1.0.7.tar.gz 11.4 kB Details

Release files / iSwitch-1.0.7.tar.gz

Download URL iSwitch-1.0.7.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ffae5f5f9a44aca38a72ad42afc5f832e244a97ce197f1e9f66a02481c027bb7
BLAKE2b-256 checksum
How to use checksums
c00de13f7dd669f7270bc6d876394016a1a5572df1d7c6dd7a209eeb1b1bbd3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.1

Release history Release notifications | RSS feed

This release

1.0.7 This release

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page