Welcome to Zuora Product Documentation

Explore our rich library of product information

Sample code for implementing client-side SDK integration

This document provides sample code for integrating a client-side SDK to implement Google Pay functionality, including handling payment sessions and transaction results.

Example code implementation


<script>
    const publishableKey = "pk_rO0ABXenAF2s7QAF…";

    const renderForm = () => {
        const zuora = Zuora(publishableKey);
        zuora.createGooglePayButton({
            countryCode: "US",
            locale: "en_US",
            currency: "USD",
            amount: "10.00",
            allowedCardNetworks: ["AMEX", "DISCOVER", "MASTERCARD", "VISA"],
            buttonHeight: "40px",
            buttonRadius: "5px",
            buttonColor: "black",
            buttonType: "pay",
            createPaymentSession: () => {
                return new Promise((resolve, reject) => {
                    fetch("/sdk-test/payment-session.json?seed=" + Math.random(), {
                        method: "GET",
                    }).then((response) => {
                        if (response.ok) {
                            return response.json();
                        } else {
                            return reject("Payment session request is rejected.");
                        }
                    }).then((data) => {
                        console.log("==========");
                        console.log("Got Payment Session Token");
                        console.log("==========");
                        console.log(data.token);
                        return resolve(data.token);
                    }).catch((error) => {
                        return reject(error);
                    });
                });
            },
            onComplete: (result) => {
                console.log("==========");
                console.log("Payment Result");
                console.log("==========");
                console.log(result);
                resultMessage("Transaction Result: <br />"
                    + "    Success: " + result.success + "<br />"
                    + "    Payment Method Id: " + result.paymentMethodId + "<br />"
                    + "    Payment Id: : " + result.paymentId + "<br />"
                );
            }
        }).then(function(googlePayButton) {
            googlePayButton.mount("#payment-form-container")
        }).catch(function(error) {
            console.error(error);
        });
    }

    function resultMessage(message) {
        const container = document.querySelector("#result-message");
        container.innerHTML = message;
    }
</script>
    

Results

The onComplete function returns result in the following structure:

On Success


{
    success: true,
    paymentMethodId?: string;
    paymentId?: string;
}
    

On Error


{
    success: false,
    error: {
        type: string;
        code: string;
        message: string;
    }
}