Skip to main content

A python wrapper for the Jenga API.

Project description

Pytest CI codecov Maintainability

JengaAPIPythonWrapper

A simple python wrapper around the JengaAPI from Equity Bank

Setup

Installation

pip install python-jengaapi

A sample of the .env variables required include:

MERCHANT_CODE=1234567
CONSUMER_SECRET=XXXXXXXXXXXXX
API_KEY=123XXX222
ACCOUNT_NAME=John Doe
ACCOUNT_NUMBER=12345678
CURRENCY_CODE=KES
COUNTRY_CODE=KE
FOREIGN_CURRENCY_CODE=USD
PRIVATE_KEY_PATH=path_to_privatekey.pem

Authorization Service

Fetch Authorization token

# script.py
from jengaapi.configs.config import app_config
from jengaapi.services.authorization_service import AuthorizationService

uat_config = app_config.get('uat')

# Get the environment variables
MERCHANT_CODE = uat_config.MERCHANT_CODE
CONSUMER_SECRET = uat_config.CONSUMER_SECRET
COUNTRY_CODE = os.getenv('COUNTRY_CODE')
ACCOUNT_NUMBER = os.getenv('ACCOUNT_NUMBER')


auth = AuthorizationService(config=uat_config)
auth_token = auth.auth_token
print(auth_token)
$ python script.py
Bearer eexxxxx.xx.xxxxxx

Account Service

Fetch Account Balance

account_service = AccountServices(config=uat_config)
# Get account balance
signature = auth.signature((COUNTRY_CODE, ACCOUNT_NO))
account_balance = account_service.account_balance(signature, auth_token, COUNTRY_CODE, ACCOUNT_NO)
print(account_balance)
$ python script.py
{
   "status":true,
   "code":0,
   "message":"success",
   "data":{
      "balances":[
         {
            "amount":"485115080.54",
            "type":"Available"
         },
         {
            "amount":"485115080.54",
            "type":"Current"
         }
      ],
      "currency":"KES"
   }
}

Fetch Account Mini Statement

account_service = AccountServices(config=uat_config)
signature = auth.signature((COUNTRY_CODE, ACCOUNT_NO))
account_mini_statement = account_service.account_mini_statement(signature, auth_token, COUNTRY_CODE, ACCOUNT_NO)
print(account_mini_statement)
{
   "status":true,
   "code":0,
   "message":"success",
   "data":{
      "balance":484837600.0,
      "currency":"KES",
      "accountNumber":"1450160649886",
      "transactions":[
         {
            "date":"2023-01-12T00:00:00.000",
            "amount":"1",
            "description":"JENGA CHARGE CREDIT 673579628084879",
            "chequeNumber":"None",
            "type":"Credit"
         },
         {
            "date":"2023-01-12T00:00:00.000",
            "amount":"1",
            "description":"JENGA CHARGE DEBIT 673579628084879",
            "chequeNumber":"None",
            "type":"Debit"
         },
         {
            "date":"2023-01-12T00:00:00.000",
            "amount":"1",
            "description":"JENGA CHARGE CREDIT 673579623845546",
            "chequeNumber":"None",
            "type":"Credit"
         },
         {
            "date":"2023-01-12T00:00:00.000",
            "amount":"1",
            "description":"REV-(673540528125447)JENGA CHARGE DEBIT 6735405275",
            "chequeNumber":"None",
            "type":"Debit"
         }
      ]
   }
}

Fetch Account Opening and Closing Balance

ep_signature = auth.signature((ACCOUNT_NO, COUNTRY_CODE, "2023-01-01"))
payload = dict(
    countryCode=COUNTRY_CODE,
    accountId=ACCOUNT_NO,
    date="2023-01-01",
)
opening_closing = account_service.opening_closing_account_balance(ep_signature, auth_token, **payload)
print(opening_closing)
{
   "status":true,
   "code":0,
   "message":"success",
   "data":{
      "balances":[
         {
            "amount":"0",
            "type":"Closing Balance"
         },
         {
            "amount":"0",
            "type":"Opening Balance"
         }
      ]
   }
}

Send Money Service

Send within Equity

send_money_service = SendMoneyService(config=uat_config)
payload = {
    "source": {
        "countryCode": COUNTRY_CODE,
        "name": "CATHERINE MURANDITSI MUKABWA",
        "accountNumber": ACCOUNT_NO
    },
    "destination": {
        "type": "bank",
        "countryCode": "KE",
        "name": "Tom Doe",
        "accountNumber": "0250163591202"
    },
    "transfer": {
        "type": "InternalFundsTransfer",
        "amount": "1000.00",
        "currencyCode": "KES",
        "reference": "692494625798",
        "date": "2023-08-18",
        "description": "some remarks here"
    }
}
ep_signature = auth.signature((ACCOUNT_NO,"1000.00", "KES", "692494625798"))
send_money_within_equity = send_money_service.send_within_equity(ep_signature, auth_token, **payload)
print(send_money_within_equity)
{
  "status": true,
  "code": 0,
  "message": "success",
  "data": {
    "transactionId": "54154",
    "status": "SUCCESS"
  }
}

Send to mobile wallets

payload = {
    "source": {
        "countryCode": "KE",
        "name": "CATHERINE MURANDITSI MUKABWA",
        "accountNumber": ACCOUNT_NO
    },
    "destination": {
        "type": "mobile",
        "countryCode": "KE",
        "name": "A N.Other",
        "mobileNumber": "0722123456",
        "walletName": "Mpesa"
    },
    "transfer": {
        "type": "MobileWallet",
        "amount": "1000",
        "currencyCode": "KES",
        "date": "2023-01-13",
        "description": "some remarks here"
    }
}
ep_signature = auth.signature(("1000", "KES", "692494625799", ACCOUNT_NO))
send_money_within_equity = send_money_service.send_to_mobile_wallets(ep_signature, auth_token, **payload)
print(send_money_within_equity)
{
    "status": true,
    "code": 0,
    "message": "success",
    "data": {
      "transactionId": "",
      "status": "SUCCESS"
    }
}

Jenga API docs

For official documentatio the Equity bank api refer here

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

python-jengaapi-2.0.1.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

python_jengaapi-2.0.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file python-jengaapi-2.0.1.tar.gz.

File metadata

  • Download URL: python-jengaapi-2.0.1.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.6

File hashes

Hashes for python-jengaapi-2.0.1.tar.gz
Algorithm Hash digest
SHA256 ee15903c1d598622fbdfd58aa32b2caf23f0d8eaff6b9d08db6eac81b0c2d8e0
MD5 255d91d0814b290e356f4f9fd794337a
BLAKE2b-256 b26429eb3428f0c2f01e39d391fa1df40a32b62bb63356b7e8f087721af83e49

See more details on using hashes here.

File details

Details for the file python_jengaapi-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for python_jengaapi-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7c983c767e01010fd53d5e9211fd05bc6f2a9690205f3a0b6e317f56e8b7b706
MD5 9dbdb3d35c10784e2aa423e084c5e28a
BLAKE2b-256 de99178da604b8b1dc470b4e6c2b9fffe7164b4818cb7f80413a5e265136b978

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