ipg/utils/sep.py
Sayyid Hamid Mahdavi 2a65dd4d1b correct typo
2026-03-10 10:37:39 +03:30

86 lines
2.8 KiB
Python

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()