{"id":2360,"date":"2023-08-19T06:08:46","date_gmt":"2023-08-19T06:08:46","guid":{"rendered":"https:\/\/kingstonmuslims.ca\/school\/?page_id=2360"},"modified":"2025-08-13T17:20:03","modified_gmt":"2025-08-13T17:20:03","slug":"fees-payment-options","status":"publish","type":"page","link":"https:\/\/kingstonmuslims.ca\/school\/fees-payment-options\/","title":{"rendered":"Pay Online"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2360\" class=\"elementor elementor-2360\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7ba2533 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7ba2533\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-330c454\" data-id=\"330c454\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f8954b6 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"f8954b6\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-87b21c9 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"87b21c9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Pay Online<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-db59f74 elementor-widget elementor-widget-text-editor\" data-id=\"db59f74\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\">You can use your credit card to make payment online.<\/span><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; letter-spacing: 0.01em;\">\u00a0<\/span><\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b25577d\" data-id=\"b25577d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2622802 elementor-widget__width-initial elementor-widget elementor-widget-shortcode\" data-id=\"2622802\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"wpapp_widget\"><div id=\"elements_wrapper_wpapp_paypal_button_0\"><div class=\"wpapp_payment_subject\"><span class=\"payment_subject\"><strong>Payment for ISK Evening and Weekend School Fees<\/strong><\/span><\/div><select id=\"select_wpapp_paypal_button_0\" name=\"select_wpapp_paypal_button_0\" class=\"\"><option value=\"monthly-fee-for-islamic-studies-35\">Monthly Fee for Islamic Studies - $35<\/option><option value=\"monthly-fee-for-two-quran-classes-weekly-50\">Monthly Fee for Two Qur&#039;an Classes Weekly - $50<\/option><option value=\"monthly-fee-for-quran-classes-sisters-50\">Monthly Fee for Qur&#039;an Classes (Sisters) - $50<\/option><option value=\"monthly-fee-for-two-quran-classes-weekly-and-islamic-studies-85\">Monthly Fee for Two Qur&#039;an Classes Weekly and Islamic Studies - $85<\/option><\/select><div class=\"wpapp_other_amount_label\"><strong>Other Amount<\/strong><\/div><div class=\"wpapp_other_amount_input\"><input type=\"number\" min=\"1\" step=\"any\" name=\"wpapp_other_amt\" title=\"Other Amount\" value=\"\" placeholder=\"\" class=\"wpapp_other_amt_input\" style=\"max-width:80px;\" \/><\/div><div class=\"wpapp_ref_title_label\"><strong>Type the name of the student and his\/her class:<\/strong><\/div><div class=\"wpapp_ref_value\"><input type=\"text\" name=\"wpapp_button_reference\" maxlength=\"60\" value=\"\" placeholder=\"\" class=\"wp_pp_button_reference\" \/><\/div><div style=\"margin-bottom:10px;\"><\/div><\/div>    <div class=\"wpapp-ppcp-button-wrapper\">\n\n    <!-- PayPal button container where the button will be rendered -->\n    <div id=\"wpapp_paypal_button_0\" style=\"width: 250px;\"><\/div>\n\n    <script type=\"text\/javascript\">\n        document.addEventListener( \"wpapp_paypal_sdk_loaded\", function() { \n            \/\/Anything that goes here will only be executed after the PayPal SDK is loaded.\n            console.log('PayPal JS SDK is loaded for WPAPP.');\n\n            \/**\n             * See documentation: https:\/\/developer.paypal.com\/sdk\/js\/reference\/\n             *\/\n            paypal.Buttons({\n                \/**\n                 * Optional styling for buttons.\n                 * \n                 * See documentation: https:\/\/developer.paypal.com\/sdk\/js\/reference\/#link-style\n                 *\/\n                style: {\n                    color: 'blue',\n                    shape: 'rect',\n                    height: 35,\n                    label: 'checkout',\n                    layout: 'vertical',\n                },\n\n                \/\/ Triggers when the button first renders.\n                onInit: onInitHandler,\n\n                \/\/ Triggers when the button is clicked.\n                onClick: onClickHandler,\n\n                \/\/ Setup the transaction.\n                createOrder: createOrderHandler,\n\n                \/\/ Handle the onApprove event.\n                onApprove: onApproveHandler,\n\n                \/\/ Handle unrecoverable errors.\n                onError: onErrorHandler,\n\n                \/\/ Handles onCancel event.\n                onCancel: onCancelHandler,\n\n            })\n            .render('#wpapp_paypal_button_0')\n            .catch((err) => {\n                console.error('PayPal Buttons failed to render');\n            });\n\n            function onInitHandler(data, actions) {\n                \/\/This function is called when the button first renders.\n            }\n\n            function onClickHandler(data, actions) {\n                \/\/This function is called when the button is clicked.\n            }\n\n            \n            \/**\n             * See documentation: https:\/\/developer.paypal.com\/sdk\/js\/reference\/#link-createorder\n             *\/\n            async function createOrderHandler() {\n                \/\/ Create the order in PayPal using the PayPal API.\n                \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/integrate\/\n                \/\/ The server-side Create Order API is used to generate the Order. Then the Order-ID is returned.                    \n                console.log('Setting up the AJAX request for create-order call.');\n\n                \/\/ First, select the interacted button's wrapper div by its ID (so  we can target various elements within it)\n                const wrapper_div_interacted_button = document.getElementById('elements_wrapper_wpapp_paypal_button_0');\n                \/\/console.log(wrapper_div_interacted_button);\n\n                \/\/ Read the select element and get the selected option's value and text.\n                js_on_page_embed_button_id = 'wpapp_paypal_button_0';\n                var selectId = 'select_' + js_on_page_embed_button_id; \/\/ Construct the select ID\n                var selectElement = document.getElementById(selectId);\n                \/\/console.log(\"Select Element: \", selectElement);\n\n                \/\/Get the other amount field value.\n                var other_amount_input = wrapper_div_interacted_button.querySelector('.wpapp_other_amt_input');\n\n                \/\/Get the reference field value.\n                var pp_reference_field = wrapper_div_interacted_button.querySelector('.wp_pp_button_reference');\n\n                let pp_bn_data = {};\n                pp_bn_data.transient_name = '6a330ad5bf35e_wpapp_paypal_button_0';\n                pp_bn_data.on_page_button_id = 'wpapp_paypal_button_0';\n                pp_bn_data.selected_val = selectElement.value;\/\/value of the selected option. (we can use it get the item name from the transient).\n                pp_bn_data.other_amount_val = other_amount_input ? other_amount_input.value : '';\n                pp_bn_data.pp_reference_field = pp_reference_field ? pp_reference_field.value : '';\n                console.log('WPAPP Button Data Below');\n                console.log(pp_bn_data);\n\n                \/\/Ajax action: <prefix>_pp_create_order \n                let post_data = 'action=wpapp_pp_create_order&data=' + JSON.stringify(pp_bn_data) + '&_wpnonce=ac3020ce40';\n                \/\/console.log('Post Data: ', post_data);\/\/Debugging purposes only.\n\n                try {\n                    \/\/ Using fetch for AJAX request. This is supported in all modern browsers.\n                    const response = await fetch(\"https:\/\/kingstonmuslims.ca\/school\/wp-admin\/admin-ajax.php\", {\n                        method: \"post\",\n                        headers: {\n                            'Content-Type': 'application\/x-www-form-urlencoded'\n                        },\n                        body: post_data\n                    });\n\n                    const response_data = await response.json();\n\n                    if (response_data.order_id) {\n                        console.log('Create-order API call to PayPal completed successfully.');\n                        \/\/If we need to see the order details, uncomment the following line.\n                        \/\/const order_data = response_data.order_data;\n                        \/\/console.log('Order data: ' + JSON.stringify(order_data));\n                        return response_data.order_id;\n                    } else {\n                        const error_message = JSON.stringify(response_data);\n                        console.error('Error occurred during create-order call to PayPal. ' + error_message);\n                        throw new Error(error_message);\n                    }\n                } catch (error) {\n                    console.error(error);\n                    alert('Could not initiate PayPal Checkout...\\n\\n' + JSON.stringify(error));\n                }\n            }\n\n            async function onApproveHandler(data, actions) {\n                console.log('Successfully created a transaction.');\n\n                \/\/ Show the spinner while we process this transaction.\n                \/\/ First, select the button container by its ID.\n                const pp_button_container = document.getElementById('wpapp_paypal_button_0');\n                \/\/ Then, navigate to the parent element of the PPCP button container.\n                const parent_wrapper = pp_button_container.parentElement;\n                \/\/ Finally, within the parent wrapper, select the spinner container\n                const pp_button_spinner_container = parent_wrapper.querySelector('.wpapp-pp-button-spinner-container');\n                \/\/console.log('Button spinner container: ', pp_button_spinner_container);\n\n                pp_button_container.style.display = 'none'; \/\/Hide the buttons\n                pp_button_spinner_container.style.display = 'inline-block'; \/\/Show the spinner.\n\n                \/\/ Capture the order in PayPal using the PayPal API.\n                \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/integrate\/\n                \/\/ The server-side capture-order API is used. Then the Capture-ID is returned.\n                console.log('Setting up the AJAX request for capture-order call.');\n                let pp_bn_data = {};\n                pp_bn_data.order_id = data.orderID;\n                pp_bn_data.on_page_button_id = 'wpapp_paypal_button_0';\n                pp_bn_data.transient_name = '6a330ad5bf35e_wpapp_paypal_button_0';\n                \/\/pp_bn_data.custom_field = encodeURIComponent(custom_data);\/\/If you have any custom data to send to the server (it needs to be URI encoded so special characters are not lost.)\n\n                \/\/Ajax action: <prefix>_pp_capture_order\n                let post_data = 'action=wpapp_pp_capture_order&data=' + JSON.stringify(pp_bn_data) + '&_wpnonce=ac3020ce40';\n                try {\n                    const response = await fetch(\"https:\/\/kingstonmuslims.ca\/school\/wp-admin\/admin-ajax.php\", {\n                        method: \"post\",\n                        headers: {\n                            'Content-Type': 'application\/x-www-form-urlencoded'\n                        },\n                        body: post_data\n                    });\n\n                    const response_data = await response.json();\n                    const txn_data = response_data.txn_data;\n                    const error_detail = txn_data?.details?.[0];\n                    const error_msg = response_data.error_msg;\/\/Our custom error message.\n                    \/\/ Three cases to handle:\n                    \/\/ (1) Recoverable INSTRUMENT_DECLINED -> call actions.restart()\n                    \/\/ (2) Other non-recoverable errors -> Show a failure message\n                    \/\/ (3) Successful transaction -> Show confirmation or thank you message\n\n                    if (response_data.capture_id) {\n                        \/\/ Successful transaction -> Show confirmation or thank you message\n                        console.log('Capture-order API call to PayPal completed successfully.');\n\n                        \/\/Redirect to the Thank you page URL if it is set.\n                        return_url = 'http:\/\/www.kingstonmuslims.ca\/school\/fees-payment-options';\n                        if( return_url ){\n                            \/\/redirect to the Thank you page URL.\n                            console.log('Redirecting to the Thank you page URL: ' + return_url);\n                            window.location.href = return_url;\n                            return;\n                        } else {\n                            \/\/No return URL is set. Just show a success message.\n                            console.log('No return URL is set in the settings. Showing a success message.');\n\n                            \/\/We are going to show the success message in the wpapp-ppcp-button-wrapper's container.\n                            txn_success_msg = 'Transaction completed successfully! Feel free to browse our site for another checkout.';\n                            \/\/ Select all elements with the class 'wpapp-ppcp-button-wrapper'\n                            var button_divs = document.querySelectorAll('.wpapp-ppcp-button-wrapper');\n\n                            \/\/ Loop through the NodeList and update each element\n                            button_divs.forEach(function(div, index) {\n                                div.innerHTML = '<div id=\"wpapp-btn-txn-success-msg-' + index + '\" class=\"wpapp-btn-txn-success-msg\">' + txn_success_msg + '<\/div>';\n                            });\n\n                            \/\/ Scroll to the success message container of the button we are interacting with.\n                            const interacted_button_container_element = document.getElementById(elements_wrapper_wpapp_paypal_button_0);\n                            if (interacted_button_container_element) {\n                                interacted_button_container_element.scrollIntoView({ behavior: 'smooth', block: 'start' });\n                            }\n                            return;\n                        }\n\n                    } else if (error_detail?.issue === \"INSTRUMENT_DECLINED\") {\n                        \/\/ Recoverable INSTRUMENT_DECLINED -> call actions.restart()\n                        console.log('Recoverable INSTRUMENT_DECLINED error. Calling actions.restart()');\n                        return actions.restart();\n                    } else if ( error_msg && error_msg.trim() !== '' ) {\n                        \/\/Our custom error message from the server.\n                        console.error('Error occurred during PayPal checkout process.');\n                        console.error( error_msg );\n                        alert( error_msg );\n                    } else {\n                        \/\/ Other non-recoverable errors -> Show a failure message\n                        console.error('Non-recoverable error occurred during PayPal checkout process.');\n                        console.error( error_detail );\n                        \/\/alert('Unexpected error occurred with the transaction. Enable debug logging to get more details.\\n\\n' + JSON.stringify(error_detail));\n                    }\n\n                    \/\/Return the button and the spinner back to their orignal display state.\n                    pp_button_container.style.display = 'block'; \/\/ Show the buttons\n                    pp_button_spinner_container.style.display = 'none'; \/\/ Hide the spinner\n\n                } catch (error) {\n                    console.error(error);\n                    alert('PayPal returned an error! Transaction could not be processed. Enable the debug logging feature to get more details...\\n\\n' + JSON.stringify(error));\n                }\n            }\n\n            function onErrorHandler(err) {\n                console.error('An error prevented the user from checking out with PayPal. ' + JSON.stringify(err));\n                alert( 'Error occurred during PayPal checkout process.\\n\\n' + JSON.stringify(err) );\n            }\n            \n            function onCancelHandler (data) {\n                console.log('Checkout operation cancelled by the customer.');\n                \/\/Return to the parent page which the button does by default.\n            }            \n\n        });\n    <\/script>\n\n    <style>\n        @keyframes wpapp-pp-button-spinner {\n            to {transform: rotate(360deg);}\n        }\n        .wpapp-pp-button-spinner {\n            margin: 0 auto;\n            text-indent: -9999px;\n            vertical-align: middle;\n            box-sizing: border-box;\n            position: relative;\n            width: 60px;\n            height: 60px;\n            border-radius: 50%;\n            border: 5px solid #ccc;\n            border-top-color: #0070ba;\n            animation: wpapp-pp-button-spinner .6s linear infinite;\n        }\n        .wpapp-pp-button-spinner-container {\n            width: 100%;\n            text-align: center;\n            margin-top:10px;\n            display: none;\n        }\n    <\/style>\n    <div class=\"wpapp-pp-button-spinner-container\">\n        <div class=\"wpapp-pp-button-spinner\"><\/div>\n    <\/div>    \n    <\/div><!-- end of button-wrapper -->\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f592bb6 elementor-section-content-middle hidden elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f592bb6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-0a32e84\" data-id=\"0a32e84\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ccb9a06 elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"ccb9a06\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-faa8247 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"faa8247\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Pay for Quran Booster<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e64921 elementor-widget elementor-widget-text-editor\" data-id=\"3e64921\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><p><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\">You can use your credit card to make payment online.<\/span><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; letter-spacing: 0.01em;\">\u00a0<\/span><\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c337c40\" data-id=\"c337c40\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e4be631 elementor-widget__width-initial elementor-widget elementor-widget-shortcode\" data-id=\"e4be631\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"wpapp_widget\"><div id=\"elements_wrapper_wpapp_paypal_button_1\"><div class=\"wpapp_payment_subject\"><span class=\"payment_subject\"><strong><\/strong><\/span><\/div><select id=\"select_wpapp_paypal_button_1\" name=\"select_wpapp_paypal_button_1\" class=\"\"><option value=\"payment-for-2025-isk-quran-booster-150-00\">Payment for 2025 ISK Quran Booster - 150.00<\/option><\/select><div class=\"wpapp_ref_title_label\"><strong>Type the name of the student or Email Address:<\/strong><\/div><div class=\"wpapp_ref_value\"><input type=\"text\" name=\"wpapp_button_reference\" maxlength=\"60\" value=\"\" placeholder=\"\" class=\"wp_pp_button_reference\" \/><\/div><div style=\"margin-bottom:10px;\"><\/div><\/div>    <div class=\"wpapp-ppcp-button-wrapper\">\n\n    <!-- PayPal button container where the button will be rendered -->\n    <div id=\"wpapp_paypal_button_1\" style=\"width: 250px;\"><\/div>\n\n    <script type=\"text\/javascript\">\n        document.addEventListener( \"wpapp_paypal_sdk_loaded\", function() { \n            \/\/Anything that goes here will only be executed after the PayPal SDK is loaded.\n            console.log('PayPal JS SDK is loaded for WPAPP.');\n\n            \/**\n             * See documentation: https:\/\/developer.paypal.com\/sdk\/js\/reference\/\n             *\/\n            paypal.Buttons({\n                \/**\n                 * Optional styling for buttons.\n                 * \n                 * See documentation: https:\/\/developer.paypal.com\/sdk\/js\/reference\/#link-style\n                 *\/\n                style: {\n                    color: 'blue',\n                    shape: 'rect',\n                    height: 35,\n                    label: 'checkout',\n                    layout: 'vertical',\n                },\n\n                \/\/ Triggers when the button first renders.\n                onInit: onInitHandler,\n\n                \/\/ Triggers when the button is clicked.\n                onClick: onClickHandler,\n\n                \/\/ Setup the transaction.\n                createOrder: createOrderHandler,\n\n                \/\/ Handle the onApprove event.\n                onApprove: onApproveHandler,\n\n                \/\/ Handle unrecoverable errors.\n                onError: onErrorHandler,\n\n                \/\/ Handles onCancel event.\n                onCancel: onCancelHandler,\n\n            })\n            .render('#wpapp_paypal_button_1')\n            .catch((err) => {\n                console.error('PayPal Buttons failed to render');\n            });\n\n            function onInitHandler(data, actions) {\n                \/\/This function is called when the button first renders.\n            }\n\n            function onClickHandler(data, actions) {\n                \/\/This function is called when the button is clicked.\n            }\n\n            \n            \/**\n             * See documentation: https:\/\/developer.paypal.com\/sdk\/js\/reference\/#link-createorder\n             *\/\n            async function createOrderHandler() {\n                \/\/ Create the order in PayPal using the PayPal API.\n                \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/integrate\/\n                \/\/ The server-side Create Order API is used to generate the Order. Then the Order-ID is returned.                    \n                console.log('Setting up the AJAX request for create-order call.');\n\n                \/\/ First, select the interacted button's wrapper div by its ID (so  we can target various elements within it)\n                const wrapper_div_interacted_button = document.getElementById('elements_wrapper_wpapp_paypal_button_1');\n                \/\/console.log(wrapper_div_interacted_button);\n\n                \/\/ Read the select element and get the selected option's value and text.\n                js_on_page_embed_button_id = 'wpapp_paypal_button_1';\n                var selectId = 'select_' + js_on_page_embed_button_id; \/\/ Construct the select ID\n                var selectElement = document.getElementById(selectId);\n                \/\/console.log(\"Select Element: \", selectElement);\n\n                \/\/Get the other amount field value.\n                var other_amount_input = wrapper_div_interacted_button.querySelector('.wpapp_other_amt_input');\n\n                \/\/Get the reference field value.\n                var pp_reference_field = wrapper_div_interacted_button.querySelector('.wp_pp_button_reference');\n\n                let pp_bn_data = {};\n                pp_bn_data.transient_name = '6a330ad5bf35e_wpapp_paypal_button_1';\n                pp_bn_data.on_page_button_id = 'wpapp_paypal_button_1';\n                pp_bn_data.selected_val = selectElement.value;\/\/value of the selected option. (we can use it get the item name from the transient).\n                pp_bn_data.other_amount_val = other_amount_input ? other_amount_input.value : '';\n                pp_bn_data.pp_reference_field = pp_reference_field ? pp_reference_field.value : '';\n                console.log('WPAPP Button Data Below');\n                console.log(pp_bn_data);\n\n                \/\/Ajax action: <prefix>_pp_create_order \n                let post_data = 'action=wpapp_pp_create_order&data=' + JSON.stringify(pp_bn_data) + '&_wpnonce=dc7ecd2866';\n                \/\/console.log('Post Data: ', post_data);\/\/Debugging purposes only.\n\n                try {\n                    \/\/ Using fetch for AJAX request. This is supported in all modern browsers.\n                    const response = await fetch(\"https:\/\/kingstonmuslims.ca\/school\/wp-admin\/admin-ajax.php\", {\n                        method: \"post\",\n                        headers: {\n                            'Content-Type': 'application\/x-www-form-urlencoded'\n                        },\n                        body: post_data\n                    });\n\n                    const response_data = await response.json();\n\n                    if (response_data.order_id) {\n                        console.log('Create-order API call to PayPal completed successfully.');\n                        \/\/If we need to see the order details, uncomment the following line.\n                        \/\/const order_data = response_data.order_data;\n                        \/\/console.log('Order data: ' + JSON.stringify(order_data));\n                        return response_data.order_id;\n                    } else {\n                        const error_message = JSON.stringify(response_data);\n                        console.error('Error occurred during create-order call to PayPal. ' + error_message);\n                        throw new Error(error_message);\n                    }\n                } catch (error) {\n                    console.error(error);\n                    alert('Could not initiate PayPal Checkout...\\n\\n' + JSON.stringify(error));\n                }\n            }\n\n            async function onApproveHandler(data, actions) {\n                console.log('Successfully created a transaction.');\n\n                \/\/ Show the spinner while we process this transaction.\n                \/\/ First, select the button container by its ID.\n                const pp_button_container = document.getElementById('wpapp_paypal_button_1');\n                \/\/ Then, navigate to the parent element of the PPCP button container.\n                const parent_wrapper = pp_button_container.parentElement;\n                \/\/ Finally, within the parent wrapper, select the spinner container\n                const pp_button_spinner_container = parent_wrapper.querySelector('.wpapp-pp-button-spinner-container');\n                \/\/console.log('Button spinner container: ', pp_button_spinner_container);\n\n                pp_button_container.style.display = 'none'; \/\/Hide the buttons\n                pp_button_spinner_container.style.display = 'inline-block'; \/\/Show the spinner.\n\n                \/\/ Capture the order in PayPal using the PayPal API.\n                \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/integrate\/\n                \/\/ The server-side capture-order API is used. Then the Capture-ID is returned.\n                console.log('Setting up the AJAX request for capture-order call.');\n                let pp_bn_data = {};\n                pp_bn_data.order_id = data.orderID;\n                pp_bn_data.on_page_button_id = 'wpapp_paypal_button_1';\n                pp_bn_data.transient_name = '6a330ad5bf35e_wpapp_paypal_button_1';\n                \/\/pp_bn_data.custom_field = encodeURIComponent(custom_data);\/\/If you have any custom data to send to the server (it needs to be URI encoded so special characters are not lost.)\n\n                \/\/Ajax action: <prefix>_pp_capture_order\n                let post_data = 'action=wpapp_pp_capture_order&data=' + JSON.stringify(pp_bn_data) + '&_wpnonce=dc7ecd2866';\n                try {\n                    const response = await fetch(\"https:\/\/kingstonmuslims.ca\/school\/wp-admin\/admin-ajax.php\", {\n                        method: \"post\",\n                        headers: {\n                            'Content-Type': 'application\/x-www-form-urlencoded'\n                        },\n                        body: post_data\n                    });\n\n                    const response_data = await response.json();\n                    const txn_data = response_data.txn_data;\n                    const error_detail = txn_data?.details?.[0];\n                    const error_msg = response_data.error_msg;\/\/Our custom error message.\n                    \/\/ Three cases to handle:\n                    \/\/ (1) Recoverable INSTRUMENT_DECLINED -> call actions.restart()\n                    \/\/ (2) Other non-recoverable errors -> Show a failure message\n                    \/\/ (3) Successful transaction -> Show confirmation or thank you message\n\n                    if (response_data.capture_id) {\n                        \/\/ Successful transaction -> Show confirmation or thank you message\n                        console.log('Capture-order API call to PayPal completed successfully.');\n\n                        \/\/Redirect to the Thank you page URL if it is set.\n                        return_url = 'https:\/\/www.kingstonmuslims.ca\/school\/fees-payment-options';\n                        if( return_url ){\n                            \/\/redirect to the Thank you page URL.\n                            console.log('Redirecting to the Thank you page URL: ' + return_url);\n                            window.location.href = return_url;\n                            return;\n                        } else {\n                            \/\/No return URL is set. Just show a success message.\n                            console.log('No return URL is set in the settings. Showing a success message.');\n\n                            \/\/We are going to show the success message in the wpapp-ppcp-button-wrapper's container.\n                            txn_success_msg = 'Transaction completed successfully! Feel free to browse our site for another checkout.';\n                            \/\/ Select all elements with the class 'wpapp-ppcp-button-wrapper'\n                            var button_divs = document.querySelectorAll('.wpapp-ppcp-button-wrapper');\n\n                            \/\/ Loop through the NodeList and update each element\n                            button_divs.forEach(function(div, index) {\n                                div.innerHTML = '<div id=\"wpapp-btn-txn-success-msg-' + index + '\" class=\"wpapp-btn-txn-success-msg\">' + txn_success_msg + '<\/div>';\n                            });\n\n                            \/\/ Scroll to the success message container of the button we are interacting with.\n                            const interacted_button_container_element = document.getElementById(elements_wrapper_wpapp_paypal_button_1);\n                            if (interacted_button_container_element) {\n                                interacted_button_container_element.scrollIntoView({ behavior: 'smooth', block: 'start' });\n                            }\n                            return;\n                        }\n\n                    } else if (error_detail?.issue === \"INSTRUMENT_DECLINED\") {\n                        \/\/ Recoverable INSTRUMENT_DECLINED -> call actions.restart()\n                        console.log('Recoverable INSTRUMENT_DECLINED error. Calling actions.restart()');\n                        return actions.restart();\n                    } else if ( error_msg && error_msg.trim() !== '' ) {\n                        \/\/Our custom error message from the server.\n                        console.error('Error occurred during PayPal checkout process.');\n                        console.error( error_msg );\n                        alert( error_msg );\n                    } else {\n                        \/\/ Other non-recoverable errors -> Show a failure message\n                        console.error('Non-recoverable error occurred during PayPal checkout process.');\n                        console.error( error_detail );\n                        \/\/alert('Unexpected error occurred with the transaction. Enable debug logging to get more details.\\n\\n' + JSON.stringify(error_detail));\n                    }\n\n                    \/\/Return the button and the spinner back to their orignal display state.\n                    pp_button_container.style.display = 'block'; \/\/ Show the buttons\n                    pp_button_spinner_container.style.display = 'none'; \/\/ Hide the spinner\n\n                } catch (error) {\n                    console.error(error);\n                    alert('PayPal returned an error! Transaction could not be processed. Enable the debug logging feature to get more details...\\n\\n' + JSON.stringify(error));\n                }\n            }\n\n            function onErrorHandler(err) {\n                console.error('An error prevented the user from checking out with PayPal. ' + JSON.stringify(err));\n                alert( 'Error occurred during PayPal checkout process.\\n\\n' + JSON.stringify(err) );\n            }\n            \n            function onCancelHandler (data) {\n                console.log('Checkout operation cancelled by the customer.');\n                \/\/Return to the parent page which the button does by default.\n            }            \n\n        });\n    <\/script>\n\n    <style>\n        @keyframes wpapp-pp-button-spinner {\n            to {transform: rotate(360deg);}\n        }\n        .wpapp-pp-button-spinner {\n            margin: 0 auto;\n            text-indent: -9999px;\n            vertical-align: middle;\n            box-sizing: border-box;\n            position: relative;\n            width: 60px;\n            height: 60px;\n            border-radius: 50%;\n            border: 5px solid #ccc;\n            border-top-color: #0070ba;\n            animation: wpapp-pp-button-spinner .6s linear infinite;\n        }\n        .wpapp-pp-button-spinner-container {\n            width: 100%;\n            text-align: center;\n            margin-top:10px;\n            display: none;\n        }\n    <\/style>\n    <div class=\"wpapp-pp-button-spinner-container\">\n        <div class=\"wpapp-pp-button-spinner\"><\/div>\n    <\/div>    \n    <\/div><!-- end of button-wrapper -->\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3d59f0d elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3d59f0d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-d6bdf0a\" data-id=\"d6bdf0a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2c292ef elementor-widget__width-initial elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"2c292ef\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0078760 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"0078760\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Tuition Fees<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1962765 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"1962765\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><b>2025 &#8211; 2026 ISK Evening and Weekend School tuition fees<\/b><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa60c3c elementor-widget elementor-widget-text-editor\" data-id=\"aa60c3c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><p style=\"font-size: 16px; font-style: normal; font-weight: 400; color: #7a7a7a; font-family: Lato, sans-serif; letter-spacing: 0.16px;\">For monthly payments, the first payment must be made by the <span style=\"font-weight: bold;\">first day of classes<\/span>\u00a0on\u00a0<span style=\"font-weight: bold;\">Saturday, September 6th <\/span>for Islamic Studies\u00a0<span style=\"font-weight: bold;\">OR Tuesday, September 9th <\/span>for Qur\u2019an only students <span style=\"font-weight: 400;\">(note: <\/span><i><span style=\"font-weight: 400;\">no Quran tuition<\/span><\/i><span style=\"font-weight: 400;\"> is due for the <\/span><i><span style=\"font-weight: 400;\">month of March<\/span><\/i><span style=\"font-weight: 400;\"> due to Ramadan).<\/span>\u00a0For following months, the payment must be made by the\u00a0<span style=\"font-weight: bold;\">1st day of that month<\/span>.\u00a0<\/p><p style=\"font-size: 16px; font-style: normal; font-weight: 400; color: #7a7a7a; font-family: Lato, sans-serif; letter-spacing: 0.16px;\">Yearly payments must be made by the\u00a0<span style=\"font-weight: bold;\">first day of classes<\/span>.\u00a0<\/p><p style=\"font-size: 16px; font-style: normal; font-weight: 400; color: #7a7a7a; font-family: Lato, sans-serif; letter-spacing: 0.16px;\"><span style=\"font-weight: bold;\">Book fees must be paid by the first day of classes<\/span>. Books will be distributed on the first day of classes,\u00a0<span style=\"font-weight: bold;\">Saturday, September 6th, 2025<\/span> for Islamic studies and <span style=\"font-weight: bold;\">Tuesday, September 9th, 2025<\/span>\u00a0for Qur\u2019an. If the student is\u00a0 unable to pick-up their books at that time, email\u00a0<a href=\"mailto:isk.school.edu@gmail.com\">isk.school.edu@gmail.com<\/a>\u00a0to schedule an alternative time slot for pickup. Please note, students may bring their own copy of the Qur\u2019an provided it can be marked in and is approved by their teacher. Copies of the Qur\u2019an may be purchased from the Islamic Society of Kingston, please email\u00a0<a href=\"mailto:isk.school.edu@gmail.com\">isk.school.edu@gmail.com<\/a>\u00a0for more details. If books are lost or damaged,\u00a0<span style=\"font-weight: bold;\">students are responsible for purchasing replacements<\/span>.\u00a0<\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-e2a715d\" data-id=\"e2a715d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fed1241 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"fed1241\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1210\" height=\"643\" src=\"https:\/\/kingstonmuslims.ca\/school\/wp-content\/uploads\/2025\/08\/ISK_Classes_2025.png\" class=\"attachment-full size-full wp-image-2763\" alt=\"\" srcset=\"https:\/\/kingstonmuslims.ca\/school\/wp-content\/uploads\/2025\/08\/ISK_Classes_2025.png 1210w, https:\/\/kingstonmuslims.ca\/school\/wp-content\/uploads\/2025\/08\/ISK_Classes_2025-300x159.png 300w, https:\/\/kingstonmuslims.ca\/school\/wp-content\/uploads\/2025\/08\/ISK_Classes_2025-1024x544.png 1024w, https:\/\/kingstonmuslims.ca\/school\/wp-content\/uploads\/2025\/08\/ISK_Classes_2025-768x408.png 768w\" sizes=\"(max-width: 1210px) 100vw, 1210px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-085ac62 elementor-widget elementor-widget-text-editor\" data-id=\"085ac62\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>*For Al-Qalam &amp; At-Kitaab there will be an additional one time $10 charge for a Qur\u2019anic workbook for your child. Due to Ramadan, yearly Quran tuition is 9 months instead of 10 months, like Islamic Studies.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b1040f6 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b1040f6\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-6007a3c\" data-id=\"6007a3c\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-68298f7 elementor-widget elementor-widget-spacer\" data-id=\"68298f7\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-0abe240\" data-id=\"0abe240\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-04d616c elementor-widget elementor-widget-heading\" data-id=\"04d616c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Payment Options <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f2fc84 elementor-widget elementor-widget-text-editor\" data-id=\"2f2fc84\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">The first tuition payment must be made by <\/span><b>the first day of classes (September 6th or September 9th for Qur\u2019an only students)<\/b><span style=\"font-weight: 400;\">. If making monthly payments, subsequent tuition payments must be made by the <\/span><b>1st day of that month<\/b><span style=\"font-weight: 400;\">.<\/span> <span style=\"font-weight: 400;\">Options to pay tuition include:\u00a0<\/span><\/p><ol><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Online:<\/span><span style=\"font-weight: 400;\"> through the ISK school website<\/span><\/li><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cash:<\/span><span style=\"font-weight: 400;\"> in-person by scheduling a time slot with <\/span><a href=\"mailto:isk.school.edu@gmail.com\"><span style=\"font-weight: 400;\">isk.school.edu@gmail.com<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/li><li><span style=\"font-weight: 400;\">Post-dated cheques:<\/span><span style=\"font-weight: 400;\"> made payable to \u201cThe Islamic Society of Kingston\u201d in a sealed envelope with: <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">1) the name(s) of your child(ren) <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">2) your name; and <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">3) your phone number <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">Please give the envelope to the Education Facilitator.<\/span><\/li><\/ol><p><span style=\"font-weight: 400;\">A receipt will be given to you to acknowledge payment.\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Pay Online You can use your credit card to make payment online.\u00a0 Pay for Quran Booster You can use your credit card to make payment online.\u00a0 Tuition Fees 2025 &#8211; 2026 ISK Evening and Weekend School tuition fees For monthly payments, the first payment must be made by the first day of classes\u00a0on\u00a0Saturday, September 6th [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2360","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/pages\/2360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/comments?post=2360"}],"version-history":[{"count":66,"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/pages\/2360\/revisions"}],"predecessor-version":[{"id":2818,"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/pages\/2360\/revisions\/2818"}],"wp:attachment":[{"href":"https:\/\/kingstonmuslims.ca\/school\/wp-json\/wp\/v2\/media?parent=2360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}