Exemple #1
0
def buyerPay(request, *args, **kwargs):
    """Buyer pay, after seller begin to trade."""
    initParam = {}
    app_id = kwargs.get('app_id')
    txn_id = kwargs.get('txn_id')
    #TODO:Can use or verify it later.
    token_id = kwargs.get('token')
    transaction = get_object_or_404(models.Transaction,
                                    pk=txn_id,
                                    app_id=app_id,
                                    buyer_id=request.user.id,
                                    status=2,
                                    is_active=True)
    app = transaction.app

    #Buyser pay for app.
    txn_fee_pct = string.atof(
        common.getSystemParam(key='txn_fee_pct', default=0.01))
    initParam['currency'] = app.currency.currency
    initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT
    initParam['gateway'] = 'paypal'
    gateways = paymentModels.Gateway.objects.filter(
        name__iexact=initParam.get('gateway'))
    acceptGateways = paymentModels.AcceptGateway.objects.filter(
        user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True)
    initParam['seller_account'] = acceptGateways[0].value
    initParam['appsWalk_amount'] = transaction.price * txn_fee_pct
    initParam['seller_amount'] = transaction.price * (1 - txn_fee_pct)
    initParam['txn_id'] = transaction.id
    #The needed operation method in pay.
    initParam['executeMethod'] = updateTransaction
    #The back page, when pay has error.
    if request.session.get('back_page', None):
        del request.session['back_page']
    if request.session.get('back_page_msg', None):
        del request.session['back_page_msg']
    url = '/'.join([
        common.getHttpHeader(request), 'transaction/trade-action/buy',
        str(app.id),
        str(request.user.id)
    ])
    request.session['back_page'] = url
    request.session['back_page_msg'] = 'Trade Action'
    #The success return page, when pay finish.
    if request.session.get('success_page', None):
        del request.session['success_page']
    if request.session.get('success_page_msg', None):
        del request.session['success_page_msg']
    request.session['success_page'] = url
    request.session['success_page_msg'] = 'Trade Action'
    return paymentViews.pay(request, initParam=initParam)
Exemple #2
0
def buyerPay(request, *args, **kwargs):
    """Buyer pay, after seller begin to trade."""
    initParam = {}
    app_id = kwargs.get('app_id')
    txn_id = kwargs.get('txn_id')
    #TODO:Can use or verify it later.
    token_id = kwargs.get('token')
    transaction = get_object_or_404(models.Transaction, pk=txn_id, app_id=app_id, buyer_id=request.user.id, status=2, is_active=True)
    app = transaction.app

    #Buyser pay for app.
    txn_fee_pct = string.atof(common.getSystemParam(key='txn_fee_pct', default=0.01))
    initParam['currency'] = app.currency.currency
    initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT
    initParam['gateway'] = 'paypal'
    gateways = paymentModels.Gateway.objects.filter(name__iexact=initParam.get('gateway'))
    acceptGateways = paymentModels.AcceptGateway.objects.filter(user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True)
    initParam['seller_account'] = acceptGateways[0].value
    initParam['appsWalk_amount'] = transaction.price * txn_fee_pct
    initParam['seller_amount'] = transaction.price * (1 - txn_fee_pct)
    initParam['txn_id'] = transaction.id
    #The needed operation method in pay.
    initParam['executeMethod'] = updateTransaction
    #The back page, when pay has error.
    if request.session.get('back_page', None):
        del request.session['back_page']
    if request.session.get('back_page_msg', None):
        del request.session['back_page_msg']
    url = '/'.join([common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id)])
    request.session['back_page'] = url
    request.session['back_page_msg'] = 'Trade Action'
    #The success return page, when pay finish.
    if request.session.get('success_page', None):
        del request.session['success_page']
    if request.session.get('success_page_msg', None):
        del request.session['success_page_msg']
    request.session['success_page'] = url
    request.session['success_page_msg'] = 'Trade Action'
    return paymentViews.pay(request, initParam=initParam)
