Esempio n. 1
0
 def form_valid(self, form):
     stripe_token = form.cleaned_data.get('stripe_token')
     email = form.cleaned_data.get('stripe_email')
     amount = int(form.cleaned_data.get('amount')) if int(form.cleaned_data.get('amount_choice')) == -1 else int(form.cleaned_data.get('amount_choice'))
     x_rate = ExchangeRate.objects.last()
     if not x_rate:
         raise 'Please set up ExchangeRate'
     else:
         x_rate = x_rate.rate
     usd_amount = amount * x_rate
     try:
         stripe.api_key = STRIPE_API_KEY
         charge = stripe.Charge.create(
                 amount=int(usd_amount * 100),
                 currency='usd',
                 card=stripe_token,
                 description=email)
         if charge.paid and int(usd_amount * 100) == charge.amount:
             UserProfile.objects.filter(user=self.request.user).update(balance=F('balance')+amount)
             purchase = CurrencyPurchase(
                 user=self.request.user,
                 amount=amount,
                 usd_amount=usd_amount)
             purchase.save()
             messages.success(self.request, 'Purchase of %d coins completed successfully' % (amount,))
     except stripe.CardError:
         messages.error(self.request,
                        "Your chard could not be charged. Please check the number and/or contact your credit card")
     except:
         messages.error(self.request,
                        "Something has happened wrong. Please contact site administrator.")
     return super(BalanceView, self).form_valid(form)
Esempio n. 2
0
def buy(request):
    if request.method == 'POST':
        stripe_token = request.POST['stripeToken']
        email = request.POST['stripeEmail']
        print stripe_token, email
        amount = float(request.POST['up_amount'])
        # product = Product.query.get(product_id)
        x_rate = 2.0  # TODO: get x-rate from db
        usd_amount = amount * x_rate
        try:
            # charge = stripe.Charge.create(
            #         amount=int(usd_amount * 100),
            #         currency='usd',
            #         card=stripe_token,
            #         description=email)

            profile = UserProfile.objects.get(user=request.user)
            profile.balance += amount
            profile.save()

            purchase = CurrencyPurchase(
                user=request.user,
                amount=amount,
                usd_amount=usd_amount)
            purchase.save()

        except stripe.CardError, e:
            return HttpResponse("""<html><body><h1>Card Declined</h1><p>
                Your chard could not be charged.
                Please check the number and/or contact your credit card
                company.
                </p></body></html>""")
        # print charge
        return HttpResponse(
            "Puchase of {} coins completed successfully"
            .format(amount))