Exemple #1
0
def withdraw(request):
    form = WithdrawForm(data=request.POST or None)
    if request.method == 'POST' and form.is_valid():
        ps = form.cleaned_data.get('ps')

        if not request.user.get_ps_account(ps):
            form.add_error('ps', _('Укажите аккаунт платежной системы в настройках'))
        else:
            try:
                amount = form.cleaned_data.get('amount')
                tr = UserTransaction()
                tr.do_transaction_withdraw(
                    user=request.user,
                    ps=ps,
                    amount=amount
                )
                if request.user.is_alerts_other:
                    request.user.email_user(_('Запрос на вывод'), 'mail/withdraw_request.html', dict(
                        ps=tr.transaction.get_ps_display(), amount=amount, balance=tr.balance_after,
                        comission=settings.WITHDRAW_COMISSION_PERCENT,
                        for_withdraw=calculate_withdraw_amount(amount)
                    ))
                messages.success(request, _('Запрос на вывод отправлен'))
                return redirect('account_withdraw')
            except InsufficientBalance:
                form.add_error('amount', _('Недостаточно средств'))

    return render(request, 'default_set/withdraw.html',
                  dict(form=form),
    )
Exemple #2
0
def accrual_balances():
    users = UserProfile.objects.all()
    for user in users:

        for ps in user.get_ps_instances():
            plan = Plan.objects.get_plan_by_amount(ps.balance)

            if plan:
                delta = timezone.now() - deltas[plan.period]
                accrual_transactions = user.transactions.filter(ps=ps.get_name,
                                                                transaction_type=TRANSACTION_ACCRUAL,
                                                                is_ended=True, created__gte=delta)
                if not accrual_transactions:
                    utr = UserTransaction()
                    utr.do_transaction_accrual(user, ps.get_name, ps.balance / Decimal(100) * plan.percent)
Exemple #3
0
def deposit_result(request):
    if not request.method == 'POST':
        return HttpResponse('no')

    retval = 'error'
    if request.POST.get('m_operation_id', None) and request.POST.get(
            'm_sign', None):

        arHash = (request.POST['m_operation_id'],
                  request.POST['m_operation_ps'],
                  request.POST['m_operation_date'],
                  request.POST['m_operation_pay_date'], request.POST['m_shop'],
                  request.POST['m_orderid'], request.POST['m_amount'],
                  request.POST['m_curr'], request.POST['m_desc'],
                  request.POST['m_status'], settings.PAYEER_SHOP_KEY)
        order_id = request.POST.get('m_orderid')
        sign_hash = hashlib.sha256(
            ':'.join(arHash).encode('utf-8')).hexdigest().upper()
        if request.POST.get('m_sign') == sign_hash and request.POST.get(
                'm_status') == 'success':
            retval = order_id + '|success'
            tr = Transaction.objects.get(pk=int(request.POST.get('m_orderid')))
            if tr.amount == Decimal(request.POST.get(
                    'm_amount')) and tr.ps == NAME and not tr.is_ended:
                transaction = UserTransaction()
                transaction.do_transaction_deposit(
                    tr.user, tr, request.POST.get('m_operation_id'))
            else:
                retval = order_id + "|error"
        else:
            retval = order_id + "|error"

    return HttpResponse(retval)
def accrual_balances():
    users = UserProfile.objects.all()
    for user in users:

        for ps in user.get_ps_instances():
            plan = Plan.objects.get_plan_by_amount(ps.balance)

            if plan:
                delta = timezone.now() - deltas[plan.period]
                accrual_transactions = user.transactions.filter(
                    ps=ps.get_name,
                    transaction_type=TRANSACTION_ACCRUAL,
                    is_ended=True,
                    created__gte=delta)
                if not accrual_transactions:
                    utr = UserTransaction()
                    utr.do_transaction_accrual(
                        user, ps.get_name,
                        ps.balance / Decimal(100) * plan.percent)
Exemple #5
0
def deposit_result(request):
    if not request.method == 'POST':
        return HttpResponse('no')

    outhash = hashlib.md5('{}:{}:{}:USD:{}:{}:{}:{}'.format(
        request.POST.get('PAYMENT_ID'),
        settings.PM_WALLET,
        request.POST.get('PAYMENT_AMOUNT'),
        request.POST.get('PAYMENT_BATCH_NUM'),
        request.POST.get('PAYER_ACCOUNT'),
        hashlib.md5(settings.PM_PASSPHRASE.encode('utf-8')).hexdigest().upper(),
        request.POST.get('TIMESTAMPGMT')).encode('utf-8')).hexdigest()

    if str(outhash).upper() == str(request.POST.get('V2_HASH')).upper():
        tr = Transaction.objects.get(pk=int(request.POST.get('PAYMENT_ID')))
        if tr.amount == Decimal(request.POST.get('PAYMENT_AMOUNT')) and tr.ps == NAME and not tr.is_ended:
            transaction = UserTransaction()
            transaction.do_transaction_deposit(tr.user, tr, request.POST['PAYMENT_BATCH_NUM'])

    return HttpResponse('ok')
def accrual_deposits():
    deposits = Deposit.objects.filter(is_ended=False)
    for deposit in deposits:
        plan = deposit.plan
        time_elapsed = timezone.now() - deposit.last_update
        delta = deltas[plan.period]
        if time_elapsed >= delta:
            deposit.last_update = timezone.now()
            deposit.save()
            utr = UserTransaction()
            utr.do_transaction_accrual(deposit.user,
                                       deposit.ps,
                                       deposit.amount / Decimal(100) *
                                       plan.percent,
                                       deposit=deposit)

        if int((timezone.now() - deposit.created).total_seconds() /
               3600) >= plan.end_period:
            deposit.is_ended = True
            deposit.save()

            if plan.deposit_return:
                utr = UserTransaction()
                utr.do_deposit_return(deposit)
Exemple #7
0
def accrual_deposits():
    deposits = Deposit.objects.filter(is_ended=False)
    for deposit in deposits:
        plan = deposit.plan
        time_elapsed = timezone.now()-deposit.last_update
        delta = deltas[plan.period]
        if time_elapsed >= delta:
            deposit.last_update = timezone.now()
            deposit.save()
            utr = UserTransaction()
            utr.do_transaction_accrual(deposit.user, deposit.ps, deposit.amount / Decimal(100) * plan.percent, deposit=deposit)

        if int((timezone.now()-deposit.created).total_seconds()/3600) >= plan.end_period:
            deposit.is_ended = True
            deposit.save()

            if plan.deposit_return:
                utr = UserTransaction()
                utr.do_deposit_return(deposit)