Exemple #3
0
def onePriceBuy(request, *args, **kwargs):
    """
        Buyer pay by clicking button 'Buy It Now with 10 USD' in app detail page.
        Note: url include app_id, and publisher_id, because of preventing user to cheat.
    """
    initParam = {}
    app_id = kwargs.get('app_id')
    publisher_id = kwargs.get('publisher_id')
    app = get_object_or_404(appModels.App,
                            pk=app_id,
                            publisher_id=publisher_id,
                            status=2)

    transactions = models.Transaction.objects.filter(app_id=app.id,
                                                     seller_id=publisher_id,
                                                     buyer_id=request.user.id,
                                                     status=1)
    if transactions:
        transaction = transactions[0]
    else:
        transaction = models.Transaction()
        transaction.app = app
        transaction.seller = app.publisher
        transaction.status = 1
        transaction.is_active = False
        transaction.buyer = request.user
        transaction.price = app.one_price
        transaction.buy_type = 1
        paid_expiry_date = string.atoi(
            common.getSystemParam(key='paid_expiry_date', default=7))
        transaction.end_time = datetime.datetime.now() + datetime.timedelta(
            days=paid_expiry_date)
        transaction.save()

        #Log transaction
        transactionsLog = models.TransactionLog()
        transactionsLog.transaction = transaction
        transactionsLog.app = transaction.app
        transactionsLog.status = transaction.status
        transactionsLog.buyer = transaction.buyer
        transactionsLog.price = transaction.price
        transactionsLog.buy_type = transaction.buy_type
        transactionsLog.save()

    initParam['transaction'] = transaction
    initParam['page_source'] = 'one-price'
    if transaction.end_time > datetime.datetime.now():
        initParam['time_remaining'] = time.mktime(
            time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'),
                          '%Y-%m-%d %H:%M:%S'))
    else:
        initParam['time_remaining'] = "Deal Closed"
        initParam['paid_expiry'] = True

    if request.method == 'POST':
        #Buyer credit point judge for bidding.
        min_cp = common.getSystemParam(key='min_cp_for_bid', default=50)
        cp = creditViews.getUserCreditPoint(user=request.user)
        if cp == -1 or cp < string.atoi(min_cp):
            initParam['error_msg'] = _(
                'You are not allowed to buy, because your credit points is too low.'
            )
        else:
            #Buyser pay for app.
            txn_fee_pct = string.atof(
                common.getSystemParam(key='txn_fee_pct', default=0.01))
            initParam['currency'] = app.currency.currency
            initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT
            initParam['gateway'] = 'paypal'
            gateways = paymentModels.Gateway.objects.filter(
                name__iexact=initParam.get('gateway'))
            acceptGateways = paymentModels.AcceptGateway.objects.filter(
                user_id=transaction.seller.id,
                type_id=gateways[0].id,
                is_active=True)
            initParam['seller_account'] = acceptGateways[0].value
            initParam['appsWalk_amount'] = app.one_price * txn_fee_pct
            initParam['seller_amount'] = app.one_price * (1 - txn_fee_pct)
            initParam['txn_id'] = transaction.id
            #The needed operation method in pay.
            initParam['executeMethod'] = updateTransaction
            #The back page, when pay has error.
            if request.session.get('back_page', None):
                del request.session['back_page']
            if request.session.get('back_page_msg', None):
                del request.session['back_page_msg']
            request.session['back_page'] = '/'.join([
                common.getHttpHeader(request), 'query/app-detail',
                str(app.id)
            ])
            request.session['back_page_msg'] = 'App Detail'
            #The success return page, when pay finish.
            if request.session.get('success_page', None):
                del request.session['success_page']
            if request.session.get('success_page_msg', None):
                del request.session['success_page_msg']
            request.session['success_page'] = '/'.join([
                common.getHttpHeader(request), 'transaction/trade-action/buy',
                str(app.id),
                str(request.user.id)
            ])
            request.session['success_page_msg'] = 'Trade Action'
            return paymentViews.pay(request, initParam=initParam)
    return render_to_response('transaction/one_price_buy.html',
                              initParam,
                              context_instance=RequestContext(request))
