greentechuniversity.com Open in urlscan Pro
107.23.163.128  Public Scan

Submitted URL: https://solartaxbook.com/
Effective URL: https://greentechuniversity.com/
Submission: On November 21 via api from US — Scanned from US

Form analysis 1 forms found in the DOM

Name: paymentForm

<form id="paymentForm" name="paymentForm" class="ng-pristine ng-invalid ng-invalid-required ng-valid-email" novalidate="novalidate">
  <h3 class="tpl-6__checkout__title mb-sm-24 mb-16">Checkout</h3>
  <h4 class="tpl-6__checkout__subtitle mb-sm-20 mb-16">Contact</h4>
  <div class="row mobile-display">
    <div class="col-sm-6 col-12">
      <div class="form-group d-flex flex-column">
        <input type="text" class="form-control order-2 ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required" ng-class="{'typed': order.customer.first_name !== ''}" autofill="" id="fname" name="fname" ng-model="order.customer.first_name"
          required="" spellcheck="false" value="" autocomplete="given-name">
        <label for="fname" class="order-1">First Name</label>
      </div>
    </div>
    <div class="col-sm-6 col-12">
      <div class="form-group d-flex flex-column">
        <input type="text" class="form-control order-2 ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required" ng-class="{'typed': order.customer.last_name !== ''}" autofill="" id="lname" name="lname" ng-model="order.customer.last_name"
          required="" spellcheck="false" value="" autocomplete="family-name">
        <label for="lname" class="order-1">Last Name</label>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col-sm-6 col-12">
      <div class="form-group d-flex flex-column">
        <input type="email" class="form-control form-control--icon form-control--email order-2 ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required" ng-class="{'typed': order.customer.email !== ''}" autofill="" id="email"
          name="email" ng-model="order.customer.email" required="" spellcheck="false" value="" autocomplete="email" ng-blur="onEmailBlur()">
        <label for="email" class="order-1">Email Address</label>
      </div>
    </div>
    <div class="col-sm-6 col-12">
      <!-- ngIf: checkoutState.product.properties.phone_number_field -->
    </div>
  </div>
  <h4 class="tpl-6__checkout__subtitle mt-sm-20 mb-16">Payment Methods</h4>
  <div id="payments" class="tpl-6__payment mb-sm-34 mb-24 mx-sm-0 mx-n16 p-sm-24 p-16">
    <div class="row">
      <div class="col-sm-auto col-12 order-sm-1 mt-sm-0 mt-16 order-3 ml-20 pr-0">
        <div class="custom-control custom-radio m-0">
          <input type="radio" id="creditCardRadio" name="paymentMethods" data-toggle="collapse" data-target="#cards:not(.show)" class="custom-control-input" ng-click="setPaymentType('cc_processor')" aria-expanded="true" checked="">
          <label class="custom-control-label d-flex align-items-center" for="creditCardRadio">
            <div class="payment-method-label" style="height: 16px"><span>Credit Card</span></div>
          </label>
        </div>
      </div>
      <div id="cards" class="col-12 collapse order-sm-4 order-3  show " data-parent="#payments">
        <div class="payment-element-container">
          <div class="payment-form cc-processor-form sampay-processor-form" ng-show="processor_selection == 'cc_processor'">
            <!-- ngIf: renderingPaymentElement -->
            <!-- ngIf: !renderingPaymentElement -->
            <div ng-if="!renderingPaymentElement" class="ng-scope">
              <stripe-element id="payment-element" instance="paymentElement" class="stripe-payment-element ng-isolate-scope">
                <div stripe-element-decorator="" class="StripeElement">
                  <div class="__PrivateStripeElement"
                    style="margin: -4px 0px !important; padding: 0px !important; border: none !important; display: block !important; background: transparent !important; position: relative !important; opacity: 1 !important; clear: both !important; transition: height 0.35s !important;">
                    <iframe name="__privateStripeFrame25511" frameborder="0" allowtransparency="true" scrolling="no" role="presentation" allow="payment *; publickey-credentials-get *"
                      src="https://js.stripe.com/v3/elements-inner-payment-bd49d9668c1f1f5bcffe67a6d6ae719b.html#wait=true&amp;rtl=false&amp;publicOptions[paymentMethodOrder][0]=card&amp;publicOptions[paymentMethodOrder][1]=affirm&amp;publicOptions[paymentMethodOrder][2]=afterpay_clearpay&amp;publicOptions[paymentMethodOrder][3]=klarna&amp;publicOptions[terms][applePay]=never&amp;publicOptions[terms][auBecsDebit]=never&amp;publicOptions[terms][bancontact]=never&amp;publicOptions[terms][card]=never&amp;publicOptions[terms][cashapp]=never&amp;publicOptions[terms][googlePay]=never&amp;publicOptions[terms][ideal]=never&amp;publicOptions[terms][paypal]=never&amp;publicOptions[terms][sepaDebit]=never&amp;publicOptions[terms][sofort]=never&amp;publicOptions[terms][usBankAccount]=never&amp;publicOptions[wallets][applePay]=never&amp;publicOptions[wallets][googlePay]=never&amp;publicOptions[layout][type]=accordion&amp;publicOptions[layout][defaultCollapsed]=false&amp;publicOptions[layout][radios]=false&amp;publicOptions[layout][spacedAccordionItems]=true&amp;stripeAccount=acct_1NPUg8KJ0l2kAwsI&amp;elementsInitSource=stripe.elements&amp;componentName=payment&amp;keyMode=live&amp;apiKey=pk_live_51NPUg8KJ0l2kAwsI7eXnH4u7jQS2M1IELGJtQIdDrFnZkpl2Mp3wFKJ4hdPwmPcqABiT0Pp0eTYoDTMUmFoqLkQh00OOF3VV2o&amp;referrer=https%3A%2F%2Fgreentechuniversity.com%2F&amp;controllerId=__privateStripeController2551"
                      title="Secure payment input frame"
                      style="border: 0px !important; margin: -4px; padding: 0px !important; width: calc(100% + 8px); min-width: 100% !important; overflow: hidden !important; display: block !important; user-select: none !important; transform: translate(0px) !important; color-scheme: light only !important; height: 279.531px; opacity: 1; transition: height 0.35s, opacity 0.4s 0.1s;"></iframe>
                  </div>
                </div>
              </stripe-element>
            </div><!-- end ngIf: !renderingPaymentElement -->
          </div>
        </div>
      </div>
      <div class="col-sm-auto col-12 order-sm-3 mt-sm-0 mt-16 order-2 ml-20 pr-0 ng-hide" ng-show="canMakePaymentResult &amp;&amp; (canMakePaymentResult.applePay || canMakePaymentResult.googlePay)">
        <div class="custom-control custom-radio m-0">
          <input type="radio" id="digitalWalletRadio" name="paymentMethods" data-toggle="collapse" data-target="#digital-wallets:not(.show)" class="custom-control-input" ng-click="setPaymentType('digital_wallet')" aria-expanded="false">
          <label class="custom-control-label d-flex align-items-center" for="digitalWalletRadio">
            <div ng-show="canMakePaymentResult.applePay" class="payment-method-label ng-hide">
              <img class="apple-pay-v2" src="https://d2n844f18s487r.cloudfront.net/modules/frontend/img/payment/applepay.svg" alt="Apple Pay"><span>Apple Pay</span>
            </div>
            <div ng-show="canMakePaymentResult.googlePay" class="payment-method-label ng-hide">
              <img class="google-pay-v2" src="https://d2n844f18s487r.cloudfront.net/modules/frontend/img/payment/googlepay.svg" alt="Google Pay"><span>Google Pay</span>
            </div>
          </label>
        </div>
      </div>
      <div id="digital-wallets" class="col-12 collapse order-sm-4 order-2  ng-hide" ng-hide="!canMakePaymentResult.applePay &amp;&amp; !canMakePaymentResult.googlePay" data-parent="#payments">
        <!-- ngIf: canMakePaymentResult.applePay -->
        <!-- ngIf: canMakePaymentResult.googlePay -->
      </div>
    </div>
  </div>
  <h4 class="tpl-6__checkout__subtitle mt-sm-20 mb-16">Order Summary</h4>
  <div id="order-summary-widget" box-loading="contextRefresh">
    <div id="summary-totals" class="box">
      <div class="invoice-item subtotal-row ng-hide" ng-show="checkoutContext.order.invoice.subtotal !== checkoutContext.order.invoice.total">
        <div class="invoice-label-col">
          <span class="invoice-item-label">Subtotal:</span>
        </div>
        <div class="invoice-amount-col float-right text-right">
          <span class="invoice-item-amount ng-binding">$99.99</span>
        </div>
      </div>
      <div class="invoice-item tax-row ng-hide" ng-show="checkoutContext.order.invoice.tax !== 0">
        <div class="invoice-label-col">
          <span class="invoice-item-label">Tax:</span>
        </div>
        <div class="invoice-amount-col float-right text-right">
          <span class="invoice-item-amount ng-binding">$0.00</span>
        </div>
      </div>
      <div class="invoice-item shipping-row ng-hide" ng-show="checkoutContext.order.invoice.shipping !== 0">
        <div class="invoice-label-col">
          <span class="invoice-item-label">Shipping:</span>
        </div>
        <div class="invoice-amount-col float-right text-right">
          <span class="invoice-item-amount ng-binding">$0.00</span>
        </div>
      </div>
      <div class="invoice-item discount-row ng-hide" ng-show="checkoutContext.order.invoice.discount !== 0">
        <div class="invoice-label-col">
          <span class="invoice-item-label">Discounts:</span>
        </div>
        <div class="invoice-amount-col float-right text-right">
          <span class="invoice-item-amount ng-binding">-$0.00</span>
        </div>
      </div>
      <div class="invoice-item total-row">
        <div class="invoice-label-col">
          <span class="invoice-item-label">Total:</span>
        </div>
        <div class="invoice-amount-col float-right text-right">
          <span class="invoice-item-amount ng-binding" id="total">$99.99 </span>
        </div>
      </div>
      <!-- ngIf: subscriptionsByProductId[checkoutContext.order.invoice.items[0].product_id] -->
    </div>
  </div>
  <div class="tpl-6__order text-center pt-sm-30 py-24">
    <div class="g-recaptcha-container">
      <script type="text/javascript">
        var recaptchaChallengeSeen = false;
        var recaptchaCallback = function(response) {
          window.recaptchaResponse = response;
        };
        var onloadCallback = function() {
          window.recaptchaWidgetId = grecaptcha.render('submit', {
            'sitekey': '6LfyULUmAAAAAJld89qgZEGDDIGnjfWqZGBkXh3t',
            'callback': recaptchaCallback,
            'size': 'invisible'
          });
        };
        const domObserver = new MutationObserver(() => {
          const iframe = document.querySelector("iframe[src^=\"https://www.google.com/recaptcha\"][src*=\"bframe\"]");
          if (!iframe) {
            return;
          }
          domObserver.disconnect();
          const recaptchaContainerObserver = new MutationObserver(() => {
            if (iframe.parentNode.parentNode.style.visibility !== "visible") {
              return;
            }
            recaptchaContainerObserver.disconnect();
            iframe.parentNode.parentNode.scrollIntoView(false);
            recaptchaChallengeSeen = true;
          });
          recaptchaContainerObserver.observe(iframe.parentNode.parentNode, {
            attributes: true
          });
        });
        domObserver.observe(document.documentElement || document.body, {
          childList: true,
          subtree: true
        });
        window.resetRecaptcha = function() {
          window.recaptchaResponse = undefined;
          grecaptcha.reset(window.recaptchaWidgetId);
          recaptchaChallengeSeen = false;
          domObserver.observe(document.documentElement || document.body, {
            childList: true,
            subtree: true
          });
        }
      </script>
      <input id="submit" type="hidden" value="Submit" style="">
      <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&amp;render=explicit" async="" defer=""></script>
      <script>
        const sleepUntil = async (f, timeoutMs) => {
          return new Promise((resolve, reject) => {
            const timeWas = new Date();
            const wait = setInterval(function() {
              if (f()) {
                clearInterval(wait);
                resolve();
              } else if (new Date() - timeWas > timeoutMs) { // Timeout
                clearInterval(wait);
                reject();
              }
            }, 20);
          });
        }

        function fetchToken() {
          window.resetRecaptcha();
          return new Promise(async function(resolve, reject) {
            grecaptcha.reset();
            grecaptcha.execute(window.recaptchaWidgetId);
            var responseReceived = false;
            try {
              await sleepUntil(() => window.recaptchaResponse, 60000);
              responseReceived = true;
              resolve('');
            } catch {
              reject('reCAPTCHA timeout exceeded!');
            }
            snowplow('trackSelfDescribingEvent', {
              event: {
                schema: 'iglu:com.samcart/recaptcha_challenge_shown_event/jsonschema/1-0-0',
                data: {
                  shown: recaptchaChallengeSeen,
                }
              }
            });
            snowplow('trackSelfDescribingEvent', {
              event: {
                schema: 'iglu:com.samcart/recaptcha_challenge_response_received_event/jsonschema/1-0-0',
                data: {
                  response_received: responseReceived,
                }
              }
            });
          });
        }
      </script>
    </div>
    <!-- ngIf: processor_selection !== 'digital_wallet' --><button type="submit" class="btn btn-primary mx-auto mb-sm-12 mb-20 w-100 main-cta ng-scope" id="placeOrder" name="placeOrder" ng-click="placeOrder('pdVw9ocNCnhbiDepoqtrJE0f')"
      ng-disabled="shippingCountryIsRestricted || isProcessingOrder" ng-if="processor_selection !== 'digital_wallet'"> BUY NOW! </button><!-- end ngIf: processor_selection !== 'digital_wallet' -->
    <div id="payment-request-button" class="mx-auto mb-sm-12 mb-20 ng-hide" ng-show="processor_selection === 'digital_wallet'" style="display: none;"></div>
  </div>
</form>

Text Content

Full Ebook Library

Mastering Solar Incentives

A Homeowners Guide to understanding and maximizing your Federal Solar Tax Credit

The Vermicomposting Super Book

Everything you have always wanted to know about composting with worms!

The Backwoods Blueprint

Your Guide for finding and purchasing off grid land for your homestead
adventure!

Buy Them All and Save!

The Solar Water Pumping Whitepaper

Everything you need to know to pump water with the power of the sun. From
calculations to pump testing data to what parts you need to make it all work!

What you need to know to evaluate your solar PV potential

The title says it all

Coming Soon: From Rain to Gain

Your complete guide to harvesting and utilizing rainwater on your homestead.

Hack My Homestead Podcast




CHECKOUT

CONTACT

First Name
Last Name
Email Address


PAYMENT METHODS

Credit Card

Apple Pay
Google Pay


ORDER SUMMARY

Subtotal:
$99.99
Tax:
$0.00
Shipping:
$0.00
Discounts:
-$0.00
Total:
$99.99

BUY NOW!



© 2024 GreenTech University. All Rights Reserved.






PROCESSING