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.
 
 
 
 
 
 

65 lines
1.7 KiB

import logging
import requests
from mixpanel import Mixpanel
from django.conf import settings
from project.celery import app
logger = logging.getLogger('project')
@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}'
resp = requests.post(url, json=body)
try:
resp_json = resp.json()
except:
resp_json = None
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))
else:
logger.info('TRANSACTION_TO_ROISTAT: ' + str(resp))