コード例 #1
0
ファイル: views.py プロジェクト: digideskio/django_events
def cart_checkout(request, template='events/cart_checkout.html'):
    context = {}
    cart = CartManager(request)
    if request.method == 'POST':
        try:
            stripe.api_key = settings.STRIPE_PRIVATE_KEY
            # get the credit card details submitted by the form
            token = request.POST['stripeToken']
            # create the charge on Stripe's servers - this will charge the user's card
            charge = stripe.Charge.create(
                amount=int(cart.summary()*100), # amount in cents
                currency="usd",
                card=token,
                description=request.user.email
            )
            if charge.get('paid'):
                subject = _(u'[Django Events] Your purchase has been accepted.')
                message = 'You bought:\n'
                for ticket_order in cart:
                    message += '%s * %s for %s\n' % (ticket_order.quantity,
                                                     ticket_order.ticket.name,
                                                     ticket_order.ticket.event.name)
                send_mail(subject, message, '*****@*****.**',
                          [request.user.email], fail_silently=True)
                cart.check_out()
                return HttpResponse('TRUE')
            return HttpResponse('FALSE')
        except:
            import traceback
            traceback.print_exc()
コード例 #2
0
    def done(self, form_list, **kwargs):
        cart = Cart(self.request)
        cart.create_cart()
        order = Order(cart=cart.cart)

        client = form_list[0].save(commit=False)
        address = form_list[1].save()
        client.shipping_address = address
        billing_address = address
        if condition_step_3(self):
            billing_address = form_list[2].save()
        client.billing_address = billing_address
        client.save()

        order.client = client

        payment_option = self.get_cleaned_data_for_step("4").get("payment_options", None)
        print ("PAYMENT {0}".format(self.get_cleaned_data_for_step("4")))
        language = translation.get_language().upper()
        if payment_option == "PayPal":
            result = self.create_paypalpayment(cart)
            order.payment = result.paypal_payment_db
            order.save()
            # we need to do the checkout after saving the order,
            # if something went wrong
            cart.check_out()

            mail_result = EMailTemplate.objects.send("{0}_ORDER_SUCCESS_PAYPAL".format(language), client.email,
                                                     {"order": order, "billing_address": billing_address,
                                                      "shipping_address": address,
                                                      "paypal_url": order.payment.approval_url})

            if result.payment.error:
                logger.error("PayPal payment went wrong! Errors: {0}".format(result.payment.error))
                return render(self.request, "cuescience_shop/failure_paypal.html", {"order": order})
            elif not result.payment.errors and order.payment.approval_url:
                return render(self.request, "cuescience_shop/success_paypal.html", {"order": order})

        elif payment_option == "Prepayment":
            payment = PrePayment()
            payment.save()
            order.payment = payment
            order.save()
            cart.check_out()
            mail_result = EMailTemplate.objects.send("{0}_ORDER_SUCCESS_PREPAYMENT".format(language), client.email,
                                                     {"order": order, "billing_address": billing_address,
                                                      "shipping_address": address})
            return render(self.request, "cuescience_shop/success.html", {"order": order})

        return render_to_response("cuescience_shop/cart/index.html", RequestContext(self.request))