#!/usr/bin/python # -*- coding: utf-8 -*- # __author__ = 'szhdanoff@gmail.com' import os 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 __version__ = '1.0.0' HEADERS = { '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-Charset': 'utf-8', 'Connection': 'close', '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'))