예제 #1
0
def show_me_the_money(sender, **kwargs):
    ipn_obj = sender
    order = get_object_or_404(Order, invoice_id=ipn_obj.invoice)

    # PREVENTS DUPLICATES
    if order.status == Order.STATUS_PAID or order.status == Order.STATUS_PAYMENT_FLAGGED:
        return

    # UPDATE THE ORDER DETAILS
    order.status = Order.STATUS_PAID
    order.date_paid = ipn_obj.payment_date
    order.is_paid = True
    order.save()

    # IF THERE WAS A SINGLE USE DISCOUNT, UPDATE IT
    if order.discount:
        if order.discount.single_use == True:
            order.discount.is_active = False
            order.discount.save()

    # SEND THE EMAILS
    if ipn_obj.flag == True:
        from emailer.views import _payment_flagged
        _payment_flagged(order)
    else:
        from emailer.views import _payment_success
        _payment_success(order)

    # NOW CREATE A CUSTOMER PACKAGE
    from logistics.views import _create_customer_package
    _create_customer_package(order)
예제 #2
0
def fake_checkout(request, order_id):

    order = get_object_or_404(Order, pk=order_id)

    # DOUBLE CHECK THE ORDER HAS 100% DISCOUNT
    # if not order.discount or order.discount.discount_value < 1:
    #    return HttpResponseRedirect(reverse('order_confirm'))

    # ORGANISE THE ORDER AS IF IT HAD BEEN PAID LIKE NORMAL
    order.status = Order.STATUS_PAID
    order.date_paid = datetime.now()
    order.notes = "100% discount order, not paid via paypal."
    order.save()

    from emailer.views import _payment_success

    _payment_success(order)

    # NOW CREATE A CUSTOMER PACKAGE
    from logistics.views import _create_customer_package

    _create_customer_package(order)

    from shop.utils import _empty_basket

    _empty_basket(request)

    return HttpResponseRedirect(reverse("order_complete"))
예제 #3
0
def show_me_the_money(sender, **kwargs):
    ipn_obj = sender
    order = get_object_or_404(Order, invoice_id=ipn_obj.invoice)
    
    # PREVENTS DUPLICATES
    if order.status == Order.STATUS_PAID or order.status == Order.STATUS_PAYMENT_FLAGGED:
        return
    
    # UPDATE THE ORDER DETAILS
    order.status = Order.STATUS_PAID
    order.date_paid = ipn_obj.payment_date
    order.is_paid = True
    order.save()
    
    
    # IF THERE WAS A SINGLE USE DISCOUNT, UPDATE IT
    if order.discount:
        if order.discount.single_use == True:
            order.discount.is_active = False
            order.discount.save()
    
    # SEND THE EMAILS
    if ipn_obj.flag == True:
        from emailer.views import _payment_flagged
        _payment_flagged(order)
    else:
        from emailer.views import _payment_success 
        _payment_success(order)
        
            
    # NOW CREATE A CUSTOMER PACKAGE
    from logistics.views import _create_customer_package
    _create_customer_package(order)
예제 #4
0
def fake_checkout(request, order_id):

    order = get_object_or_404(Order, pk=order_id)

    # DOUBLE CHECK THE ORDER HAS 100% DISCOUNT
    #if not order.discount or order.discount.discount_value < 1:
    #    return HttpResponseRedirect(reverse('order_confirm'))

    # ORGANISE THE ORDER AS IF IT HAD BEEN PAID LIKE NORMAL
    order.status = Order.STATUS_PAID
    order.date_paid = datetime.now()
    order.notes = '100% discount order, not paid via paypal.'
    order.save()

    from emailer.views import _payment_success
    _payment_success(order)

    # NOW CREATE A CUSTOMER PACKAGE
    from logistics.views import _create_customer_package
    _create_customer_package(order)

    from shop.utils import _empty_basket
    _empty_basket(request)

    return HttpResponseRedirect(reverse('order_complete'))
