From a72cd29c285c93bfa5b748251b8b6d24caeab855 Mon Sep 17 00:00:00 2001 From: Martin Mogusu Date: Wed, 4 Jan 2023 00:13:14 +0300 Subject: [PATCH] Enrich MPESA Response (#8) --- django_daraja/mpesa/utils.py | 19 ++++++++++++++++--- tests/test_stk_push.py | 4 ++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/django_daraja/mpesa/utils.py b/django_daraja/mpesa/utils.py index 4016b12..252b000 100644 --- a/django_daraja/mpesa/utils.py +++ b/django_daraja/mpesa/utils.py @@ -20,9 +20,16 @@ class MpesaResponse(Response): - response_description = "" - error_code = None + request_id = '' + response_code = '' + response_description = '' + customer_message = '' + conversation_id = '' + originator_conversation_id = '' + error_code = '' error_message = '' + merchant_request_id = '' + checkout_request_id = '' def mpesa_response(r): @@ -35,9 +42,16 @@ def mpesa_response(r): r.__class__ = MpesaResponse json_response = r.json() + r.request_id = json_response.get('requestId', '') + r.response_code = json_response.get('ResponseCode', '') r.response_description = json_response.get('ResponseDescription', '') + r.customer_message = json_response.get('CustomerMessage', '') + r.conversation_id = json_response.get('ConversationID', '') + r.originator_conversation_id = json_response.get('OriginatorConversationID', '') r.error_code = json_response.get('errorCode') r.error_message = json_response.get('errorMessage', '') + r.merchant_request_id = json_response.get('MerchantRequestID', '') + r.checkout_request_id = json_response.get('CheckoutRequestID', '') return r @@ -157,7 +171,6 @@ def mpesa_access_token(): else: delta = timezone.now() - access_token.created_at minutes = (delta.total_seconds()//60) - print('minutes: ', minutes) if minutes > 50: # Access token expired access_token = generate_access_token() diff --git a/tests/test_stk_push.py b/tests/test_stk_push.py index 78882cf..ad8c3f1 100644 --- a/tests/test_stk_push.py +++ b/tests/test_stk_push.py @@ -23,7 +23,11 @@ def test_stk_push_success(self): account_reference = 'reference' transaction_desc = 'Description' response = self.cl.stk_push(phone_number, amount, account_reference, transaction_desc, self.callback_url) + self.assertEqual(response.response_code, '0') self.assertEqual(response.response_description, 'Success. Request accepted for processing') + self.assertTrue(len(response.merchant_request_id) > 0) + self.assertTrue(len(response.checkout_request_id) > 0) + self.assertTrue(len(response.customer_message) > 0) def test_stk_push_empty_reference(self): '''