A python wrapper for the Jenga API.
Project description
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.account_balance(signature=signature,
api_token=auth_token,
country_code=COUNTRY_CODE,
account_id=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.account_mini_statement(signature=signature,
api_token=auth_token,
country_code=COUNTRY_CODE,
account_id=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.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.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.send_to_mobile_wallets(ep_signature, auth_token, **payload)
print(send_money_within_equity)
{
"status": true,
"code": 0,
"message": "success",
"data": {
"transactionId": "",
"status": "SUCCESS"
}
}
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.0.tar.gz
(8.9 kB
view hashes)
Built Distribution
Close
Hashes for python_jengaapi-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b171d5bcbacdc9816ed7f8a537cdba338a1f24effaa9678e12b24e41c5ebde10 |
|
MD5 | d45a91f97dabd0573cf6678628ea7b7d |
|
BLAKE2b-256 | 09babf5b4f157432b05c1056d8328605e217e55770d1a77441e380ff65049015 |