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)
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"))
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'))
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
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
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)