예제 #1
0
def GenericPayment(request):
	if request.method == 'POST':
		form = PaymentForm(request.POST)
		if form.is_valid():
			# account secret key 
			stripe.api_key = settings.STRIPE_SECRET_KEY
			
			# get the payment details from the form
			token = request.POST.get('stripeToken')
			charge_amt = int(request.POST.get('amount'))
			pay_name = request.POST.get('name')
			pay_email = request.POST.get('email')
			comment  = request.POST.get('comment')

			# create the charge on Stripe's servers - this will charge the user's card
			charge_descr = "payment from %s (%s)." % (pay_name, pay_email)
			if comment:
				charge_descr += " comment: %s" % comment
			charge = stripe.Charge.create(
					amount=charge_amt*100, # convert dollars to cents
					currency="usd",
					card=token,
					description= charge_descr
			)

			# TODO error handling if charge does not succeed
			return HttpResponseRedirect("/thanks")
	else:
		form = PaymentForm()		
	return render(request, "payment.html", {'form': form, 
		'stripe_publishable_key': settings.STRIPE_PUBLISHABLE_KEY})
예제 #2
0
def GenericPayment(request):
    if request.method == "POST":
        form = PaymentForm(request.POST)
        if form.is_valid():
            # account secret key
            stripe.api_key = settings.STRIPE_SECRET_KEY

            # get the payment details from the form
            token = request.POST.get("stripeToken")
            charge_amt = int(request.POST.get("amount"))
            pay_name = request.POST.get("name")
            pay_email = request.POST.get("email")
            comment = request.POST.get("comment")

            # create the charge on Stripe's servers - this will charge the user's card
            charge_descr = "payment from %s (%s)." % (pay_name, pay_email)
            if comment:
                charge_descr += " comment: %s" % comment
            charge = stripe.Charge.create(
                amount=charge_amt * 100,  # convert dollars to cents
                currency="usd",
                card=token,
                description=charge_descr,
            )

            # TODO error handling if charge does not succeed
            return HttpResponseRedirect("/thanks")
    else:
        form = PaymentForm()
    return render(request, "payment.html", {"form": form, "stripe_publishable_key": settings.STRIPE_PUBLISHABLE_KEY})
예제 #3
0
def payment_item(request, payment_pk):
    payment = get_object_or_404(Payment, pk=payment_pk)

    if "delete" in request.GET:
        check_for_csrf_token(request, (request.GET).get("csrf_token"))
        payment.delete()
        messages.success(request, "Payment was successfully deleted!")
        return redirect("core.payment_list")

    if request.method == "POST":
        payment_form = PaymentForm(request.POST, instance=payment)
        if payment_form.is_valid():
            payment_form.save()
            messages.success(request, "Payment was successfully updated!")
            return redirect("core.payment_item", payment_pk=payment_pk)
    else:
        payment_form = PaymentForm(instance=payment)

    return render(request, "payment_item.html", {
        "payment_form": payment_form,
        "payment_pk": payment.pk,
    })
예제 #4
0
파일: views.py 프로젝트: camilo1rp/paysy
 def post(self, request):
     form = PaymentForm(request.POST)
     if form.is_valid():
         cd = form.cleaned_data
         print(cd)
         payload = {"id_pago": cd['id_pago'],
                    "pay_gateway": cd['pay_gateway'].id,
                    "tax": cd['tax'],
                    "total": cd['total'],
                    "config_name": cd['config_name'].name,
                    "pay_details": cd['pay_details'],
                    "customer": {
                        "email": cd['email'],
                        "document_type": cd['document_type'],
                        "document": cd['document'],
                        "name": cd['name'],
                        "surname": cd['surname'],
                        "phone": cd['phone']
                    }
                    }
         serialized_json = JSONRenderer().render(payload)
         root = request.META['HTTP_HOST']
         if root == '127.0.0.1:8000':
             url = f"http://{root}/payment/start/"
         else:
             url = f"https://{root}/payment/start/"
         headers = {'Content-Type': 'application/json; charset=utf-8'}
         response = requests.post(url,
                                  headers=headers,
                                  data=serialized_json)
         data = response.json()
         pay_url = data.pop('str_url', False)
         if pay_url:
             return HttpResponseRedirect(pay_url)
         return render(request,
                       "tests/zona_start.html",
                       {'form': form, 'error':data})
