mirror of
https://git.auk.su/Dinect/bonus-import-tools.git
synced 2025-12-28 18:10:01 +00:00
added user search
This commit is contained in:
11
README.md
11
README.md
@@ -1,8 +1,10 @@
|
||||
# bonus-import-tools
|
||||
# bonus-import-tools - Приложение для импорта бонусных баллов.
|
||||
|
||||
bonus-import-tools
|
||||
## Типы установки
|
||||
|
||||
## Приложение для импорта бонусных баллов.
|
||||
- через python VENV (для разработки)
|
||||
- через docker-compose (на сервере)
|
||||
- через Nuitka (TODO)(у стороннего клиента)
|
||||
|
||||
### Требования для установки через pipenv
|
||||
|
||||
@@ -55,3 +57,6 @@ cd loyalty-load-tester
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Запуск exe (TODO)
|
||||
|
||||
- Nuitka
|
||||
|
||||
141
dinect_api.py
141
dinect_api.py
@@ -6,20 +6,147 @@ import json
|
||||
import httpx
|
||||
# local imports
|
||||
import app
|
||||
import requests
|
||||
|
||||
|
||||
app_token = app.APP_TOKEN
|
||||
pos_token = app.POS_TOKEN
|
||||
merchant_id = app.MERCHANT_ID
|
||||
url = app.API_URI
|
||||
|
||||
url = 'https://api.dinect.ru/v1/'
|
||||
__version__ = '1.0.0'
|
||||
|
||||
HEADERS = {
|
||||
'Authorization': f'{app_token}',
|
||||
'DM-Authorization': f'{pos_token}',
|
||||
'User-Agent': 'bonus-import-tools-2024',
|
||||
'Authorization': f'dmtoken {pos_token}',
|
||||
'DM-Authorization': f'dmapptoken {app_token}',
|
||||
'User-Agent': f'bonus-import-tools-2024 v.{__version__}',
|
||||
'Accept': 'application/json',
|
||||
'Accept-Language': 'ru,ru-RU;q=0.8,en-gb;q=0.5,en;q=0.3',
|
||||
# 'Accept-Language': 'ru,ru-RU;q=0.8,en-gb;q=0.5,en;q=0.3',
|
||||
'Accept-Charset': 'utf-8',
|
||||
'Connection': 'close',
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
}
|
||||
'Content-Type': 'application/json',
|
||||
# 'Content-Type': 'application/x-www-form-urlencoded',
|
||||
}
|
||||
|
||||
|
||||
# GET /20130701/tokens/?next=/20130701/logon
|
||||
# https://pos-api.dinect.com/20130701/tokens/3b01228843d115ae8c03a4d3b20dcb545dbb228c
|
||||
|
||||
def get_user(search_id, get_type='auto', headers=None):
|
||||
"""
|
||||
Retrieves user information based on the provided search ID.
|
||||
|
||||
Args:
|
||||
search_id (str): The ID used to search for the user.
|
||||
get_type (str, optional): The type of search to perform. Defaults to 'auto'.
|
||||
headers (dict, optional): The headers to include in the request. Defaults to None.
|
||||
|
||||
Returns:
|
||||
tuple: A tuple containing a boolean indicating if the user was found and the response text.
|
||||
|
||||
Raises:
|
||||
None
|
||||
|
||||
Example:
|
||||
# >>> get_user('1234567890123', get_type='auto')
|
||||
(True, '[{"id":1002,"card":"4620011139016364102713436","discount":0,"amount":"0.00","purchases":0,"bonus":10,"first_name":"Сергей Жданов","last_name":"","middle_name":"","photo_urls":{"100x125":"https://static.dinect.com/load/usr/ava/000/000/001/002/43ebeec7c6ee/avatar-100x100.png","50x62":"https://static.dinect.com/load/usr/ava/000/000/001/002/43ebeec7c6ee/avatar-50x50.png"},"coupons_url":"https://pos-api.dinect.com/20130701/users/1002/coupons/","purchases_url":"https://pos-api.dinect.com/20130701/users/1002/purchases/byforeigncard/1234567890123/","loyalty_url":"https://pos-api.dinect.com/20130701/loyalties/byforeigncard/1234567890123","url":"https://pos-api.dinect.com/20130701/users/1002"}]')
|
||||
"""
|
||||
if headers is None:
|
||||
headers = HEADERS
|
||||
|
||||
base_url = url + '/users/'
|
||||
# get_type = auto, card, phone, email, foreigncard
|
||||
response = httpx.get(
|
||||
base_url,
|
||||
headers=headers,
|
||||
params={
|
||||
get_type: search_id
|
||||
}
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
# print('User found', user_id, 'response.text', response.text)
|
||||
return True, response.text
|
||||
else:
|
||||
# print('get_headers', headers)
|
||||
# print('response_headers', response.headers)
|
||||
# print('User not found', search_id, 'response.text', response.text)
|
||||
return False, response.text
|
||||
|
||||
|
||||
def new_user(foreign_card, headers=None):
|
||||
if headers is None:
|
||||
headers = HEADERS
|
||||
|
||||
base_url = url + '/users/'
|
||||
response = httpx.post(
|
||||
base_url,
|
||||
headers=headers,
|
||||
json={
|
||||
'foreigncard': foreign_card
|
||||
}
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
return True, response.text
|
||||
else:
|
||||
return False, response.text
|
||||
|
||||
|
||||
def bonuses_update(user_id, summ_total, bonus_amount, doc_id, headers=None):
|
||||
if headers is None:
|
||||
headers = HEADERS
|
||||
|
||||
print(headers)
|
||||
|
||||
base_url = url + 'users/' + str(user_id) + '/purchases/'
|
||||
params = {
|
||||
"doc_id": doc_id,
|
||||
"bonus_amount": bonus_amount,
|
||||
"sum_total": summ_total,
|
||||
# "sum_total": '0.00',
|
||||
"sum_discount": '10.00',
|
||||
"sum_with_discount ": '90.00',
|
||||
"commit": 'True',
|
||||
# "curr_iso_code": '643',
|
||||
# "redeem_auto": 'True',
|
||||
"curr_iso_name": 'RUB',
|
||||
# "override": 'True',
|
||||
# 'password': 'True',
|
||||
"date": '2024-08-03 12:53:07',
|
||||
}
|
||||
# data = {
|
||||
# 'bonus_amount': '10.00',
|
||||
# 'commit': 'True',
|
||||
# 'curr_iso_code': '643',
|
||||
# 'override': 'True',
|
||||
# # 'password': 'True',
|
||||
# 'sum_total': '0',
|
||||
# }
|
||||
r = requests.post(base_url, headers=headers, json=params)
|
||||
# {"doc_id": "test1", "bonus_amount": "10", "commit": "False", "curr_iso_code": "643", "override": "True", "sum_total": "100"}
|
||||
|
||||
# response = httpx.post(
|
||||
# base_url,
|
||||
# headers=headers,
|
||||
# params=params
|
||||
# )
|
||||
|
||||
# if response.status_code == 200:
|
||||
# return True, response.text
|
||||
# else:
|
||||
# print('params', params)
|
||||
# print('base_url', base_url)
|
||||
# return False, response.text
|
||||
print('params', params)
|
||||
if r.status_code == 201:
|
||||
return True, r.text
|
||||
else:
|
||||
return False, r.text
|
||||
|
||||
|
||||
# print(get_user('1234567890123'))
|
||||
# print(get_user('1002'))
|
||||
# print(new_user('1234567890123'))
|
||||
|
||||
print(bonuses_update('1002', '100.00', '10.00', doc_id='test11'))
|
||||
|
||||
Reference in New Issue
Block a user