Skip to main content

Minimal Python client for selected Jenga APIs

Project description

jenga

A Python package for interacting with selected Jenga API endpoints.

Implemented features:

  • Reads configuration from environment variables
  • Generates access tokens
  • Signs request values with your RSA private key using cryptography
  • Provides both Python and CLI usage

Pending endpoints are listed later in this document.

1. Installation

pip install paymentsdks-jenga

2. Configuration

The package reads configuration from environment variables. The required variables are:

JENGA_API_KEY=
JENGA_MERCHANT_CODE=
JENGA_CONSUMER_SECRET=
JENGA_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nreplace-with-private-key\n-----END PRIVATE KEY-----"
JENGA_LIVE_MODE=false

Generate an RSA key pair with OpenSSL before setting JENGA_PRIVATE_KEY:

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
  • Save the contents of private_key.pem in JENGA_PRIVATE_KEY.
  • Save the contents of public_key.pem in the Jenga dashboard under the Keys section.

[!INFO]

  • JENGA_LIVE_MODE=true uses https://api.finserve.africa white JENGA_LIVE_MODE=false uses https://uat.finserve.africa
  • For PEM values, you can use either real multiline values or \n-escaped text in .env files.

If you are using a local .env file, load it into your shell before running commands:

3. Usage

3.1 Signature generation

Request signing is handled internally by JengaClient before protected endpoint calls are made.

If you need to generate a signature manually:

from jenga import JengaClient

client = JengaClient.from_env()
signature = client.sign("KE", "1450160649886")

The data is signed in the order it is passed.

3.1 Python usage

Use the package directly in your application code.

from jenga import JengaClient

client = JengaClient.from_env()

balance = client.account_balance(
    country_code="KE",
    account_id="1450160649886",
)

statement = client.mini_statement(
    country_code="KE",
    account_id="1450160649886",
)

4. Endpoint Coverage

4.1 Account Services

4.1.1 Account Balance

Python:

from jenga import JengaClient

client = JengaClient.from_env()
result = client.account_balance(country_code="KE", account_id="1450160649886")
print(result)

CLI:

PYTHONPATH=src python3 -m jenga.cli account-balance --country-code KE --account-id 1450160649886
4.1.2 Account Mini Statement

Python:

from jenga import JengaClient

client = JengaClient.from_env()
result = client.mini_statement(country_code="KE", account_id="1450160649886")
print(result)

CLI:

PYTHONPATH=src python3 -m jenga.cli mini-statement --country-code KE --account-id 1450160649886
  • Account Full Statement
  • Opening and Closing Account Balance
  • Account Inquiry - Bank Accounts

4.2 Send Money

  • Within Equity Bank
  • To Mobile Wallets
  • RTGS
  • SWIFT
  • Pesalink - To Bank Account
  • Pesalink - To Mobile Number

4.3 Send Money - IMT

  • IMT Within Equity Bank
  • IMT to Mobile Wallets
  • IMT Pesalink - To Bank Account
  • IMT Pesalink - To Bank Mobile

4.4 Receive Money

  • Receive Payments - Bill Payments
  • Receive Payments - Merchant Payments
  • Bill Validation

4.5 Receive Money Queries

  • Get All EazzyPay Merchants
  • Query Transaction Details
  • Get All Billers

4.6 Airtime

  • Purchase Airtime

4.7 Forex Rates

  • Forex Exchange Rates

4.8 ID Search and Verification

  • ID Search and Verification

4.9 MPGS Direct Integration

  • MPGS Validate Payment
  • MPGS Authenticate Payment
  • MPGS Authorize Payment
  • MPGS Query Payment
  • MPGS Refund Payment

5. Testing

Run the automated tests:

python3 -m unittest discover -s tests

Run a real manual test with your local .env:

set -a
source .env
set +a
PYTHONPATH=src python3 -m jenga.cli account-balance --country-code KE --account-id 1450160649886

6. Notes

  • This package currently focuses on a small subset of Jenga APIs.
  • The README only documents endpoints that are actually implemented in this repository.
  • Pending endpoints are listed for roadmap visibility only.
  • See the contribution guide for development and pull request workflow.

7. Releases

  • Tagged releases matching v* trigger GitHub Actions to test, build, and publish the package to PyPI automatically.
  • Example tag: v0.1.1
  • PyPI trusted publishing must be configured once for this repository before the workflow can publish.

8. License

License: MIT

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

paymentsdks_jenga-0.2.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paymentsdks_jenga-0.2.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file paymentsdks_jenga-0.2.0.tar.gz.

File metadata

  • Download URL: paymentsdks_jenga-0.2.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for paymentsdks_jenga-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ccb95a5356f31264eda72157ebe1552c5fb92e514e026a8b42b48db771447ccf
MD5 d57793bf49dc1ac15a7ab52f3a7fb6f0
BLAKE2b-256 3990fc597fd5dc3412b33a390845a68cc318f0ad0454f5e2bbae97b17ce9081f

See more details on using hashes here.

Provenance

The following attestation bundles were made for paymentsdks_jenga-0.2.0.tar.gz:

Publisher: publish.yml on paymentsdks/jenga-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file paymentsdks_jenga-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for paymentsdks_jenga-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 90bb4145d9992a43f48e3aaee9b0066ecf7f1f361e2d628967d65bdadada8d88
MD5 dc83f41ce4a49ea06a94419fde23a7e0
BLAKE2b-256 edeb740503d213c6e7b256974519c42f7ee32f24bf83875d0f4d0fbf85f4ee1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for paymentsdks_jenga-0.2.0-py3-none-any.whl:

Publisher: publish.yml on paymentsdks/jenga-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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