diff --git a/pyproject.toml b/pyproject.toml index ff08145..d99b917 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=61.0"] +requires = ["setuptools>=61.0.0"] build-backend = "setuptools.build_meta" [project] diff --git a/pyvenv.cfg b/pyvenv.cfg index 90084fc..cf277aa 100644 --- a/pyvenv.cfg +++ b/pyvenv.cfg @@ -2,4 +2,4 @@ home = /usr/bin include-system-site-packages = false version = 3.12.3 executable = /usr/bin/python3.12 -command = /usr/bin/python3 -m venv /home/mucamba/paysgatorsdks/python +command = /usr/bin/python3 -m venv . diff --git a/src/paysgator/client.py b/src/paysgator/client.py index a067367..0c1b6a4 100644 --- a/src/paysgator/client.py +++ b/src/paysgator/client.py @@ -36,7 +36,7 @@ def confirm(self, payment_link_id: str, payment_method: str, **kwargs) -> Paymen class Subscriptions(Resource): def update(self, subscription_id: str, action: str) -> SubscriptionResponse: request_model = SubscriptionUpdateRequest(action=action) - response_data = self.client.request("PATCH", f"/subscriptions/{subscription_id}", data=request_model.model_dump(by_alias=True)) + response_data = self.client.request("PATCH", f"/subscriptions/{subscription_id}", data=request_model.model_dump(by_alias=True, exclude_none=True)) return SubscriptionResponse(**response_data) class Transactions(Resource): @@ -66,13 +66,17 @@ def __init__(self, api_key: str): self.wallet = Wallet(self) def set_base_url(self, url: str): - self.BASE_URL = url + self._base_url = url - def request(self, method: str, endpoint: str, data: Optional[dict] = None) -> dict: - url = f"{self.BASE_URL}{endpoint}" + def request(self, method: str, endpoint: str, data: Optional[dict] = None) -> Dict[str, Any]: + url = f"{self._base_url}{endpoint}" response = self.session.request(method, url, json=data) if response.status_code >= 400: - raise APIError(response.status_code, response.text) + try: + error_data = response.json() + raise APIError(response.status_code, error_data) + except ValueError: + raise APIError(response.status_code, response.text) return response.json() diff --git a/src/paysgator/models.py b/src/paysgator/models.py index 8863e2d..2f7bf1c 100644 --- a/src/paysgator/models.py +++ b/src/paysgator/models.py @@ -73,5 +73,5 @@ class TransactionResponse(BaseModel): class WalletBalanceResponse(BaseModel): wallet_id: str = Field(..., alias="walletId") currency: str - balance: str + balance: float mode: str diff --git a/test_sdk.py b/test_sdk.py index 7ee8b76..9a739aa 100644 --- a/test_sdk.py +++ b/test_sdk.py @@ -2,9 +2,9 @@ #Mpesa direct charge test -api_key = "" +# api_key = "" -wallet_id = "" +# wallet_id = "" client = PaysgatorClient(api_key, wallet_id)