Skip to content

Commit c28338d

Browse files
committed
Add invalid creds check | put code as trans desc
1 parent d8bc828 commit c28338d

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

mpesa/LipaNaMpesaOnline.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,25 @@ def generate_pass_key():
2525

2626

2727
def get_token():
28-
api_URL = "{}/oauth/v1/generate?grant_type=client_credentials".format(SAFARICOM_API)
28+
api_url = "{}/oauth/v1/generate?grant_type=client_credentials".format(SAFARICOM_API)
29+
print(api_url)
2930

30-
r = requests.get(api_URL, auth=HTTPBasicAuth(consumer_key, consumer_secret))
31-
jonresponse = json.loads(r.content)
32-
access_token = jonresponse['access_token']
33-
return access_token
31+
r = requests.get(api_url, auth=HTTPBasicAuth(consumer_key, consumer_secret))
32+
if r.status_code == 200:
33+
jonresponse = json.loads(r.content)
34+
access_token = jonresponse['access_token']
35+
return access_token
36+
elif r.status_code == 400:
37+
print('Invalid credentials.')
38+
return False
3439

3540

3641
def sendSTK(phone_number, amount, orderId=0, transaction_id=None, shortcode=None):
3742
code = shortcode or SHORT_CODE
3843
access_token = get_token()
44+
if access_token is False:
45+
raise Exception("Invalid Consumer key or secret or both")
46+
3947
time_now = datetime.datetime.now().strftime("%Y%m%d%H%I%S")
4048

4149
s = code + PASS_KEY + time_now
@@ -56,10 +64,11 @@ def sendSTK(phone_number, amount, orderId=0, transaction_id=None, shortcode=None
5664
"PartyB": code,
5765
"PhoneNumber": phone_number,
5866
"CallBackURL": "{}/mpesa/confirm/".format(HOST_NAME),
59-
"AccountReference": phone_number,
67+
"AccountReference": code,
6068
"TransactionDesc": "Payment for {}".format(phone_number)
6169
}
6270

71+
print(request)
6372
response = requests.post(api_url, json=request, headers=headers)
6473
json_response = json.loads(response.text)
6574
if json_response.get('ResponseCode'):
@@ -71,8 +80,9 @@ def sendSTK(phone_number, amount, orderId=0, transaction_id=None, shortcode=None
7180
transaction.save()
7281
return transaction.id
7382
else:
74-
transaction = PaymentTransaction.objects.create(phone_number=phone_number, checkoutRequestID=checkout_id,
75-
amount=amount, order_id=orderId)
83+
transaction = PaymentTransaction.objects.create(phone_number=phone_number,
84+
checkoutRequestID=checkout_id,
85+
amount=amount, order_id=orderId)
7686
transaction.save()
7787
return transaction.id
7888
else:
@@ -101,6 +111,14 @@ def check_payment_status(checkout_request_id, shortcode=None):
101111
response = requests.post(api_url, json=request, headers=headers)
102112
json_response = json.loads(response.text)
103113
if 'ResponseCode' in json_response and json_response["ResponseCode"] == "0":
114+
requestId = json_response.get('CheckoutRequestID')
115+
transaction = PaymentTransaction.objects.get(
116+
checkoutRequestID=requestId)
117+
if transaction:
118+
transaction.isFinished = True
119+
transaction.isSuccessFull = True
120+
transaction.save()
121+
104122
result_code = json_response['ResultCode']
105123
response_message = json_response['ResultDesc']
106124
return {

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
setup(
2424
name='django-mpesa',
25-
version='2.0.5',
25+
version='2.0.6',
2626
description='A python library that interfaces safaricoms mpesa apis',
2727
long_description=open('README.rst', 'r', encoding='utf-8').read(),
2828
url='https://www.vorane.com/',

0 commit comments

Comments
 (0)