예제 #5
0
def order_confirm(request):

    try:
        order = get_object_or_404(Order, id=request.session['ORDER_ID'])
    except:
        problem = _(
            "You don't have any items in your basket, so you can't process an order!"
        )
        return _render(request, 'shop/order-problem.html', locals())

    shopper = order.owner
    order.basket = Basket.objects.get(id=request.session['BASKET_ID'])
    order.save()

    basket = _get_basket_value(request)

    amount_in_cents = int(float(basket['total_price']) *
                          100)  # for stupid stripe...

    # THIS HANDLES STRIPE
    if request.method == 'POST':

        stripe.api_key = settings.STRIPE_SECRET_KEY
        token = request.POST['stripeToken']

        try:
            charge = stripe.Charge.create(
                amount=amount_in_cents,
                currency=basket['currency'].code.lower(),
                card=token,
                description=order.owner.user.email)

            # UPDATE THE ORDER DETAILS
            order.status = Order.STATUS_PAID
            order.date_paid = datetime.now()
            order.save()

            # IF THERE WAS A SINGLE USE DISCOUNT, UPDATE IT
            if order.discount:
                if order.discount.single_use == True:
                    order.discount.is_active = False
                    order.discount.save()

            from emailer.views import _payment_success
            _payment_success(order)

            # NOW CREATE A CUSTOMER PACKAGE
            from logistics.views import _create_customer_package
            _create_customer_package(order)

            return HttpResponseRedirect(
                reverse('order_complete', args=[order.hashkey]))
        except stripe.CardError, e:

            # do we need to do something here like show an error message?!

            pass
예제 #6
0
def order_confirm(request):

    try:
        order = get_object_or_404(Order, id=request.session["ORDER_ID"])
    except:
        problem = _("You don't have any items in your basket, so you can't process an order!")
        return _render(request, "shop/order-problem.html", locals())

    shopper = order.owner
    order.basket = Basket.objects.get(id=request.session["BASKET_ID"])
    order.save()

    basket = _get_basket_value(request)

    amount_in_cents = int(float(basket["total_price"]) * 100)  # for stupid stripe...

    # THIS HANDLES STRIPE
    if request.method == "POST":

        stripe.api_key = settings.STRIPE_SECRET_KEY
        token = request.POST["stripeToken"]

        try:
            charge = stripe.Charge.create(
                amount=amount_in_cents,
                currency=basket["currency"].code.lower(),
                card=token,
                description=order.owner.user.email,
            )

            # UPDATE THE ORDER DETAILS
            order.status = Order.STATUS_PAID
            order.date_paid = datetime.now()
            order.save()

            # IF THERE WAS A SINGLE USE DISCOUNT, UPDATE IT
            if order.discount:
                if order.discount.single_use == True:
                    order.discount.is_active = False
                    order.discount.save()

            from emailer.views import _payment_success

            _payment_success(order)

            # NOW CREATE A CUSTOMER PACKAGE
            from logistics.views import _create_customer_package

            _create_customer_package(order)

            return HttpResponseRedirect(reverse("order_complete", args=[order.hashkey]))
        except stripe.CardError, e:

            # do we need to do something here like show an error message?!

            pass
예제 #7
0
 def test_payment_success_email(self):
     """Send order confirmation email"""
     
     
     # GET AN ORDER
     order = Order.objects.filter(
         date_paid__isnull=False, 
         is_giveaway=False).order_by('?')[0]
     
     # TEST IT
     self.assertEqual(_payment_success(order), True)
     self.assertEquals(len(mail.outbox), 2)
     # self.assertEquals(mail.outbox[0].subject, 'Order confirmed - minrivertea.com')
     mail.outbox = []
     
     # TEST IN GERMAN
     translation.activate('de')
     order = Order.objects.filter(owner__language='de').order_by('?')[0]
     self.assertEqual(_payment_success(order), True)
     self.assertEquals(len(mail.outbox), 2)