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})
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})
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, })
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})
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')
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)
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('/')
def test_valid_form(self): data = {"stripeToken": "ciao", "save": "true", "use_default": "false"} form = PaymentForm(data=data) self.assertTrue(form.is_valid())