Google Pay Sample Code
- 1.Helper object including all necessary components:const gpRequest = {environment: GPEnvironment.test,merchantInfo: {merchantName: "Example Merchant"},buttonOptions: {buttonSizeMode: GPButtonSizeMode.fill},billingParams: {billingAddressRequired: true,billingAddressFormat: GPBillingAddressFormat.full},shippingParams: {emailRequired: true,onGetShippingCosts: function (shippingData) {logDebug({label: "onGetShippingCosts",data: shippingData});return {"shipping-001": "0.00","shipping-002": "1.99","shipping-003": "10.00"}},onGetShippingOptions: function (shippingData) {logDebug({label: "onGetShippingOptions",data: shippingData});let selectedOptionid = "shipping-001";if (shippingData && shippingData.shippingOptionData && shippingData.shippingOptionData.id !== "shipping_option_unselected") {selectedOptionid = shippingData.shippingOptionData.id;}return {defaultSelectedOptionId: selectedOptionid,shippingOptions: [{"id": "shipping-001","label": "Free: Standard shipping","description": "Free Shipping delivered in 5 business days."},{"id": "shipping-002","label": "$1.99: Standard shipping","description": "Standard shipping delivered in 3 business days."},{"id": "shipping-003","label": "$10: Express shipping","description": "Express shipping delivered in 1 business day."},]};}},onGetTransactionInfo: function () {let amt = getAmount();return {displayItems: [{label: "Subtotal",type: "SUBTOTAL",price: amt.toString(),},{label: "Tax",type: "TAX",price: (0.1 * amt).toString(),}],countryCode: 'US',currencyCode: "USD",totalPriceStatus: "FINAL",totalPrice: (1.1 * amt).toString(),totalPriceLabel: "Total"}},onBeforeProcessPayment: function () {return new Promise(function (resolve, reject) {try {//Do some validation hereresolve(iStatus.success);} catch (err) {reject(err);}});},onProcessPayment: function (paymentResponse) {return new Promise(function (resolve, reject) {try {// show returned data in developer console for debuggingconsole.log("paymentResponse", JSON.stringify(paymentResponse));paymentToken = paymentResponse.paymentData.paymentMethodData.tokenizationData.token;console.log("paymentToken", paymentToken);const amt = (paymentResponse && paymentResponse.transactionInfo && paymentResponse.transactionInfo.totalPrice) || 0;try {if (amt <= 0) {throw "Payment is not authorized. Invalid amount. Amount must be greater than 0";}authorizeGPay(paymentResponse).then((resp) => {gpRequest.handleResponse(resp);setGPPayload(JSON.stringify(paymentResponse, null, 2));resolve(resp);}).catch((rej) => {console.error("Payment is not authorized", JSON.stringify(rej));setGPPayload("");setTimeout(function () { alert("Payment is not authorized. Please check the logs") }, 500);reject(rej);});} catch (err) {const emsg = JSON.stringify(err);console.error(emsg);setTimeout(function () { alert(emsg) }, 500);reject({error: err});}} catch (err) {reject(err);}});},onPaymentCanceled: function(respCanceled) {setTimeout(function () { alert("Payment was canceled") }, 500);},handleResponse: function (resp) {const respObj = JSON.parse(resp);if (respObj) {if (respObj.xError) {setTimeout(function () { alert(`There was a problem with your order (${respObj.xRefNum})!`) }, 500);} elsesetTimeout(function () { alert(`Thank you for your order (${respObj.xRefNum})!`) }, 500);}},};
- 2.Object with necessary properties to initialize Google Pay:function initGP() {return {merchantInfo: gpRequest.merchantInfo,buttonOptions: gpRequest.buttonOptions,onGetTransactionInfo: "gpRequest.onGetTransactionInfo",environment: gpRequest.environment,billingParameters: gpRequest.billingParams,shippingParameters: {emailRequired: gpRequest.shippingParams.emailRequired,onGetShippingCosts: "gpRequest.shippingParams.onGetShippingCosts",onGetShippingOptions: "gpRequest.shippingParams.onGetShippingOptions"},onBeforeProcessPayment: "gpRequest.onBeforeProcessPayment",onProcessPayment: "gpRequest.onProcessPayment",onPaymentCanceled: "gpRequest.onPaymentCanceled",onGPButtonLoaded: "gpButtonLoaded"};}
- 3.Google Pay iField:<style>......iframe {border: 0 solid black;width: 600px;height: 28px;padding: 0px;margin-bottom: 5px;}iframe.gp {display: block;border: 0;width: 250px;height: 45px;padding: 0px;margin: 0px;}.hidden {display: none;}.....</style><body><form id="payment-form" method="POST">.....<input id="amountId" name="xAmount" placeholder="Amount"></input>.....<iframe id="igp" class="gp hidden" data-ifields-id="igp" data-ifields-oninit="initGP" src="igp.htm"allowpaymentrequestsandbox="allow-popups allow-modals allow-scripts allow-same-origin"title="GPay checkout page"></iframe>.....</form></body>
- 4.Let’s enable Google Pay for the website:document.addEventListener("DOMContentLoaded", function(event) {.....ckGooglePay.enableGooglePay({amountField: 'amount'});.....}
- 5.
Last modified 8mo ago