diff --git a/apps/payment/management/commands/send_transactions_to_roistat.py b/apps/payment/management/commands/send_transactions_to_roistat.py new file mode 100644 index 00000000..fa18c1d8 --- /dev/null +++ b/apps/payment/management/commands/send_transactions_to_roistat.py @@ -0,0 +1,34 @@ +from django.core.management.base import BaseCommand, CommandError +from django.utils.timezone import now +from paymentwall.pingback import Pingback + +from apps.payment.tasks import transaction_to_roistat +from apps.payment.models import Payment + + +class Command(BaseCommand): + help = 'Send ' + + def add_arguments(self, parser): + parser.add_argument( + 'start_id', type=int, + help='Start payment id', + ) + + def handle(self, *args, **options): + start_id = options.get('start_id') + payments = Payment.objects.filter(id__gte=start_id, status__in=Payment.PW_PAID_STATUSES) + for payment in payments: + pingback = Pingback(payment.data) + splitted = pingback.get_product().get_id().split('_') + product_type_name, payment_id = '_'.join(splitted[:-1]), splitted[-1] + transaction_to_roistat.delay( + payment.user.id, + payment.id, + f'{product_type_name.title()} payment', + payment.amount, + now().strftime('%Y-%m-%d %H:%M:%S'), + pingback.get_type(), + product_type_name, + payment.roistat_visit, + ) diff --git a/apps/payment/views.py b/apps/payment/views.py index ec9bef56..b9491321 100644 --- a/apps/payment/views.py +++ b/apps/payment/views.py @@ -211,8 +211,8 @@ class PaymentwallCallbackView(View): pingback = Pingback(payment_raw_data, self.get_request_ip()) if pingback.validate(): - spltted = pingback.get_product().get_id().split('_') - product_type_name, payment_id = '_'.join(spltted[:-1]), spltted[-1] + splitted = pingback.get_product().get_id().split('_') + product_type_name, payment_id = '_'.join(splitted[:-1]), splitted[-1] if product_type_name == 'course': product_payment_class = CoursePayment