var applicationId = "sq0idp-IQrA8__YCN3rTsAhGBkkcQ"; var locationId = "6FGK9V4WTH5QY"; function buildForm(form) { if (SqPaymentForm.isSupportedBrowser()) { form.build(); form.recalculateSize(); } } /* * function: requestCardNonce * * requestCardNonce is triggered when the "Pay with credit card" button is * clicked * * Modifying this function is not required, but can be customized if you * wish to take additional action when the form button is clicked. */ function requestCardNonce(event) { // Don't submit the form until SqPaymentForm returns with a nonce event.preventDefault(); // Request a nonce from the SqPaymentForm object paymentForm.requestCardNonce(); } // Create and initialize a payment form object var paymentForm = new SqPaymentForm({ // Initialize the payment form elements applicationId: applicationId, locationId: locationId, inputClass: 'sq-input', autoBuild: false, // Customize the CSS for SqPaymentForm iframe elements inputStyles: [{ fontSize: '16px', fontFamily: 'Helvetica Neue', padding: '16px', color: '#373F4A', backgroundColor: 'transparent', lineHeight: '24px', placeholderColor: '#CCC', _webkitFontSmoothing: 'antialiased', _mozOsxFontSmoothing: 'grayscale' }], // Initialize Apple Pay placeholder ID applePay: false, // Initialize Masterpass placeholder ID masterpass: false, // Initialize the credit card placeholders cardNumber: { elementId: 'sq-card-number', placeholder: '- - - - - - - - - - - - - - - -' }, cvv: { elementId: 'sq-cvv', placeholder: 'CVV' }, expirationDate: { elementId: 'sq-expiration-date', placeholder: 'MM/YY' }, postalCode: { elementId: 'sq-postal-code', placeholder: '12345' }, // SqPaymentForm callback functions callbacks: { /* * callback function: createPaymentRequest * Triggered when: a digital wallet payment button is clicked. * Replace the JSON object declaration with a function that creates * a JSON object with Digital Wallet payment details */ createPaymentRequest: function () { return { requestShippingAddress: false, requestBillingInfo: true, currencyCode: "USD", countryCode: "US", total: { label: "MERCHANT NAME", amount: "100", pending: false }, lineItems: [ { label: "Subtotal", amount: "100", pending: false } ] } }, /* * callback function: cardNonceResponseReceived * Triggered when: SqPaymentForm completes a card nonce request */ cardNonceResponseReceived: function (errors, nonce, cardData) { if (errors) { // Log errors from nonce generation to the Javascript console console.log("Encountered errors:"); errors.forEach(function (error) { console.log(' ' + error.message); alert(error.message); }); return; } // Assign the nonce value to the hidden form field document.getElementById('card-nonce').value = nonce; document.getElementById('card-name').value = document.getElementById('reader-name').value; document.getElementById('card-email').value = document.getElementById('reader-email').value; // POST the nonce form to the payment processing page document.getElementById('nonce-form').submit(); }, /* * callback function: unsupportedBrowserDetected * Triggered when: the page loads and an unsupported browser is detected */ unsupportedBrowserDetected: function () { /* PROVIDE FEEDBACK TO SITE VISITORS */ }, /* * callback function: inputEventReceived * Triggered when: visitors interact with SqPaymentForm iframe elements. */ inputEventReceived: function (inputEvent) { switch (inputEvent.eventType) { case 'focusClassAdded': /* HANDLE AS DESIRED */ break; case 'focusClassRemoved': /* HANDLE AS DESIRED */ break; case 'errorClassAdded': document.getElementById("error").innerHTML = "Please fix card information errors before continuing."; break; case 'errorClassRemoved': /* HANDLE AS DESIRED */ document.getElementById("error").style.display = "none"; break; case 'cardBrandChanged': /* HANDLE AS DESIRED */ break; case 'postalCodeChanged': /* HANDLE AS DESIRED */ break; } }, /* * callback function: paymentFormLoaded * Triggered when: SqPaymentForm is fully loaded */ paymentFormLoaded: function () { /* HANDLE AS DESIRED */ console.log("The form loaded!"); } } });