mirror of
https://git.auk.su/Dinect/bonus-import-tools.git
synced 2025-12-29 02:20:02 +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
|
### Требования для установки через pipenv
|
||||||
|
|
||||||
@@ -55,3 +57,6 @@ cd loyalty-load-tester
|
|||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Запуск exe (TODO)
|
||||||
|
|
||||||
|
- Nuitka
|
||||||
|
|||||||
139
dinect_api.py
139
dinect_api.py
@@ -6,20 +6,147 @@ import json
|
|||||||
import httpx
|
import httpx
|
||||||
# local imports
|
# local imports
|
||||||
import app
|
import app
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
app_token = app.APP_TOKEN
|
app_token = app.APP_TOKEN
|
||||||
pos_token = app.POS_TOKEN
|
pos_token = app.POS_TOKEN
|
||||||
merchant_id = app.MERCHANT_ID
|
merchant_id = app.MERCHANT_ID
|
||||||
|
url = app.API_URI
|
||||||
|
|
||||||
url = 'https://api.dinect.ru/v1/'
|
__version__ = '1.0.0'
|
||||||
|
|
||||||
HEADERS = {
|
HEADERS = {
|
||||||
'Authorization': f'{app_token}',
|
'Authorization': f'dmtoken {pos_token}',
|
||||||
'DM-Authorization': f'{pos_token}',
|
'DM-Authorization': f'dmapptoken {app_token}',
|
||||||
'User-Agent': 'bonus-import-tools-2024',
|
'User-Agent': f'bonus-import-tools-2024 v.{__version__}',
|
||||||
'Accept': 'application/json',
|
'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',
|
'Accept-Charset': 'utf-8',
|
||||||
'Connection': 'close',
|
'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