import requests from django.conf import settings class SEPClient: request_token_url = 'https://sep.shaparak.ir/onlinepg/onlinepg' request_confirm_url = 'https://sep.shaparak.ir/verifyTxnRandomSessionkey/ipg/VerifyTransaction' request_reverse_url = 'https://sep.shaparak.ir/verifyTxnRandomSessionkey/ipg/ReverseTransaction' pg_base_url = 'https://sep.shaparak.ir/OnlinePG/SendToken?token={token}' terminal_id = settings.SEP_TERMINAL_ID terminal_password = settings.SEP_TERMINAL_PASSWORD def request_token(self, amount, callback_url, order_id: int, phone_number=None): data = { "action": "token", "TerminalId": self.terminal_id, "Amount": amount, "ResNum": order_id, "RedirectUrl": callback_url, "CellNumber": phone_number } print(data) # success_token = {'status': 1, 'token': '38faf9c852664f3ea1ecf764f853a284'} # failed_token = {'status': -1, 'errorCode': '5', 'errorDesc': 'پارامترهای ارسال شده نامعتبر است.; شماره ترمینال باید بزرگتر یا برابر با 1 باشد'} response = requests.post(self.request_token_url, json=data) print(response.json()) tmp = {} for key, value in response.json().items(): tmp[key.lower()] = value return tmp def request_confirm(self, ref_number): data = { "RefNum": ref_number, "TerminalNumber": self.terminal_id } print(data) response_json_sample = { "TransactionDetail": { "RRN": "14226761817", "RefNum": "50", "MaskedPan": "621986****8080", "HashedPan": "b96a14400c3a59249e87c300ecc06e5920327e70220213b5bbb7d7b2410f7e0d", "TerminalNumber": 2001, "OrginalAmount": 1000, "AffectiveAmount": 1000, "StraceDate": "2019-09-16 18:11:06", "StraceNo": "100428" }, "ResultCode": 0, "ResultDescription": "عملیات با موفقیت انجام شد", "Success": True } response = requests.post(self.request_confirm_url, json=data) print(response.json()) tmp = {} # for key, value in response.json().items(): # tmp[key.lower()] = value return response.json() def request_normal_sale_reverse(self, token): data = { "CorporationPin": self.corporation_pin, "Token": token } response_json_sample = { "Token": " MTIzNDU2Nzg5MTA=", "Message": "عملیات موفق", "Status": "0" } response = requests.post(self.normal_sale_confirm_url, json=data) return response.json()