diff --git a/apps/payment/tasks.py b/apps/payment/tasks.py index e5a3f296..0ad563b2 100644 --- a/apps/payment/tasks.py +++ b/apps/payment/tasks.py @@ -16,3 +16,17 @@ def transaction_to_mixpanel(user_id, amount, time, product_type): 'product_type': product_type, } ) + + +@app.task +def product_payment_to_mixpanel(user_id, event_name, time, **kwargs): + mix = Mixpanel(settings.MIX_TOKEN) + properties = { + '$time': time, + } + properties.update(kwargs) + mix.track( + user_id, + event_name, + properties=properties, + ) diff --git a/apps/payment/views.py b/apps/payment/views.py index bb44f02f..03fb5402 100644 --- a/apps/payment/views.py +++ b/apps/payment/views.py @@ -18,7 +18,7 @@ from paymentwall import Pingback, Product, Widget from apps.course.models import Course from apps.school.models import SchoolSchedule -from apps.payment.tasks import transaction_to_mixpanel +from apps.payment.tasks import transaction_to_mixpanel, product_payment_to_mixpanel from .models import AuthorBalance, CoursePayment, SchoolPayment @@ -182,6 +182,28 @@ class PaymentwallCallbackView(View): date_end = now() + timedelta(days=30) payment.date_start = date_start payment.date_end = date_end + if product_type_name == 'course': + properties = { + 'status': payment.status, + 'course': payment.course.id, + 'created_at': payment.created_at, + 'update_at': payment.update_at, + } + elif product_type_name == 'school': + properties = { + 'status': payment.status, + 'weekdays': payment.weekdays, + 'date_start': payment.date_start, + 'date_end': payment.date_end, + 'created_at': payment.created_at, + 'update_at': payment.update_at, + } + product_payment_to_mixpanel.delay( + payment.user.id, + f'{school_payment.title()} payment', + now().strftime('%Y-%m-%dT%H:%M:%S'), + properties=properties, + ) payment.save() author_balance = getattr(payment, 'author_balance', None)