예제 #5
0
	def post(self,*args, **kwargs):
		form = PaymentForm(self.request.POST or None)
		try:
			order = Order.objects.filter(user=self.request.user,ordered=False)[0]			
			if form.is_valid():
				order.ordered=True
				payment = PaymentModel.objects.create(user = self.request.user,
				 stripe_charge_id=generateChargeID(),
				 amount=order.get_total()
				 )
				token = form.cleaned_data.get('stripeToken')
				print(token)
				payment.save()
				order.payment=payment
				order.items.quantity=1
				order.save()
				messages.SUCCESS
				return redirect('core:home')
			else:
				messages.warning(self.request,"Fill fields correctly!")
				return redirect('core:payment')
		except ObjectDoesNotExist:
			messages.info(self.request,"You dont have active order!")
			return redirect('core:home')
예제 #6
0
파일: feeds.py 프로젝트: dev360/publisher
    def post(self, request, user, feed):
        register_form = None
        register_user = None
        subscribe_form = PaymentForm(request.POST)

        if self.request.user.is_anonymous():
            register_form = RegistrationForm(request.POST)

        if ((register_form and register_form.is_valid()) or register_form == None) and subscribe_form.is_valid():
            if register_form:
                register_user = register_form.save(request)
                register_user.profile.status = 'REG'
                register_user.profile.save()

                registed_user = authenticate(
                    username=request.POST.get('username'),
                    password=request.POST.get('password')
                )

            FeedSubscriber.objects.get_or_create(feed=feed, user=register_user or request.user)


        if request.is_ajax():
            response = {
                'error': subscribe_form.errors,
                'success_url': reverse('feed_detail', args=[
                    feed.publisher.username,
                    feed.slug
                ])
            }

            if register_form:
                response['error'].update(register_form.errors)

            status = 200
            if response['error']:
                status = 400

            return HttpResponse(json.dumps(response), status=status, mimetype="application/json")

        return self.render(user, feed, register_form, subscribe_form)
예제 #7
0
파일: views.py 프로젝트: sachintomacc/ecomm
    def post(self, *args, **kwargs):
        print(' in patment view POST')
        form = PaymentForm(self.request.POST)
        print(self.request.POST)
        order = Order.objects.get(user=self.request.user, ordered=False)

        if form.is_valid():
            print('FORM VALID')
            stripeToken = form.cleaned_data.get('stripeToken')
            save_card_info = form.cleaned_data.get('save_card_info')
            use_default_card = form.cleaned_data.get('use_default_card')
            amount = int(order.get_total() * 100)
            print('stripeToken = ', stripeToken)
            print('save_card_info = ', save_card_info)
            print('use_default_card = ', use_default_card)

            userprofile = UserProfile.objects.get(user=self.request.user)

            if save_card_info:
                if not userprofile.stripe_customer_id:
                    customer = stripe.Customer.create(
                        source=stripeToken,
                        email=userprofile.user.email,
                    )
                    userprofile.stripe_customer_id = customer['id']
                    userprofile.one_click_purchasing = True
                else:
                    stripe.Customer.create_source(
                        userprofile.stripe_customer_id, source=stripeToken)

        try:
            if use_default_card:
                charge = stripe.Charge.create(
                    amount=amount,
                    currency="usd",
                    customer=userprofile.stripe_customer_id)
            else:
                charge = stripe.Charge.create(amount=amount,
                                              currency="usd",
                                              source=stripeToken)

            payment = Payment()
            payment.stripe_charge_id = charge['id']
            payment.user = self.request.user
            payment.amount = order.get_total()
            payment.save()

            order_items = order.items.all()
            order_items.update(ordered=True)
            for item in order_items:
                item.save()

            order.ordered = True
            order.ref_code = create_ref_code()

            # for order_item in order.items.all():

            order.payment = payment
            order.save()
            messages.warning(self.request, 'order was successful')

            return redirect('/')

        except stripe.error.CardError as e:
            messages.error(self.request, 'CardError')

        except stripe.error.RateLimitError as e:
            messages.error(self.request, 'RateLimitError')
        except stripe.error.InvalidRequestError as e:
            messages.error(self.request, 'InvalidRequestError')
        except stripe.error.AuthenticationError as e:
            messages.error(self.request, 'AuthenticationError')
        except stripe.error.APIConnectionError as e:
            messages.error(self.request, 'APIConnectionError')
        except stripe.error.StripeError as e:
            messages.error(self.request, 'StripeError')
        except Exception as e:
            messages.error(self.request, e.error)

        return redirect('/')
예제 #8
0
 def test_valid_form(self):
     data = {"stripeToken": "ciao", "save": "true", "use_default": "false"}
     form = PaymentForm(data=data)
     self.assertTrue(form.is_valid())