Source code for equity_jenga.api.account_services.statements

import requests
import sys
import os

sys.path.append(os.path.dirname(os.path.dirname(__file__)))
try:
    from exceptions import handle_response
    from auth import JengaAuth
except ModuleNotFoundError as e:
    print(e)


[docs]class MiniStatement(JengaAuth):
[docs] def authenticate(self, countryCode, accountNumber): self.countryCode = countryCode self.accountNumber = accountNumber return { "Authorization": self.authorization_token, "Content-Type": "application/json", "signature": self.signature((countryCode, accountNumber)), }
[docs] def retrieve(self, countryCode, accountNumber): """ Example Response .. code-block:: json { "accountNumber": "0011547896523", "currency": "KES", "balance": 1000, "transactions": [ { "chequeNumber": null, "date": "2017-01-01T00:00:00", "description": "EAZZY-FUNDS TRNSF TO A/C XXXXXXXXXXXX", "amount": "100", "type": "Debit" }, { "chequeNumber": null, "date": "2017-01-03T00:00:00", "description": "SI ACCOUNT TO ACCOUNT THIRD PA", "amount": "51", "type": "Debit" }, { "chequeNumber": null, "date": "2017-01-05T00:00:00", "description": "CHARGE FOR OTC ECS TRAN", "amount": "220", "type": "Debit" }, { "chequeNumber": null, "date": "2017-01-05T00:00:00", "description": "SI ACCOUNT TO ACCOUNT THIRD PA", "amount": "20", "type": "Debit" } ] } """ headers = self.authenticate(countryCode, accountNumber) if self.env == "sandbox": resource = ( f"/account-test/v2/accounts/ministatement/{countryCode}/{accountNumber}" ) url = self.sandbox_url + resource response = requests.get(url, headers=headers) return handle_response(response)
[docs]class FullStatement(JengaAuth):
[docs] def authenticate(self, accountNumber, countryCode, toDate): self.countryCode = countryCode self.accountNumber = accountNumber self.toDate = toDate return { "Authorization": self.authorization_token, "Content-Type": "application/json", "signature": self.signature((accountNumber, countryCode, toDate)), }
[docs] def retrieve(self, payload): """ Example Payload .. code-block:: json { "countryCode": "KE", "accountNumber": "0011547896523", "fromDate": "2018-01-18", "toDate": "2018-04-19", "limit": 20, "reference": "", "serial": "", "postedDateTime": "", "date": "", "runningBalance": { "currency": "", "amount": 0.0 } } Example Response .. code-block:: json { "accountNumber": "0011547896523", "currency": "KES", "balance": 997382.57, "transactions": [ { "reference": 541, "date": "2018-07-13T00:00:00.000", "description": "EQUITEL-BUNDLE/254764555383/8755", "amount": 900, "serial": 1, "postedDateTime": "2018-07-13T09:51:27.000", "type": "Debit", "runningBalance": { "currency": "KES", "amount": 1344.57 } }, { "reference": "S4921027", "date": "2018-07-18T00:00:00.000", "description": "EAZZY-AIRTIME/EQUITEL/254764555383/100000939918/18", "amount": 200, "serial": 1, "postedDateTime": "2018-07-18T16:27:18.000", "type": "Debit", "runningBalance": { "currency": "KES", "amount": 1144.57 } }, { "reference": 5436, "date": "2018-07-19T00:00:00.000", "description": "CREDIT TRANSFER", "amount": 1000000, "serial": 2, "postedDateTime": "2018-07-19T12:01:47.000", "type": "Credit", "runningBalance": { "currency": "KES", "amount": 1001144.57 } } ] } """ accountNumber = payload.get("accountNumber") countryCode = payload.get("countryCode") toDate = payload.get("toDate") headers = self.authenticate(accountNumber, countryCode, toDate) if self.env == "sandbox": resource = f"/account-test/v2/accounts/fullstatement/" url = self.sandbox_url + resource response = requests.post(url, headers=headers, data=payload) return handle_response(response)