def checkout(request, application, lines=[], invoice_text=None, vouchers=[], internal=False): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.WC_PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) checkout_params = { 'system': settings.WC_PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri('/'), 'return_url': request.build_absolute_uri(reverse('external-application-success-invoice')), 'return_preload_url': request.build_absolute_uri('/'), 'force_redirect': True, 'proxy': True if internal else False, 'invoice_text': invoice_text } print(' -------- main utils > checkout > checkout_params ---------- ') print(checkout_params) create_checkout_session(request, checkout_params) if internal: response = place_order_submission(request) else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie( settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True ) return response
def checkout_existing_invoice(request, invoice, return_url_ns='public_booking_success'): #basket_params = { # # 'products': invoice.order.basket.lines.all(), # 'products': lines, # 'vouchers': vouchers, # 'system': settings.PAYMENT_SYSTEM_ID, # 'custom_basket': True, #} basket, basket_hash = use_existing_basket_from_invoice(invoice.reference) checkout_params = { 'system': settings.PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri('/'), 'return_url': request.build_absolute_uri(reverse(return_url_ns)), 'return_preload_url': request.build_absolute_uri(reverse(return_url_ns)), 'force_redirect': True, 'invoice_text': invoice.text, } if request.user.is_anonymous(): # We need to determine the basket owner and set it to the checkout_params to proceed the payment application_fee = ApplicationFee.objects.filter( invoice_reference=invoice.reference) # application_fee_invoice = ApplicationFeeInvoice.objects.filter(invoice_reference=invoice.reference) if application_fee: application_fee = application_fee[0] checkout_params[ 'basket_owner'] = application_fee.approval.relevant_applicant_email_user.id else: # Should not reach here # At the moment, there should be only the 'annual rental fee' invoices for anonymous user pass create_checkout_session(request, checkout_params) # response = HttpResponseRedirect(reverse('checkout:index')) # use HttpResponse instead of HttpResponseRedirect - HttpResonseRedirect does not pass cookies which is important for ledger to get the correct basket response = HttpResponse("<script> window.location='" + reverse('checkout:index') + "';</script> <a href='" + reverse('checkout:index') + "'> Redirecting please wait: " + reverse('checkout:index') + "</a>") # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def checkout(request, proposal, lines, return_url_ns='public_booking_success', return_preload_url_ns='public_booking_success', invoice_text=None, vouchers=[], internal=False): #import ipdb; ipdb.set_trace() basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.WC_PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) #fallback_url = request.build_absolute_uri('/') checkout_params = { 'system': settings.WC_PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri( '/'), # 'http://mooring-ria-jm.dbca.wa.gov.au/' 'return_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' 'return_preload_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' 'force_redirect': True, 'proxy': True if internal else False, 'invoice_text': invoice_text, # 'Reservation for Jawaid Mushtaq from 2019-05-17 to 2019-05-19 at RIA 005' } # if not internal: # checkout_params['check_url'] = request.build_absolute_uri('/api/booking/{}/booking_checkout_status.json'.format(booking.id)) if internal or request.user.is_anonymous(): #checkout_params['basket_owner'] = booking.customer.id checkout_params['basket_owner'] = proposal.submitter_id create_checkout_session(request, checkout_params) # if internal: # response = place_order_submission(request) # else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def checkout(request, application, lines=[], invoice_text=None, vouchers=[], internal=False, add_checkout_params={}): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.WC_PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) request.basket = basket checkout_params = { 'system': settings.WC_PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri('/'), 'return_url': request.build_absolute_uri( reverse('external-application-success-invoice')), 'return_preload_url': request.build_absolute_uri('/'), 'force_redirect': True, 'proxy': True if internal else False, 'invoice_text': invoice_text } checkout_params.update(add_checkout_params) print(' -------- main utils > checkout > checkout_params ---------- ') print(checkout_params) create_checkout_session(request, checkout_params) if internal: response = place_order_submission(request) else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def checkout(request, booking, lines, invoice_text=None, vouchers=[], internal=False): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.PS_PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) checkout_params = { 'system': settings.PS_PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri('/'), 'return_url': request.build_absolute_uri(reverse('public_booking_success')), 'return_preload_url': request.build_absolute_uri(reverse('public_booking_success')), 'force_redirect': True, 'proxy': True if internal else False, 'invoice_text': invoice_text, } if not internal: checkout_params['check_url'] = request.build_absolute_uri( '/api/booking/{}/booking_checkout_status.json'.format(booking.id)) if internal or request.user.is_anonymous(): checkout_params['basket_owner'] = booking.customer.id create_checkout_session(request, checkout_params) if internal: response = place_order_submission(request) else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def checkout_existing_invoice(request, invoice, lines, return_url_ns='public_booking_success', return_preload_url_ns='public_booking_success', invoice_text=None, vouchers=[], proxy=False): #basket_params = { # # 'products': invoice.order.basket.lines.all(), # 'products': lines, # 'vouchers': vouchers, # 'system': settings.PAYMENT_SYSTEM_ID, # 'custom_basket': True, #} basket, basket_hash = use_existing_basket_from_invoice(invoice.reference) checkout_params = { 'system': settings.PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri('/'), 'return_url': request.build_absolute_uri(reverse(return_url_ns)), 'return_preload_url': request.build_absolute_uri(reverse(return_url_ns)), 'force_redirect': True, 'invoice_text': invoice.text, } create_checkout_session(request, checkout_params) # response = HttpResponseRedirect(reverse('checkout:index')) # use HttpResponse instead of HttpResponseRedirect - HttpResonseRedirect does not pass cookies which is important for ledger to get the correct basket response = HttpResponse("<script> window.location='" + reverse('checkout:index') + "';</script> <a href='" + reverse('checkout:index') + "'> Redirecting please wait: " + reverse('checkout:index') + "</a>") # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def checkout(request, email_user, lines, return_url_ns='public_payment_success', return_preload_url_ns='public_payment_success', invoice_text=None, vouchers=[], proxy=False): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) checkout_params = { 'system': settings.PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri( '/'), # 'http://mooring-ria-jm.dbca.wa.gov.au/' 'return_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' 'return_preload_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' 'force_redirect': True, 'invoice_text': invoice_text, # 'Reservation for Jawaid Mushtaq from 2019-05-17 to 2019-05-19 at RIA 005' } if proxy or request.user.is_anonymous(): checkout_params['basket_owner'] = email_user.id create_checkout_session(request, checkout_params) response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def get(self, request, *args, **kwargs): application = get_object_or_404(Application, pk=args[0]) product = get_product(generate_product_title(application)) user = application.applicant.id error_url = request.build_absolute_uri( reverse('wl_applications:preview')) success_url = request.build_absolute_uri( reverse('wl_applications:complete')) basket_params = { 'products': [{ 'id': product.id if product is not None else None }], 'vouchers': [], 'system': PAYMENT_SYSTEM_ID } # senior discount if application.is_senior_offer_applicable: basket_params['vouchers'].append({'code': SENIOR_VOUCHER_CODE}) basket, basket_hash = create_basket_session(request, basket_params) checkout_params = { 'system': PAYMENT_SYSTEM_ID, 'basket_owner': user, 'associate_invoice_with_token': True, 'fallback_url': error_url, 'return_url': success_url, 'force_redirect': True, 'template': 'wl/payment_information.html', 'proxy': is_officer(request.user), } create_checkout_session(request, checkout_params) if checkout_params['proxy']: response = place_order_submission(request) else: response = HttpResponseRedirect(reverse('checkout:index')) return response
def get(self, request, *args, **kwargs): application = get_object_or_404(Application, pk=args[0]) product = get_product(generate_product_title(application)) user = application.applicant.id error_url = request.build_absolute_uri(reverse('wl_applications:preview')) success_url = request.build_absolute_uri(reverse('wl_applications:complete')) basket_params = { 'products': [ {'id': product.id if product is not None else None} ], 'vouchers': [], 'system': PAYMENT_SYSTEM_ID } # senior discount if application.is_senior_offer_applicable: basket_params['vouchers'].append({'code': SENIOR_VOUCHER_CODE}) basket, basket_hash = create_basket_session(request, basket_params) checkout_params = { 'system': PAYMENT_SYSTEM_ID, 'basket_owner': user, 'associate_invoice_with_token': True, 'fallback_url': error_url, 'return_url': success_url, 'force_redirect': True, 'template': 'wl/payment_information.html', 'proxy': is_officer(request.user), } create_checkout_session(request, checkout_params) if checkout_params['proxy']: response = place_order_submission(request) else: response = HttpResponseRedirect(reverse('checkout:index')) return response
def checkout(request, email_user, lines, return_url_ns='public_payment_success', return_preload_url_ns='public_payment_success', invoice_text=None, vouchers=[], proxy=False): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) #fallback_url = request.build_absolute_uri('/') checkout_params = { 'system': settings.PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri( '/'), # 'http://mooring-ria-jm.dbca.wa.gov.au/' 'return_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' 'return_preload_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' #'fallback_url': fallback_url, #'return_url': fallback_url, #'return_preload_url': fallback_url, 'force_redirect': True, #'proxy': proxy, 'invoice_text': invoice_text, # 'Reservation for Jawaid Mushtaq from 2019-05-17 to 2019-05-19 at RIA 005' } # if not internal: # checkout_params['check_url'] = request.build_absolute_uri('/api/booking/{}/booking_checkout_status.json'.format(booking.id)) #if internal or request.user.is_anonymous(): if proxy or request.user.is_anonymous(): #checkout_params['basket_owner'] = booking.customer.id # checkout_params['basket_owner'] = proposal.submitter_id # There isn't a submitter_id field... supposed to be submitter.id...? # anonymous_user = EmailUser.objects.get_or_create(email='*****@*****.**') checkout_params['basket_owner'] = email_user.id create_checkout_session(request, checkout_params) # if internal: # response = place_order_submission(request) # else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) # if booking.cost_total < 0: # response = HttpResponseRedirect('/refund-payment') # response.set_cookie( # settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, # max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, # secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True # ) # # # Zero booking costs # if booking.cost_total < 1 and booking.cost_total > -1: # response = HttpResponseRedirect('/no-payment') # response.set_cookie( # settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, # max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, # secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True # ) return response
def checkout(request, proposal, lines, return_url_ns='public_booking_success', return_preload_url_ns='public_booking_success', invoice_text=None, vouchers=[], proxy=False): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.PAYMENT_SYSTEM_ID, 'custom_basket': True, } basket, basket_hash = create_basket_session(request, basket_params) #fallback_url = request.build_absolute_uri('/') checkout_params = { 'system': settings.PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri( '/'), # 'http://mooring-ria-jm.dbca.wa.gov.au/' 'return_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' 'return_preload_url': request.build_absolute_uri(reverse( return_url_ns)), # 'http://mooring-ria-jm.dbca.wa.gov.au/success/' #'fallback_url': fallback_url, #'return_url': fallback_url, #'return_preload_url': fallback_url, 'force_redirect': True, #'proxy': proxy, 'invoice_text': invoice_text, # 'Reservation for Jawaid Mushtaq from 2019-05-17 to 2019-05-19 at RIA 005' #'invoice_reference': '05572565342', } # if not internal: # checkout_params['check_url'] = request.build_absolute_uri('/api/booking/{}/booking_checkout_status.json'.format(booking.id)) #if internal or request.user.is_anonymous(): if proxy or request.user.is_anonymous(): #checkout_params['basket_owner'] = booking.customer.id checkout_params['basket_owner'] = proposal.submitter_id create_checkout_session(request, checkout_params) # if internal: # response = place_order_submission(request) # else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) # if booking.cost_total < 0: # response = HttpResponseRedirect('/refund-payment') # response.set_cookie( # settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, # max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, # secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True # ) # # Zero booking costs #if booking.cost_total < 1 and booking.cost_total > -1: #if invoice_text == 'Application Fee' and proposal.application_type.name=='T Class' and proposal.org_applicant and proposal.allow_full_discount: if invoice_text == 'Application Fee' and proposal.allow_full_discount: response = HttpResponseRedirect(reverse('zero_fee_success')) response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) return response
def checkout(request, booking, lines, invoice_text=None, vouchers=[], internal=False): basket_params = { 'products': lines, 'vouchers': vouchers, 'system': settings.PS_PAYMENT_SYSTEM_ID, 'custom_basket': True, } set_session_booking(request.session, 'test', 'JASON TEST') basket, basket_hash = create_basket_session(request, basket_params) checkout_params = { 'system': settings.PS_PAYMENT_SYSTEM_ID, 'fallback_url': request.build_absolute_uri('/'), 'return_url': request.build_absolute_uri( reverse('payment_success') ), #request.build_absolute_uri(reverse('public_booking_success')), 'return_preload_url': request.build_absolute_uri( reverse('payment_success') ), #request.build_absolute_uri(reverse('public_booking_success')), 'force_redirect': True, 'proxy': True if internal else False, 'invoice_text': invoice_text, } # if not internal: # checkout_params['check_url'] = request.build_absolute_uri('/api/booking/{}/booking_checkout_status.json'.format(booking.id)) if internal or request.user.is_anonymous(): checkout_params['basket_owner'] = booking.customer.id create_checkout_session(request, checkout_params) set_session_booking(request.session, 'basket_id', basket.id) set_session_booking(request.session, 'application_id', booking['app'].id) set_session_booking(request.session, 'booking_id', booking['booking'].id) set_session_booking(request.session, 'routeid', booking['app'].routeid) # if internal: # response = place_order_submission(request) # else: response = HttpResponseRedirect(reverse('checkout:index')) # inject the current basket into the redirect response cookies # or else, anonymous users will be directionless response.set_cookie(settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True) #if booking.cost_total < 0: # response = HttpResponseRedirect('/refund-payment') # response.set_cookie( # settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, # max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, # secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True # ) ## Zero booking costs #if booking.cost_total < 1 and booking.cost_total > -1: # response = HttpResponseRedirect('/no-payment') # response.set_cookie( # settings.OSCAR_BASKET_COOKIE_OPEN, basket_hash, # max_age=settings.OSCAR_BASKET_COOKIE_LIFETIME, # secure=settings.OSCAR_BASKET_COOKIE_SECURE, httponly=True # ) return response