Exemple #4
0
def onePriceBuy(request, *args, **kwargs):
    """
        Buyer pay by clicking button 'Buy It Now with 10 USD' in app detail page.
        Note: url include app_id, and publisher_id, because of preventing user to cheat.
    """
    initParam = {}
    app_id = kwargs.get('app_id')
    publisher_id = kwargs.get('publisher_id')
    app = get_object_or_404(appModels.App, pk=app_id, publisher_id=publisher_id, status=2)

    transactions = models.Transaction.objects.filter(app_id=app.id, seller_id=publisher_id, buyer_id=request.user.id, status=1)
    if transactions:
        transaction = transactions[0]
    else:
        transaction = models.Transaction()
        transaction.app = app
        transaction.seller = app.publisher
        transaction.status = 1
        transaction.is_active = False
        transaction.buyer = request.user
        transaction.price = app.one_price
        transaction.buy_type = 1
        paid_expiry_date = string.atoi(common.getSystemParam(key='paid_expiry_date', default=7))
        transaction.end_time = datetime.datetime.now() + datetime.timedelta(days=paid_expiry_date)
        transaction.save()

        #Log transaction
        transactionsLog = models.TransactionLog()
        transactionsLog.transaction = transaction
        transactionsLog.app = transaction.app
        transactionsLog.status = transaction.status
        transactionsLog.buyer = transaction.buyer
        transactionsLog.price = transaction.price
        transactionsLog.buy_type = transaction.buy_type
        transactionsLog.save()

    initParam['transaction'] = transaction
    initParam['page_source'] = 'one-price'
    if transaction.end_time > datetime.datetime.now():
        initParam['time_remaining'] = time.mktime(time.strptime(transaction.end_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S'))
    else:
        initParam['time_remaining'] = "Deal Closed"
        initParam['paid_expiry'] = True

    if request.method == 'POST':
        #Buyer credit point judge for bidding.
        min_cp = common.getSystemParam(key='min_cp_for_bid', default=50)
        cp = creditViews.getUserCreditPoint(user=request.user)
        if cp == -1 or cp < string.atoi(min_cp):
            initParam['error_msg'] = _('You are not allowed to buy, because your credit points is too low.')
        else:
            #Buyser pay for app.
            txn_fee_pct = string.atof(common.getSystemParam(key='txn_fee_pct', default=0.01))
            initParam['currency'] = app.currency.currency
            initParam['appsWalk_account'] = settings.APPSWALK_ACCOUNT
            initParam['gateway'] = 'paypal'
            gateways = paymentModels.Gateway.objects.filter(name__iexact=initParam.get('gateway'))
            acceptGateways = paymentModels.AcceptGateway.objects.filter(user_id=transaction.seller.id, type_id=gateways[0].id, is_active=True)
            initParam['seller_account'] = acceptGateways[0].value
            initParam['appsWalk_amount'] = app.one_price * txn_fee_pct
            initParam['seller_amount'] = app.one_price * (1 - txn_fee_pct)
            initParam['txn_id'] = transaction.id
            #The needed operation method in pay.
            initParam['executeMethod'] = updateTransaction
            #The back page, when pay has error.
            if request.session.get('back_page', None):
                del request.session['back_page']
            if request.session.get('back_page_msg', None):
                del request.session['back_page_msg']
            request.session['back_page'] = '/'.join([common.getHttpHeader(request), 'query/app-detail', str(app.id)])
            request.session['back_page_msg'] = 'App Detail'
            #The success return page, when pay finish.
            if request.session.get('success_page', None):
                del request.session['success_page']
            if request.session.get('success_page_msg', None):
                del request.session['success_page_msg']
            request.session['success_page'] = '/'.join([common.getHttpHeader(request), 'transaction/trade-action/buy', str(app.id), str(request.user.id)])
            request.session['success_page_msg'] = 'Trade Action'
            return paymentViews.pay(request, initParam=initParam)
    return render_to_response('transaction/one_price_buy.html', initParam, context_instance=RequestContext(request))