Esempio n. 1
0
def process_account_response(request, transaction_id, access_token, success):
    """
    Process payment via online account like PayPal, Amazon ...etc
    """
    payment_txn = get_object_or_404(Transaction, id=int(transaction_id))
    try:
        if payment_txn.get_param('access_token') != access_token:
            raise Http404
    except TransactionParam.DoesNotExist:
        raise Http404

    if request.method == "GET":
        order = payment_txn.order
        gateway = payment_txn.gateway

        try:
            if gateway.name == Gateway.PAYPAL:
                processor = PayPal(gateway)
                if success:
                    payer_id = request.GET['PayerID']
                    processor.execute_account_payment(payer_id, payment_txn, request.user)
                    return HttpResponseRedirect(reverse('sales_checkout_receipt', args=[order.id, order.receipt_code]))
                else:
                    processor.cancel_account_payment(payment_txn, request.user)
                    request.session['processing_message'] = 'Your order has been canceled.'
                    return HttpResponseRedirect(reverse('payments_processing_message'))
            else:
                raise ImproperlyConfigured('Doorsale doesn\'t yet support payment with %s account.'
                                           % gateway.get_name_display())

        except DoorsaleError as e:
            request.session['processing_error'] = e.message
            return HttpResponseRedirect(reverse('payments_processing_message'))

    raise Http404
Esempio n. 2
0
def process_credit_card(request, order_id, receipt_code):
    """
    Process credit card payment
    """
    if request.method == 'POST':
        error = None
        form = CreditCardForm(request.POST)
        order = get_object_or_404(Order, id=order_id, receipt_code=receipt_code)

        if form.is_valid():
            data = form.cleaned_data
            gateway = data['gateway']

            if gateway.name == Gateway.PAYPAL:
                processor = PayPal(gateway)
            elif gateway.name == Gateway.STRIPE:
                processor = Stripe(gateway)
            else:
                raise ImproperlyConfigured('%s is not supported gateway for processing credit cards.' % gateway)

            try:
                processor.credit_card_payment(data['card'], order, request.user)
                return render(request, 'payments/credit_card_processed.html', {'order': order})
            except DoorsaleError as e:
                error = e.message

        gateways = Gateway.get_gateways()
        default_currency = get_default_currency(request)
        return render(request, 'payments/process_online.html',
                      {'form': form, 'order': order, 'gateways': gateways,
                       'default_currency': default_currency, 'error': error})

    raise Http404
Esempio n. 3
0
def process_credit_card(request, order_id, receipt_code):
    """
    Process credit card payment
    """
    if request.method == 'POST':
        error = None
        form = CreditCardForm(request.POST)
        order = get_object_or_404(Order,
                                  id=order_id,
                                  receipt_code=receipt_code)

        if form.is_valid():
            data = form.cleaned_data
            gateway = data['gateway']

            if gateway.name == Gateway.PAYPAL:
                processor = PayPal(gateway)
            elif gateway.name == Gateway.STRIPE:
                processor = Stripe(gateway)
            else:
                raise ImproperlyConfigured(
                    '%s is not supported gateway for processing credit cards.'
                    % gateway)

            try:
                processor.credit_card_payment(data['card'], order,
                                              request.user)
                return render(request, 'payments/credit_card_processed.html',
                              {'order': order})
            except DoorsaleError as e:
                error = e.message

        gateways = Gateway.get_gateways()
        default_currency = get_default_currency(request)
        return render(
            request, 'payments/process_online.html', {
                'form': form,
                'order': order,
                'gateways': gateways,
                'default_currency': default_currency,
                'error': error
            })

    raise Http404
Esempio n. 4
0
def process_account_request(request, order_id, receipt_code):
    """
    Process payment via online account like PayPal, Amazon ...etc
    """
    order = get_object_or_404(Order, id=order_id, receipt_code=receipt_code)
    if request.method == "POST":
        gateway_name = request.POST["gateway_name"]
        gateway = get_object_or_404(Gateway, name=gateway_name)

        try:
            if gateway.name == Gateway.PAYPAL:
                processor = PayPal(gateway)
                return HttpResponseRedirect(processor.create_account_payment(order, request.user))
            else:
                raise ImproperlyConfigured('Doorsale doesn\'t yet support payment with %s account.'
                                           % gateway.get_name_display())
        except DoorsaleError as e:
            request.session['processing_error'] = e.message
            return HttpResponseRedirect(reverse('payments_processing_message'))

    raise Http404
Esempio n. 5
0
def process_account_request(request, order_id, receipt_code):
    """
    Process payment via online account like PayPal, Amazon ...etc
    """
    order = get_object_or_404(Order, id=order_id, receipt_code=receipt_code)
    if request.method == "POST":
        gateway_name = request.POST["gateway_name"]
        gateway = get_object_or_404(Gateway, name=gateway_name)

        try:
            if gateway.name == Gateway.PAYPAL:
                processor = PayPal(gateway)
                return HttpResponseRedirect(
                    processor.create_account_payment(order, request.user))
            else:
                raise ImproperlyConfigured(
                    'Doorsale doesn\'t yet support payment with %s account.' %
                    gateway.get_name_display())
        except DoorsaleError as e:
            request.session['processing_error'] = e.message
            return HttpResponseRedirect(reverse('payments_processing_message'))

    raise Http404
Esempio n. 6
0
def process_account_response(request, transaction_id, access_token, success):
    """
    Process payment via online account like PayPal, Amazon ...etc
    """
    payment_txn = get_object_or_404(Transaction, id=int(transaction_id))
    try:
        if payment_txn.get_param('access_token') != access_token:
            raise Http404
    except TransactionParam.DoesNotExist:
        raise Http404

    if request.method == "GET":
        order = payment_txn.order
        gateway = payment_txn.gateway

        try:
            if gateway.name == Gateway.PAYPAL:
                processor = PayPal(gateway)
                if success:
                    payer_id = request.GET['PayerID']
                    processor.execute_account_payment(payer_id, payment_txn,
                                                      request.user)
                    return HttpResponseRedirect(
                        reverse('sales_checkout_receipt',
                                args=[order.id, order.receipt_code]))
                else:
                    processor.cancel_account_payment(payment_txn, request.user)
                    request.session[
                        'processing_message'] = 'Your order has been canceled.'
                    return HttpResponseRedirect(
                        reverse('payments_processing_message'))
            else:
                raise ImproperlyConfigured(
                    'Doorsale doesn\'t yet support payment with %s account.' %
                    gateway.get_name_display())

        except DoorsaleError as e:
            request.session['processing_error'] = e.message
            return HttpResponseRedirect(reverse('payments_processing_message'))

    raise Http404