You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
89 lines
2.6 KiB
import logging
|
|
import requests
|
|
import json
|
|
import datetime
|
|
|
|
from mixpanel import Mixpanel
|
|
|
|
from django.conf import settings
|
|
|
|
from project.celery import app
|
|
|
|
from celery.utils.log import get_task_logger
|
|
|
|
logger = get_task_logger(__name__)
|
|
logger_roistat = get_task_logger('roistat')
|
|
|
|
|
|
@app.task
|
|
def transaction_to_mixpanel(user_id, amount, time, product_type):
|
|
mix = Mixpanel(settings.MIX_TOKEN)
|
|
mix.people_track_charge(
|
|
user_id,
|
|
amount,
|
|
{
|
|
'$time': time,
|
|
'product_type': product_type,
|
|
}
|
|
)
|
|
|
|
|
|
@app.task
|
|
def product_payment_to_mixpanel(user_id, event_name, time, properties):
|
|
mix = Mixpanel(settings.MIX_TOKEN)
|
|
props = {
|
|
'$time': time,
|
|
}
|
|
props.update(properties)
|
|
mix.track(
|
|
user_id,
|
|
event_name,
|
|
properties=props,
|
|
)
|
|
|
|
|
|
@app.task
|
|
def transaction_to_roistat(user_id, payment_id, event_name, amount, time, status, product_type, roistat_visit):
|
|
body = [{
|
|
'id': str(payment_id),
|
|
'name': event_name,
|
|
'date_create': time,
|
|
'status': str(status),
|
|
'roistat': str(roistat_visit) if roistat_visit else None,
|
|
'price': str(amount),
|
|
'client_id': str(user_id),
|
|
'fields': {
|
|
'product_type': product_type,
|
|
}
|
|
}]
|
|
project = settings.ROISTAT_PROJECT
|
|
key = settings.ROISTAT_KEY
|
|
url = settings.ROISTAT_API_URL + \
|
|
f'/project/add-orders?key={key}&project={project}'
|
|
|
|
payload = json.dumps(body)
|
|
headers = {'content-type': 'application/json'}
|
|
|
|
resp = requests.request("POST", url, data=payload, headers=headers)
|
|
|
|
try:
|
|
resp_json = resp.json()
|
|
except:
|
|
resp_json = None
|
|
|
|
with open("./roistat.log", "a") as text_file:
|
|
|
|
if resp.status_code != 200 or not resp_json or not resp_json.get('processed'):
|
|
logger.error('TRANSACTION_TO_ROISTAT for payment # %d, %s RUB: %s' % (
|
|
payment_id, amount, resp.text))
|
|
logger_roistat.debug('TRANSACTION_TO_ROISTAT for payment # %d, %s RUB: %s' % (
|
|
payment_id, amount, resp.text))
|
|
|
|
text_file.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ' TRANSACTION_TO_ROISTAT for payment # %d, %s RUB: %s \n' % (
|
|
payment_id, amount, resp.text))
|
|
else:
|
|
logger.info('TRANSACTION_TO_ROISTAT: ' + str(resp.text))
|
|
logger_roistat.debug('TRANSACTION_TO_ROISTAT: ' + str(resp.text))
|
|
|
|
text_file.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ' TRANSACTION_TO_ROISTAT for payment # %d, %s RUB: %s \n' % (
|
|
payment_id, amount, resp.text))
|
|
|