diff --git a/accounts/settings.py b/accounts/settings.py index 6544afe..b9966c6 100644 --- a/accounts/settings.py +++ b/accounts/settings.py @@ -252,3 +252,9 @@ JALALI_DATE_DEFAULTS = { 'datetime': '%H:%M:%S _ %Y/%m/%d', } } + +PAYAM_SMS_SYSTEM_NAME = config('PAYAM_SMS_SYSTEM_NAME') +PAYAM_SMS_USERNAME = config('PAYAM_SMS_USERNAME') +PAYAM_SMS_PASSWORD = config('PAYAM_SMS_PASSWORD') +PAYAM_SMS_CLIENT_ID = config('PAYAM_SMS_CLIENT_ID') +PAYAM_SMS_CLIENT_SECRET = config('PAYAM_SMS_CLIENT_SECRET') diff --git a/apps/users/models.py b/apps/users/models.py index 9c1666c..f6d9cef 100644 --- a/apps/users/models.py +++ b/apps/users/models.py @@ -12,6 +12,7 @@ from django.utils import timezone from django.utils.translation import gettext_lazy as _ import uuid +from utils.clients.payam_sms import send_sms from .provinces_and_cities import state # from .tasks import send_notification @@ -214,6 +215,8 @@ class User(AbstractUser): self.notify(body=str(self.otp), title='OTP') def notify(self, body, title=None, notification_type='sms'): + message = "رمزیکبارمصرف: " + body + send_sms(self.phone_number.strip('+'), message) return # TODO: enable celery send_notification(phone_number=self.phone_number, diff --git a/utils/clients/payam_sms.py b/utils/clients/payam_sms.py new file mode 100644 index 0000000..439dcde --- /dev/null +++ b/utils/clients/payam_sms.py @@ -0,0 +1,47 @@ +# TODO: this is time fourced code. refactor + +import requests +from django.conf import settings + + +def get_access_token(): + payam_sms_system_name = settings.PAYAM_SMS_SYSTEM_NAME + payam_sms_username = settings.PAYAM_SMS_USERNAME + payam_sms_password = settings.PAYAM_SMS_PASSWORD + payam_sms_client_id = settings.PAYAM_SMS_CLIENT_ID + payam_sms_client_secret = settings.PAYAM_SMS_CLIENT_SECRET + auth = (payam_sms_client_id, payam_sms_client_secret) + url = f"https://www.payamsms.com/auth/oauth/token?systemName={payam_sms_system_name}&username={payam_sms_username}&password={payam_sms_password}&scope=webservice&grant_type=password" + + response_object = requests.post(url, auth=auth, json={}) + response = response_object.json() + return response["access_token"] + + +def send_sms(phone_number, message): + url = "https://www.payamsms.com/panel/webservice/send" + + # access_token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJzb2JhbiIsInNjb3BlIjpbIndlYnNlcnZpY2UiXSwiZXhwIjoxNzQ0MTAyMDU5LCJ1c2VyRGV0YWlscyI6eyJpZCI6MjU0MCwidXNlck5hbWUiOiJzb2JhbiIsInJvbGUiOiJVU0VSIiwiZW5hYmxlZCI6dHJ1ZSwic3lzdGVtSWQiOjcyMiwiYWNjZXNzIjp7InJvbGUiOlsiYWRkIiwiZWRpdCIsImdldCIsImRlbGV0ZSJdLCJwaG9uZUJvb2siOlsiYWRkIiwiZWRpdCIsImdldExvY2FsIiwiZ2V0R2xvYmFsIiwiZGVsZXRlIl0sInNtcyI6WyJzaW5nbGUiLCJnZXRMb2NhbCIsImdldEdsb2JhbCIsImJ1bGsiLCJkYiJdLCJyZXBvcnQiOlsiZ2V0TW9HbG9iYWwiLCJnZXREYWlseUxvY2FsIiwiZ2V0TW9Mb2NhbCIsImdldERhaWx5R2xvYmFsIl0sIndzIjpbIndzIl0sInVzZXIiOlsiYWRkIiwiZWRpdCIsImdldExvY2FsIiwiZ2V0IiwiZ2V0R2xvYmFsIiwiZGVsZXRlIl0sInRvb2xzIjpbInJhY2UiLCJwZXJpb2RpYyIsInBvbGxpbmciLCJzZWNyZXRvcnkiLCJhdXRvYW5zd2VyIl0sImZpbmFuY2UiOlsidGRyIiwiY2hhcmdlIl19LCJyb2xlSWQiOjQ0NDAsImNoaWxkcmVuSWRzIjpbXSwic3lzdGVtVHlwZSI6Ik5PUk1BTCIsInN5c3RlbVBheW1lbnRUeXBlIjoiREVCSVQiLCJzeXN0ZW1OYW1lIjoic29iYW4iLCJzZW5kV2l0aE91dFBlcm1pc3Npb25TeXN0ZW0iOmZhbHNlLCJtaXNDdXN0b21lciI6Itio2YbYr9in2LEg2LPZiNio2KfZhiDYs9in2YXYp9mG2YciLCJwYXJlbnRVc2VyTmFtZSI6bnVsbCwicGFyZW50SWQiOm51bGwsImFkbWluIjp0cnVlfSwiYXV0aG9yaXRpZXMiOlsiVVNFUiJdLCJqdGkiOiJNeU5vTml2RURmc3YxUDR3U20tbTR2Y2NHODgiLCJjbGllbnRfaWQiOiJzb2JhbiJ9.9mdneDduK4OVH2zsXvRqvXt2qwpLvs0vCuseLaB-LCo' + access_token = get_access_token() + + body = [ + { + "sender": "98200000443295", + "recipient": phone_number, + "body": message, + # "customerId": "1", + # "sendDate": "2024-03-04 10:17:00" + } + ] + + headers = { + 'Authorization': f'Bearer {access_token}', + 'Content-Type': 'application/json', + 'Accept': 'application/json', + } + + response_object = requests.post(url, headers=headers, json=body) + print(response_object.text) + + +# send_sms("989106853582", "تست")