def product_detail(request, slug): ''' It is a smaple funcation that could be used to send only one item to Paypal. it will send the information of the select product to be paied in Paypal. ''' product = get_object_or_404(Product, pk=slug) paypal = { 'amount': product.price, 'item_name': product.name, 'item_number': product.slug, # PayPal wants a unique invoice ID 'invoice': str(uuid.uuid1()), # It'll be a good idea to setup a SITE_DOMAIN inside settings # so you don't need to hardcode these values. 'return_url': settings.SITE_DOMAIN + 'return_url', #reverse('return_url'), 'cancel_return': settings.SITE_DOMAIN + 'cancel_url', #reverse('cancel_url'), } form = PayPalPaymentsForm(initial=paypal) if settings.DEBUG: rendered_form = form.sandbox() else: rendered_form = form.render() return render_to_response('products/product_detail.html', { 'product' : product, 'form' : rendered_form, }, RequestContext(request))
def paypal_form(order): #res = {} paypal = { 'business': settings.PAYPAL_RECEIVER_EMAIL, 'amount': order.total(), 'item_name': settings.PAYPAL_SUBJECT_LINE, #'item_number': 1, #'quantity':1, # PayPal wants a unique invoice ID 'invoice': order.uid, # It'll be a good idea to setup a SITE_DOMAIN inside settings # so you don't need to hardcode these values. 'currency_code': 'EUR', 'lc': 'es_ES', #'notify_url': settings.SITE_DOMAIN + "/tienda/checkout/paypal/ipn", 'notify_url': settings.SITE_DOMAIN + reverse('paypal-ipn'), 'return_url': settings.SITE_DOMAIN + reverse('return_url'), 'cancel_return': settings.SITE_DOMAIN + reverse('cancel_url'), } form = PayPalPaymentsForm(initial=paypal) if settings.DEBUG: rendered_form = form.sandbox() else: rendered_form = form.render() return rendered_form
def purchase_item(request): if request.method == "POST": item_purchase = int(request.POST['item']) _item = get_object_or_404(item, id=item_purchase) if _item.user == request.user: ctx = {'title':'This item belongs to you.','message':'This item belongs to you, you can not buy'} return render_to_response('message/message.html',ctx,context_instance=RequestContext(request)) frmPurchase = purchases(item=_item,user=request.user) frmPurchase.save() paypal = { 'amount':frmPurchase.item.price, 'item_name': frmPurchase.item.title, 'item_number': frmPurchase.item.id, # PayPal wants a unique invoice ID 'invoice': str(uuid.uuid1()), # It'll be a good idea to setup a SITE_DOMAIN inside settings # so you don't need to hardcode these values. 'return_url': settings.SITE_DOMAIN + reverse('return_url'), 'cancel_return': settings.SITE_DOMAIN + reverse('cancel_url'), } form = PayPalPaymentsForm(initial=paypal) if settings.DEBUG: rendered_form = form.sandbox() else: rendered_form = form.render() ctx = {'item' : _item,'form' : rendered_form,} return render_to_response('store/purchase_thanks.html',ctx,context_instance=RequestContext(request)) else: return HttpResponseRedirect('/store/')
def pay_item(request,idItem): idIt = idItem _item = get_object_or_404(item,id=idIt) _purch = get_object_or_404(purchases,item=_item) if _purch.user == request.user: paypal = { 'amount':_purch.item.price, 'item_name': _purch.item.title, 'item_number': _purch.item.id, # PayPal wants a unique invoice ID 'invoice': str(uuid.uuid1()), # It'll be a good idea to setup a SITE_DOMAIN inside settings # so you don't need to hardcode these values. 'return_url': settings.SITE_DOMAIN + reverse('return_url'), 'cancel_return': settings.SITE_DOMAIN + reverse('cancel_url'), } form = PayPalPaymentsForm(initial=paypal) if settings.DEBUG: rendered_form = form.sandbox() else: rendered_form = form.render() ctx = {'item' : _item,'form' : rendered_form,} return render_to_response('store/purchase_thanks.html',ctx,context_instance=RequestContext(request)) else: return HttpResponseRedirect('/profile/purchased/images/')
def scientist_research_payment_paypal(request, research_id, template='scientist/research_payment_paypal.html', extra_context=None): research = get_object_or_404(Research, id=research_id, scientistresearch__scientist=request.user) # What you want the button to do. paypal_dict = { 'business': settings.PAYPAL_RECEIVER_EMAIL, 'amount': research.total_credit - request.user.userprofile.available_balance, 'item_name': research.name, 'invoice': '%s-%d' % (research.name, research.id), 'notify_url': '%s%s' % (settings.SITE_NAME, reverse_lazy('paypal-ipn')), 'return_url': '%s%s' % (settings.SITE_NAME, reverse_lazy('research_paypal_complete', args=[research.id, ])), 'cancel_return': 'http://www.example.com/your-cancel-location/', 'custom': research.id, } # Create the instance. form = PayPalPaymentsForm(initial=paypal_dict) if settings.PAYPAL_API_ENVIRONMENT == 'SANDBOX': paypal_form = form.sandbox() else: paypal_form = form.render() context = { 'form': paypal_form, 'research': research, } if extra_context: context.update(extra_context) return render_to_response(template, context, context_instance=RequestContext(request))
def paypal_form(order): # res = {} paypal = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": order.total(), "item_name": settings.PAYPAL_SUBJECT_LINE, #'item_number': 1, #'quantity':1, # PayPal wants a unique invoice ID "invoice": order.uid, # It'll be a good idea to setup a SITE_DOMAIN inside settings # so you don't need to hardcode these values. "currency_code": "EUR", "lc": "es_ES", #'notify_url': settings.SITE_DOMAIN + "/tienda/checkout/paypal/ipn", "notify_url": settings.SITE_DOMAIN + reverse("paypal-ipn"), "return_url": settings.SITE_DOMAIN + reverse("return_url"), "cancel_return": settings.SITE_DOMAIN + reverse("cancel_url"), } form = PayPalPaymentsForm(initial=paypal) if settings.DEBUG: rendered_form = form.sandbox() else: rendered_form = form.render() return rendered_form
def ServicesPayment(request, serviceId, csrf, payStatus, date_created): import datetime import time service = Service.objects.all().get(id=int(serviceId)) user = request.user if date_created == "0": date_created = str(time.time()) invoice_number = date_created + '-service-' + str(serviceId) + "-" \ + str(user.id) paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": service.service_cost, "item_name": service.name, "invoice": invoice_number, "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')), "return_url": settings.SITE_NAME + "/paypal/payment/service/" + serviceId + "/1/" + csrf + "/" + date_created + "/", "cancel_return": settings.SITE_NAME + "/paypal/payment/service/" + serviceId + "/0/" + csrf + "/" + date_created + "/", } if payStatus == "2": if len(Invoice.objects.all().filter(number=invoice_number)) > 0: payStatus = "3" else: dateTime = datetime.datetime.\ fromtimestamp(float(date_created)/1000) i = Invoice.objects.create(date_created=dateTime, service=service, buyer=user, amount=1, is_paid=False, number=invoice_number) i.save() if payStatus == "1": if len(Invoice.objects.all().filter(number=invoice_number)) == 0: payStatus = "3" else: i = Invoice.objects.all().get(number=invoice_number) i.is_paid = True i.save() if payStatus == "0": if len(Invoice.objects.all().filter(number=invoice_number)) == 0: payStatus = "3" else: i = Invoice.objects.all().get(number=invoice_number) i.is_paid = False i.save() form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox(), "service": service, "payStatus": payStatus, "invoice_number": invoice_number, "date_created": date_created, "serviceId": serviceId, } return render_with_user(request, "paypal/payment.html", context)
def render_page(request, order, selectdiscountform=None, claimdiscountform=None, dropforms=None): context = {} if float(order.get_full_price()) < 0.01: # Free service. Don't show discount forms. Clear coupons so they are not wasted. context['show_discounts'] = False order.reset_discount_claims() order.save() else: context['show_discounts'] = True # Define forms for managing discounts on order if not dropforms: dropforms = []; for claim in order.get_discount_claims(): dropforms.append({ 'label': claim.discount.display_text, 'form': coupons.forms.RemoveDiscountForm(initial={u'discount': claim.pk}) }) context['dropforms'] = dropforms if not selectdiscountform: available_claims = order.get_unused_discount_claims() if available_claims: selectdiscountform = coupons.forms.SelectDiscountForm(request.user, available_claims=available_claims) else: selectdiscountform = None context['selectdiscountform'] = selectdiscountform if not claimdiscountform: claimdiscountform = coupons.forms.ClaimOrSelectDiscountForm(request.user) context['claimdiscountform'] = claimdiscountform # Define invoice data invoice = order.calculate_price() order.save() context['invoice'] = invoice if float(order.get_amount_to_pay()) < 0.01: # No payment due. Free service or 100% covered with discounts context['paid_service'] = False return render_to_response("order/submit_payment.html", RequestContext(request, context)) else: context['paid_service'] = True # paypal button paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": invoice['amount_due'], "item_name": order.get_service_description(), "invoice": order.invoice_id, "notify_url": "%s%s" % (settings.ROOT_URL, reverse('paypal-ipn')), "return_url": "%s%s" % (settings.ROOT_URL, 'paymentreceived/'), "cancel_return": "%s%s" % (settings.ROOT_URL, 'paymentcanceled/'), } form = PayPalPaymentsForm(initial=paypal_dict) if settings.RACK_ENV=='production': context["pay_button"] = form.render() else: context["pay_button"] = form.sandbox() context["pay_button_message"] = mark_safe(_('Clicking the "Buy Now" button will submit your order and take you away from this site.')+'<br/>'+_('Please complete your secure payment with PayPal.')) return render_to_response("order/submit_payment.html", RequestContext(request, context))
def paypal(request): # What you want the button to do. paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": "1.00", "item_name": "name of the item", "invoice": "unique-invoice-id", "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')), "return_url": "http://www.example.com/your-return-location/", "cancel_return": "http://www.example.com/your-cancel-location/",} # Create the instance. form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox()} return render_to_response("paypal.html", context)
def view_ask_money_ipn(request): # What you want the button to do. paypal_dict = { "business":settings.PAYPAL_RECEIVER_EMAIL, "amount":"0.01", "item_name":"Ttagit Pro Account", "invoice":"unique-invoice-id", "notify_url":"http://dev.ttagit.com/paypal-ipn", "return_url":"http://dev.ttagit.com/paypal/pdt/", "cancel_return":"", } form = PayPalPaymentsForm(initial=paypal_dict) context = {"form":form.sandbox()} return render_to_response("payment.html", context)
def view_that_asks_for_money(request): # What you want the button to do. paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": "1.00", "item_name": "name of the item", "invoice": "unique-invoice-id", "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')), "return_url": "http://0.0.0.0:8008/hello/", "cancel_return": "http://0.0.0.0:8008/hello/", } # Create the instance. form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox(), "productID": request.POST["productID"]} return render_with_user(request, "paypal/payment.html", context)
def get_context_data(self, **kwargs): context = super(MerchDetailView, self).get_context_data(**kwargs) merch = context['merch'] paypal = { 'amount': merch.price, 'item_name': merch.title, 'item_number': merch.slug, 'currency_code': 'GBP', # PayPal wants a unique invoice ID 'invoice': str(uuid.uuid4()), 'return_url': '/merch/thanks', 'cancel_return': merch.get_absolute_url(), } form = PayPalPaymentsForm(initial=paypal) context['form'] = form.sandbox() if settings.DEBUG else form.render() return context
def paypal_standard(request): ipn_url = 'http://%s%s' % (Site.objects.get_current().domain, reverse("paypal-ipn")) pdt_url = 'http://%s%s' % (Site.objects.get_current().domain, reverse("paypal-pdt")) return_url = pdt_url if config.PDT else ipn_url data = { "amount": "1.00", "item_name": "Samsung Galaxy S3", "invoice": "INVOICE001", "notify_url": ipn_url, "return_url": return_url, } form = PayPalPaymentsForm(initial=data) data['form'] = form.sandbox() if config.DEBUG else form.render() return render_to_response("payment/paypal/standard.html", data, context_instance=RequestContext(request))
def paypal(request, publisher_id, product_id): # What you want the button to do. productchoice = Product.objects.get(id=product_id) publisher = Publisher.objects.get(id=publisher_id) paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": "%.2f" % productchoice.product_cost, "item_name": "%s" % productchoice.product_type, "invoice": "unique-invoice-id", "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')), "return_url": "http://www.example.com/your-return-location/", "cancel_return": "http://www.example.com/your-cancel-location/", } # Create the instance. form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox(), "productchoice": productchoice} return render_to_response("signup/paypal.html", context)
def try_paypal(request): paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": "1.00", # amount to charge for item "invoice": datetime.now(), # unique tracking variable paypal "item_name": "Cipő", "notify_url": "%s%s" % (settings.SITE_NAME, "atyalapatyala"), "cancel_return": "%s/try_paypal_cancel" % settings.SITE_NAME, # Express checkout cancel url "return_url": "%s/try_paypal_success" % settings.SITE_NAME} # Express checkout return url # kw = {"item": item, # what you're selling # "payment_template": "try_paypal.html", # template name for payment # "confirm_template": "try_paypal_confirmation.html", # template name for confirmation # "success_url": "/try_paypal_success/"} # redirect location after success #ppp = PayPalPro(**kw) #return ppp(request) form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox()} return render(request, "try_paypal.html", context)
def view_ask_money_pdt(request): # What you want the button to do. access_token = '' if request.COOKIES.has_key('access_token'): access_token = str(request.COOKIES['access_token']) else: #print 'redirect user to the sign in page' #redirect user to the sign_in page _redirect = True paypal_dict = { "business":settings.PAYPAL_RECEIVER_EMAIL, "item_number": access_token, "item_name":"Ttagit Credits", "notify_url": paths.HTTPS+request.get_host() + "/3f2cf0fe3d994fb8dfe6d8f9g2h5", "return_url": paths.HTTPS+request.get_host() + "/paypal/pdt/", "cancel_return": paths.HTTPS+request.get_host()+ "/cancel", } form = PayPalPaymentsForm(initial=paypal_dict) context = {"form":form.sandbox()} return render_to_response("payment.html", context)
def image_show(request, image): try: colorscheme = ColorScheme.objects.get(use_for_galleries=True) except ColorScheme.DoesNotExist: colorscheme = None try: bgimage = BackgroundImage.objects.get(use_for_galleries=True) except BackgroundImage.DoesNotExist: bgimage = None image = get_object_or_404(models.Image, title_slug=image) gallery = image.gallery # Paypal form info mysite = Site.objects.get_current() domain = mysite.domain paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": image.price, "item_name": image.title, "item_number": image.id, "no_shipping": PayPalPaymentsForm.SHIPPING_CHOICES[1][0], "invoice": random_string(), "notify_url": "http://%s%s"%(domain, reverse('paypal-ipn')), "return_url": "http://%s%s"%(domain, reverse("purchase_return",args=(image.title_slug,))), "cancel_return": "http://%s%s"%(domain, reverse("purchase_cancel",args=(image.title_slug,))) } the_form = PayPalPaymentsForm(initial=paypal_dict) # Change this in production! form = the_form.sandbox() # Use gallery colorscheme try: colorscheme = ColorScheme.objects.get(use_for_galleries=True) except ColorScheme.DoesNotExist: pass return render_to_response("image_show.html", locals(), context_instance=RequestContext(request))
def try_paypal(request): paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": "1.00", # amount to charge for item "invoice": datetime.now(), # unique tracking variable paypal "item_name": "Cipő", "notify_url": "%s%s" % (settings.SITE_NAME, "atyalapatyala"), "cancel_return": "%s/try_paypal_cancel" % settings.SITE_NAME, # Express checkout cancel url "return_url": "%s/try_paypal_success" % settings.SITE_NAME } # Express checkout return url # kw = {"item": item, # what you're selling # "payment_template": "try_paypal.html", # template name for payment # "confirm_template": "try_paypal_confirmation.html", # template name for confirmation # "success_url": "/try_paypal_success/"} # redirect location after success #ppp = PayPalPro(**kw) #return ppp(request) form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox()} return render(request, "try_paypal.html", context)
def view_ask_money_pdt(request): # What you want the button to do. access_token = '' if request.COOKIES.has_key('access_token'): access_token = str(request.COOKIES['access_token']) else: #print 'redirect user to the sign in page' #redirect user to the sign_in page _redirect = True paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "item_number": access_token, "item_name": "Ttagit Credits", "notify_url": paths.HTTPS + request.get_host() + "/3f2cf0fe3d994fb8dfe6d8f9g2h5", "return_url": paths.HTTPS + request.get_host() + "/paypal/pdt/", "cancel_return": paths.HTTPS + request.get_host() + "/cancel", } form = PayPalPaymentsForm(initial=paypal_dict) context = {"form": form.sandbox()} return render_to_response("payment.html", context)
def carga_compra(request, pago_id): pago=get_object_or_404(Pagos, pk=pago_id) usuario_pago=Usuarios_Pagos.objects.get_or_create(usuario=request.user, pago=pago) paypal_dict = { # "business": settings.PAYPAL_RECEIVER_EMAIL, "business": pago.correo, "amount": pago.get_precio, "item_name": pago.concepto, "invoice": "pagos_compras_" + str(pago.id)+"_"+str(request.user.id), "notify_url": "%s%s" % (SITE_NAME, reverse('paypal-ipn')), "return_url": "http://joinity.com/", "cancel_return": "http://joinity.com/", "custom": usuario_pago[0].id, "currency_code": "EUR", # currency "paymentaction": "authorization", } form = PayPalPaymentsForm(initial=paypal_dict) context={"pago":pago, "form":form.sandbox()} pagina_pago=render_to_string("joinitys/pagos/ajax_ver_compra.html", context) return simplejson.dumps({"pago":pagina_pago})
def do_subscribe(request): log.info("mypal module -> view.py -> do_subscribe()") paypal_dict={ "cmd":"_xclick-subscriptions", "business":settings.PAYPAL_RECEIVER_EMAIL, "a3":"0.01", "p1":1, "p2":1, "p3":1, "t3":"D", "src":"1", "sra":"1", "no_note":"1", "item_name":"ttagit_pro_market", #use item_number for user id "item_number":"4ffb5e1a0cf2c9e46dda6810", "notify_url":"https://dev.ttagit.com/3f2cf0fe3d994fb8dfe6d8f9g2h5", "return_url":"https://dev.ttagit.com/paypal/pdt/", "cancel_return":"https://dev.ttagit.com/cancel", } form = PayPalPaymentsForm(initial=paypal_dict, button_type="subscribe") context = {"form":form.sandbox()} return render_to_response("payment.html", context)
def paypal(request, treatment_id): # What you want the button to do. try: treatment = Treatment.objects.get(id=treatment_id) except: raise Http404 treatment_price = system.GET_TREATMENT_PRICE() treatment_time = system.GET_TREATMENT_TIME_LIMIT() paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "charset": "utf-8", "amount": "%s" % treatment_price, "item_name": u"Avaliação e Orientação Dermatológica", "custom": treatment_id, "invoice": treatment_id, "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')), "return_url": "%s%s" % (settings.SITE_NAME, reverse('paypalreturn')), "cancel_return": "%s%s" % (settings.SITE_NAME, reverse('paypal-cancel-return')), } # Create the instance. paypal_form = PayPalPaymentsForm(initial=paypal_dict) free_treatments = system.GET_FREE_TREATMENTS() if settings.PAYPAL_TEST: paypal_form = paypal_form.sandbox() else: paypal_form = paypal_form.render() context = {"paypal_form": paypal_form, "treatment": treatment, "treatment_time": treatment_time, "free_treatments": free_treatments} return render_to_response("treatments/checkout.html", context, context_instance=RequestContext(request)) from paypal.pro.views import PayPalPro
def do_subscribe(request): log.info("mypal module -> view.py -> do_subscribe()") paypal_dict = { "cmd": "_xclick-subscriptions", "business": settings.PAYPAL_RECEIVER_EMAIL, "a3": "0.01", "p1": 1, "p2": 1, "p3": 1, "t3": "D", "src": "1", "sra": "1", "no_note": "1", "item_name": "ttagit_pro_market", #use item_number for user id "item_number": "4ffb5e1a0cf2c9e46dda6810", "notify_url": "https://" + request.get_host() + "/3f2cf0fe3d994fb8dfe6d8f9g2h5", "return_url": "https://" + request.get_host() + "/paypal/pdt/", "cancel_return": "https://" + request.get_host() + "/cancel", } form = PayPalPaymentsForm(initial=paypal_dict, button_type="subscribe") context = {"form": form.sandbox()} return render_to_response("payment.html", context)
def BalancePayment(request, amount, csrf, payStatus, date_created): service = Service.objects.all().get(id=56) user = request.user if date_created == "0": date_created = str(int(float(time.time() * 1000))) invoice_number = date_created + "-service-56-" + str(user.id) paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": int(amount) / 100, "item_name": service.name, "invoice": invoice_number, "notify_url": "%s%s" % (settings.SITE_NAME, reverse("paypal-ipn")), "return_url": settings.SITE_NAME + "/paypal/payment/balance/" + amount + "/1/" + csrf + "/" + date_created + "/", "cancel_return": settings.SITE_NAME + "/paypal/payment/balance/" + amount + "/0/" + csrf + "/" + date_created + "/", } if payStatus == "2": if len(Invoice.objects.all().filter(number=invoice_number)) > 0: payStatus = "3" else: dateTime = datetime.datetime.fromtimestamp(float(date_created) / 1000) i = Invoice.objects.create( date_created=dateTime, service=service, buyer=user, amount=1, is_paid=False, number=invoice_number ) i.save() if payStatus == "1": if len(Invoice.objects.all().filter(number=invoice_number)) == 0: payStatus = "3" else: i = Invoice.objects.all().get(number=invoice_number) i.is_paid = True i.save() from decimal import Decimal if len(Balance.objects.all().filter(user=user)) == 0: b = Balance.objects.create(user=user, balance=Decimal(float(amount) / 100)) b.save() else: b = Balance.objects.all().get(user=user) total = b.balance + Decimal(float(amount) / 100) b.balance = total b.save() if payStatus == "0": if len(Invoice.objects.all().filter(number=invoice_number)) == 0: payStatus = "3" else: i = Invoice.objects.all().get(number=invoice_number) i.is_paid = False i.save() form = PayPalPaymentsForm(initial=paypal_dict) context = { "form": form.sandbox(), "service": service, "payStatus": payStatus, "price": str(float(int(amount) / 100)), "invoice_number": invoice_number, "date_created": date_created, } return render_with_user(request, "paypal/balance_payment.html", context)
def donate(request, p, engine): if not can_accept_donations(p): return redirect("project-main", project_id=p.id) is_test_donation = getattr(settings, "DONATION_TEST", False) if request.method == "POST": donate_form = InvoiceForm(data=request.POST, project=p, engine=engine) if donate_form.is_valid(): description = u"Akvo-%d-%s" % (p.id, p.title) cd = donate_form.cleaned_data invoice = donate_form.save(commit=False) invoice.project = p invoice.engine = engine invoice.name = cd["name"] invoice.email = cd["email"] invoice.campaign_code = cd["campaign_code"] invoice.is_anonymous = not cd["is_public"] original_http_referer = request.session.get("original_http_referer", None) if original_http_referer: invoice.http_referer = original_http_referer del request.session["original_http_referer"] else: invoice.http_referer = request.META.get("HTTP_REFERER", None) if is_test_donation: invoice.test = True if request.session.get("donation_return_url", False): return_url = urljoin(request.session["donation_return_url"], reverse("donate_thanks")) else: return_url = urljoin(request.META['HTTP_ORIGIN'], reverse("donate_thanks")) if engine == "ideal": invoice.bank = cd["bank"] mollie_dict = dict( amount=invoice.amount * 100, bank_id=invoice.bank, partnerid=invoice.gateway, description=description, reporturl=urljoin(request.META['HTTP_ORIGIN'], reverse("mollie_report")), returnurl=return_url) try: mollie_response = query_mollie(mollie_dict, "fetch") invoice.transaction_id = mollie_response["transaction_id"] order_url = mollie_response["order_url"] invoice.save() except: return redirect("donate_500") return render_to_response("donate/donate_step3.html", dict(invoice=invoice, project=p, payment_engine=engine, mollie_order_url=order_url), context_instance=RequestContext(request)) elif engine == "paypal": invoice.save() pp_dict = dict( cmd="_donations", currency_code=invoice.currency, business=invoice.gateway, amount=invoice.amount, item_name=description, invoice=int(invoice.id), lc=invoice.locale, notify_url=urljoin(request.META['HTTP_ORIGIN'], reverse("paypal_ipn")), return_url=return_url, cancel_url=request.META['HTTP_ORIGIN']) pp_form = PayPalPaymentsForm(initial=pp_dict) if is_test_donation: pp_button = pp_form.sandbox() else: pp_button = pp_form.render() return render_to_response("donate/donate_step3.html", dict(invoice=invoice, payment_engine=engine, pp_form=pp_form, pp_button=pp_button, project=p), context_instance=RequestContext(request)) else: invoice_id = request.GET.get("invoice_id", None) if not invoice_id: donate_form = InvoiceForm(project=p, engine=engine, initial=dict(is_public=True)) else: invoice = get_object_or_404(Invoice, pk=invoice_id) donate_form = InvoiceForm(project=p, engine=engine, initial=dict(amount=invoice.amount, name=invoice.name, email=invoice.email, email2=invoice.email, campaign_code=invoice.campaign_code, is_public=not invoice.is_anonymous)) if request.session.get("donation_return_url", False): request.session["cancel_url"] = urljoin(request.session["donation_return_url"], reverse("project-main", kwargs={'project_id': p.id})) else: request.session["cancel_url"] = reverse("project-main", kwargs={'project_id': p.id}) return render_to_response("donate/donate_step2.html", dict(donate_form=donate_form, payment_engine=engine, project=p), context_instance=RequestContext(request))
def donate(request, p, engine, has_sponsor_banner=False): if p not in Project.objects.published().need_funding(): return redirect('project_main', project_id=p.id) if get_object_or_404(Organisation, pk=settings.LIVE_EARTH_ID) in p.sponsor_partners(): has_sponsor_banner = True if request.method == 'POST': donate_form = InvoiceForm(data=request.POST, project=p, engine=engine) if donate_form.is_valid(): cd = donate_form.cleaned_data invoice = donate_form.save(commit=False) invoice.project = p invoice.engine = engine invoice.name = cd['name'] invoice.email = cd['email'] original_http_referer = request.session.get('original_http_referer', None) if original_http_referer: invoice.http_referer = original_http_referer del request.session['original_http_referer'] else: invoice.http_referer = request.META.get('HTTP_REFERER', None) if settings.DONATION_TEST: invoice.test = True if engine == 'ideal': invoice.bank = cd['bank'] mollie_dict = { 'amount': invoice.amount * 100, 'bank_id': invoice.bank, 'partnerid': invoice.gateway, 'description': u'Donation: Akvo Project %d' % int(p.id), 'reporturl': settings.MOLLIE_REPORT_URL, 'returnurl': settings.MOLLIE_RETURN_URL} try: mollie_response = query_mollie(mollie_dict, 'fetch') invoice.transaction_id = mollie_response['transaction_id'] order_url = mollie_response['order_url'] invoice.save() except: return redirect('donate_500') return render_to_response('rsr/donate_step3.html', {'invoice': invoice, 'p': p, 'payment_engine': engine, 'mollie_order_url': order_url, 'has_sponsor_banner': has_sponsor_banner, 'live_earth_enabled': settings.LIVE_EARTH_ENABLED}, context_instance=RequestContext(request)) elif engine == 'paypal': invoice.save() pp_dict = { 'cmd': getattr(settings, 'PAYPAL_COMMAND', '_donations'), 'currency_code': invoice.currency, 'business': invoice.gateway, 'amount': invoice.amount, 'item_name': u'%s: Project %d - %s' % (settings.PAYPAL_PRODUCT_DESCRIPTION_PREFIX, int(invoice.project.id), invoice.project.name), 'invoice': int(invoice.id), 'lc': invoice.locale, 'notify_url': settings.PAYPAL_NOTIFY_URL, 'return_url': settings.PAYPAL_RETURN_URL, 'cancel_url': settings.PAYPAL_CANCEL_URL} pp_form = PayPalPaymentsForm(initial=pp_dict) if settings.PAYPAL_TEST: pp_button = pp_form.sandbox() else: pp_button = pp_form.render() action = request.POST.get('action', None) return render_to_response('rsr/donate_step3.html', {'invoice': invoice, 'payment_engine': engine, 'pp_form': pp_form, 'pp_button': pp_button, 'p': p, 'has_sponsor_banner': has_sponsor_banner, 'live_earth_enabled': settings.LIVE_EARTH_ENABLED}, context_instance=RequestContext(request)) else: donate_form = InvoiceForm(project=p, engine=engine) return render_to_response('rsr/donate_step2.html', {'donate_form': donate_form, 'payment_engine': engine, 'p': p, 'has_sponsor_banner': has_sponsor_banner, 'live_earth_enabled': settings.LIVE_EARTH_ENABLED}, context_instance=RequestContext(request))
def donate(request, p, engine): if not can_accept_donations(p): return redirect("project-main", project_id=p.id) is_test_donation = getattr(settings, "DONATION_TEST", False) if request.method == "POST": donate_form = InvoiceForm(data=request.POST, project=p, engine=engine) if donate_form.is_valid(): description = u"Akvo-%d-%s" % (p.id, p.title) cd = donate_form.cleaned_data invoice = donate_form.save(commit=False) invoice.project = p invoice.engine = engine invoice.name = cd["name"] invoice.email = cd["email"] invoice.campaign_code = cd["campaign_code"] invoice.is_anonymous = not cd["is_public"] original_http_referer = request.session.get( "original_http_referer", None) if original_http_referer: invoice.http_referer = original_http_referer del request.session["original_http_referer"] else: invoice.http_referer = request.META.get("HTTP_REFERER", None) if is_test_donation: invoice.test = True if request.session.get("donation_return_url", False): return_url = urljoin(request.session["donation_return_url"], reverse("donate_thanks")) else: return_url = urljoin(request.META['HTTP_ORIGIN'], reverse("donate_thanks")) if engine == "ideal": invoice.bank = cd["bank"] mollie_dict = dict(amount=invoice.amount * 100, bank_id=invoice.bank, partnerid=invoice.gateway, description=description, reporturl=urljoin( request.META['HTTP_ORIGIN'], reverse("mollie_report")), returnurl=return_url) try: mollie_response = query_mollie(mollie_dict, "fetch") invoice.transaction_id = mollie_response["transaction_id"] order_url = mollie_response["order_url"] invoice.save() except: return redirect("donate_500") return render_to_response( "donate/donate_step3.html", dict(invoice=invoice, project=p, payment_engine=engine, mollie_order_url=order_url), context_instance=RequestContext(request)) elif engine == "paypal": invoice.save() pp_dict = dict(cmd="_donations", currency_code=invoice.currency, business=invoice.gateway, amount=invoice.amount, item_name=description, invoice=int(invoice.id), lc=invoice.locale, notify_url=urljoin(request.META['HTTP_ORIGIN'], reverse("paypal_ipn")), return_url=return_url, cancel_url=request.META['HTTP_ORIGIN']) pp_form = PayPalPaymentsForm(initial=pp_dict) if is_test_donation: pp_button = pp_form.sandbox() else: pp_button = pp_form.render() return render_to_response( "donate/donate_step3.html", dict(invoice=invoice, payment_engine=engine, pp_form=pp_form, pp_button=pp_button, project=p), context_instance=RequestContext(request)) else: invoice_id = request.GET.get("invoice_id", None) if not invoice_id: donate_form = InvoiceForm(project=p, engine=engine, initial=dict(is_public=True)) else: invoice = get_object_or_404(Invoice, pk=invoice_id) donate_form = InvoiceForm(project=p, engine=engine, initial=dict( amount=invoice.amount, name=invoice.name, email=invoice.email, email2=invoice.email, campaign_code=invoice.campaign_code, is_public=not invoice.is_anonymous)) if request.session.get("donation_return_url", False): request.session["cancel_url"] = urljoin( request.session["donation_return_url"], reverse("project-main", kwargs={'project_id': p.id})) else: request.session["cancel_url"] = reverse( "project-main", kwargs={'project_id': p.id}) return render_to_response("donate/donate_step2.html", dict(donate_form=donate_form, payment_engine=engine, project=p), context_instance=RequestContext(request))
def donate(request, p, engine, has_sponsor_banner=False): if p not in Project.objects.published().need_funding(): return redirect("project_main", project_id=p.id) if get_object_or_404(Organisation, pk=settings.LIVE_EARTH_ID) in p.sponsor_partners(): has_sponsor_banner = True if request.method == "POST": donate_form = InvoiceForm(data=request.POST, user=request.user, project=p, engine=engine) if donate_form.is_valid(): cd = donate_form.cleaned_data invoice = donate_form.save(commit=False) invoice.project = p invoice.engine = engine if request.user.is_authenticated() and request.user.email: invoice.user = request.user else: invoice.name = cd["name"] invoice.email = cd["email"] original_http_referer = request.session.get("original_http_referer", None) if original_http_referer: invoice.http_referer = original_http_referer del request.session["original_http_referer"] else: invoice.http_referer = request.META.get("HTTP_REFERER", None) if settings.DONATION_TEST: invoice.test = True if engine == "ideal": invoice.bank = cd["bank"] mollie_dict = { "amount": invoice.amount * 100, "bank_id": invoice.bank, "partnerid": invoice.gateway, "description": u"Donation: Akvo Project %d" % int(p.id), "reporturl": settings.MOLLIE_REPORT_URL, "returnurl": settings.MOLLIE_RETURN_URL, } try: mollie_response = query_mollie(mollie_dict, "fetch") invoice.transaction_id = mollie_response["transaction_id"] order_url = mollie_response["order_url"] invoice.save() except: return redirect("donate_500") return render_to_response( "rsr/donate_step3.html", { "invoice": invoice, "p": p, "payment_engine": engine, "mollie_order_url": order_url, "has_sponsor_banner": has_sponsor_banner, "live_earth_enabled": settings.LIVE_EARTH_ENABLED, }, context_instance=RequestContext(request), ) elif engine == "paypal": invoice.save() pp_dict = { "cmd": getattr(settings, "PAYPAL_COMMAND", "_donations"), "currency_code": invoice.currency, "business": invoice.gateway, "amount": invoice.amount, "item_name": u"%s: Project %d - %s" % (settings.PAYPAL_PRODUCT_DESCRIPTION_PREFIX, int(invoice.project.id), invoice.project.name), "invoice": int(invoice.id), "lc": invoice.locale, "notify_url": settings.PAYPAL_NOTIFY_URL, "return_url": settings.PAYPAL_RETURN_URL, "cancel_url": settings.PAYPAL_CANCEL_URL, } pp_form = PayPalPaymentsForm(initial=pp_dict) if settings.PAYPAL_TEST: pp_button = pp_form.sandbox() else: pp_button = pp_form.render() action = request.POST.get("action", None) return render_to_response( "rsr/donate_step3.html", { "invoice": invoice, "payment_engine": engine, "pp_form": pp_form, "pp_button": pp_button, "p": p, "has_sponsor_banner": has_sponsor_banner, "live_earth_enabled": settings.LIVE_EARTH_ENABLED, }, context_instance=RequestContext(request), ) else: donate_form = InvoiceForm(user=request.user, project=p, engine=engine) return render_to_response( "rsr/donate_step2.html", { "donate_form": donate_form, "payment_engine": engine, "p": p, "has_sponsor_banner": has_sponsor_banner, "live_earth_enabled": settings.LIVE_EARTH_ENABLED, }, context_instance=RequestContext(request), )
def render_page(request, order, selectdiscountform=None, claimdiscountform=None, dropforms=None): context = {} if float( order.get_full_price() ) < 0.01: # Free service. Don't show discount forms. Clear coupons so they are not wasted. context['show_discounts'] = False order.reset_discount_claims() order.save() else: context['show_discounts'] = True # Define forms for managing discounts on order if not dropforms: dropforms = [] for claim in order.get_discount_claims(): dropforms.append({ 'label': claim.discount.display_text, 'form': coupons.forms.RemoveDiscountForm( initial={u'discount': claim.pk}) }) context['dropforms'] = dropforms if not selectdiscountform: available_claims = order.get_unused_discount_claims() if available_claims: selectdiscountform = coupons.forms.SelectDiscountForm( request.user, available_claims=available_claims) else: selectdiscountform = None context['selectdiscountform'] = selectdiscountform if not claimdiscountform: claimdiscountform = coupons.forms.ClaimOrSelectDiscountForm( request.user) context['claimdiscountform'] = claimdiscountform # Define invoice data invoice = order.calculate_price() order.save() context['invoice'] = invoice if float( order.get_amount_to_pay() ) < 0.01: # No payment due. Free service or 100% covered with discounts context['paid_service'] = False return render_to_response("order/submit_payment.html", RequestContext(request, context)) else: context['paid_service'] = True # paypal button paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": invoice['amount_due'], "item_name": order.get_service_description(), "invoice": order.invoice_id, "notify_url": "%s%s" % (settings.ROOT_URL, reverse('paypal-ipn')), "return_url": "%s%s" % (settings.ROOT_URL, 'paymentreceived/'), "cancel_return": "%s%s" % (settings.ROOT_URL, 'paymentcanceled/'), } form = PayPalPaymentsForm(initial=paypal_dict) if settings.RACK_ENV == 'production': context["pay_button"] = form.render() else: context["pay_button"] = form.sandbox() context["pay_button_message"] = mark_safe( _('Clicking the "Buy Now" button will submit your order and take you away from this site.' ) + '<br/>' + _('Please complete your secure payment with PayPal.')) return render_to_response("order/submit_payment.html", RequestContext(request, context))
def processcheckout(request): """ Paypal checkout """ from django.conf import settings from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed from pages.models import Page, Bill if request.method == "POST" and request.is_ajax(): page = getPage(request) ####GET THE KEYS try: charges = request.POST["charges"] domainname = request.POST["domainname"] domainoption = request.POST["domainoption"] except: return HttpResponseBadRequest(u"%s" % _("an error occured when processing checkout")) if charges == "yearly": ###########################CHECK CONFORMITY OF CHARGES item_name = _("EldonPage suscribtion for 1 year") amount = settings.PAGE_MONTHLY_PRICE * 12 t3 = "Y" p3 = 1 elif charges == "sixmonth": item_name = _("EldonPage suscribtion for six month") amount = settings.PAGE_MONTHLY_PRICE * 6 t3 = "M" p3 = 6 elif charges == "monthly": item_name = _("EldonPage suscribtion for 1 monthly") amount = settings.PAGE_MONTHLY_PRICE t3 = "M" p3 = 1 else: return HttpResponseBadRequest(u"%s" % _("an error occured when processing checkout")) import uuid ###########################CREATE THE BILL invoice = str(uuid.uuid1()) #### WE CHECK FIRST IF USER HAS ALREADY CREATED A BILL try: bill = Bill.objects.get(page=page, invoice_type="creation") bill.amount = amount bill.invoice = invoice bill.domain = domainname bill.save() except Bill.DoesNotExist: bill = Bill(page=page, amount=amount, invoice=invoice, domain=domainname) bill.save() except: return HttpResponse(u"%s" % _("an error occured when processing checkout")) from paypal.standard.forms import PayPalPaymentsForm paypal = { "business": settings.PAYPAL_RECEIVER_EMAIL, # settings.PAYPAL_RECEIVER_EMAIL, "item_name": item_name, "currency_code": "USD", "a3": amount, # monthly price "p3": p3, # duration of each unit (depends on unit) "t3": t3, # duration unit ("M for Month") "src": "1", # make payments recur "sra": "1", # reattempt payment on payment error "no_note": "1", # remove extra notes (optional) "invoice": invoice, "cmd": "_xclick-subscriptions", "custom": page.id, "notify_url": "http://eldonpage.com/sdf5f2sf/sdf56sfd/sfsf6s3/sdfd3r23rs/csdc65/32w3cds/", "return_url": "http://eldonpage.com/editpage/", "cancel_return": "http://eldonpage.com/editpage/", } form = PayPalPaymentsForm(initial=paypal) if settings.DEBUG: rendered_form = form.sandbox() else: rendered_form = form.render() return HttpResponse(rendered_form) return HttpResponseBadRequest(u"%s" % _("an error occured when processing checkout"))
def ClientServicesPayment(request, serviceId, payStatus, date_created, userId): service = Service.objects.all().get(id=int(serviceId)) if date_created == "0": date_created = str(time.time()) invoice_number = date_created + "-service-" + str(serviceId) + "-" + str(userId) invoice_collection = None service_collection = [] cost = 0 if len(Invoice.objects.all().filter(number=invoice_number)) == 0: payStatus = "3" else: invoice_collection = Invoice.objects.all().get(number=invoice_number) collection = InvoiceCollection.objects.all().get(invoice=invoice_collection) for i in collection.collection.all(): cost = cost + i.service.service_cost service_collection.append(i.service) paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": cost, "item_name": service.name, "invoice": invoice_number, "notify_url": "%s%s" % (settings.SITE_NAME, reverse("paypal-ipn")), "return_url": settings.SITE_NAME + "/new/client/paypal/payment/service/" + serviceId + "/1/" + date_created + "/" + userId + "/", "cancel_return": settings.SITE_NAME + "/new/client/paypal/payment/service/" + serviceId + "/0/" + date_created + "/" + userId + "/", } if payStatus == "1": invoice_collection.is_paid = True invoice_collection.save() for i in collection.collection.all(): i.is_paid = True i.save() if payStatus == "0": invoice_collection.is_paid = False invoice_collection.save() for i in collection.collection.all(): i.is_paid = False i.save() form = PayPalPaymentsForm(initial=paypal_dict) context = { "form": form.sandbox(), "services": service_collection, "payStatus": payStatus, "invoice_number": invoice_number, "date_created": date_created, "serviceId": serviceId, "cost": cost, } return render_with_user(request, "client/payment.html", context)