@justifi/webcomponents 6.6.0 → 6.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{Refund-BX0mjsAQ.js → GooglePay-BwiJ_80p.js} +415 -0
- package/dist/cjs/additional-questions-details_5.cjs.entry.js +2 -2
- package/dist/cjs/{badge-_nY1l5Rq.js → badge-Cc87HAsf.js} +1 -1
- package/dist/cjs/bank-account-document-form-inputs_8.cjs.entry.js +9 -8
- package/dist/cjs/bank-account-form.cjs.entry.js +4 -4
- package/dist/cjs/business-details-core.cjs.entry.js +3 -3
- package/dist/cjs/{business.service-Dffp64u6.js → business.service-q93NsTG_.js} +1 -1
- package/dist/cjs/{button-CARQPDm-.js → button-fUPGXjU_.js} +1 -1
- package/dist/cjs/card-form.cjs.entry.js +4 -4
- package/dist/cjs/{check-pkg-version-DZC7jOGP.js → check-pkg-version-cLAIX_H6.js} +2 -2
- package/dist/cjs/{checkout.service-C1HcsrjQ.js → checkout.service-CwelwhrT.js} +1 -1
- package/dist/cjs/checkouts-list-core.cjs.entry.js +8 -7
- package/dist/cjs/{checkouts-table-Bgqkaez4.js → checkouts-table-BBtqxG2F.js} +2 -2
- package/dist/cjs/custom-popper_2.cjs.entry.js +3 -3
- package/dist/cjs/{dispute.service-CJsWYMYk.js → dispute.service-q5ha39uN.js} +1 -1
- package/dist/cjs/form-alert_5.cjs.entry.js +1 -1
- package/dist/cjs/form-control-checkbox.cjs.entry.js +5 -5
- package/dist/cjs/form-control-date.cjs.entry.js +4 -4
- package/dist/cjs/{form-control-error-text-mhOq2Edp.js → form-control-error-text-Dg_65HGK.js} +1 -1
- package/dist/cjs/form-control-file-v2_2.cjs.entry.js +5 -5
- package/dist/cjs/{form-control-help-text-BoRpAoX6.js → form-control-help-text-tB5u1-5M.js} +1 -1
- package/dist/cjs/form-control-monetary-provisioning.cjs.entry.js +3 -3
- package/dist/cjs/form-control-monetary.cjs.entry.js +5 -5
- package/dist/cjs/form-control-number-masked_3.cjs.entry.js +4 -4
- package/dist/cjs/form-control-number.cjs.entry.js +5 -5
- package/dist/cjs/form-control-radio.cjs.entry.js +3 -3
- package/dist/cjs/form-control-select_2.cjs.entry.js +6 -6
- package/dist/cjs/{get-payment-details-BblcGN2B.js → get-payment-details-DidIAK2i.js} +2 -2
- package/dist/cjs/{get-subaccounts-z4dNQDjx.js → get-subaccounts-BE_wcfM7.js} +2 -2
- package/dist/cjs/gross-payment-chart-core.cjs.entry.js +4 -4
- package/dist/cjs/{header-1-CBO8uDuZ.js → header-1-Bqejh9no.js} +1 -1
- package/dist/cjs/{header-3-CPWtI1t0.js → header-3-DQ649Me2.js} +1 -1
- package/dist/cjs/hidden-input_2.cjs.entry.js +7 -7
- package/dist/cjs/{index-C2ITzalN.js → index-CajjbB9t.js} +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/{insurance-state-BMHITXoD.js → insurance-state-DsGnIHMM.js} +1 -1
- package/dist/cjs/internal-tokenize-payment-method_7.cjs.entry.js +25 -26
- package/dist/cjs/justifi-additional-questions-form-step_9.cjs.entry.js +12 -11
- package/dist/cjs/justifi-additional-statement_8.cjs.entry.js +9 -9
- package/dist/cjs/{justifi-apple-pay_7.cjs.entry.js → justifi-apple-pay_8.cjs.entry.js} +905 -258
- package/dist/cjs/justifi-bank-account-billing-form-simple_3.cjs.entry.js +4 -4
- package/dist/cjs/justifi-business-details.cjs.entry.js +7 -6
- package/dist/cjs/justifi-business-form.cjs.entry.js +9 -8
- package/dist/cjs/justifi-checkout.cjs.entry.js +15 -16
- package/dist/cjs/justifi-checkouts-list-filters.cjs.entry.js +26 -12
- package/dist/cjs/justifi-checkouts-list.cjs.entry.js +11 -10
- package/dist/cjs/justifi-details.cjs.entry.js +2 -2
- package/dist/cjs/justifi-dispute-management-core.cjs.entry.js +1 -1
- package/dist/cjs/justifi-dispute-management.cjs.entry.js +6 -5
- package/dist/cjs/justifi-dispute-notification_3.cjs.entry.js +12 -11
- package/dist/cjs/justifi-gross-payment-chart.cjs.entry.js +6 -5
- package/dist/cjs/justifi-order-terminals.cjs.entry.js +12 -11
- package/dist/cjs/justifi-payment-details.cjs.entry.js +8 -7
- package/dist/cjs/justifi-payment-provisioning-core.cjs.entry.js +2 -2
- package/dist/cjs/justifi-payment-provisioning.cjs.entry.js +5 -4
- package/dist/cjs/justifi-payment-transactions-list.cjs.entry.js +10 -9
- package/dist/cjs/justifi-payments-list-filters.cjs.entry.js +3 -3
- package/dist/cjs/justifi-payments-list.cjs.entry.js +11 -10
- package/dist/cjs/justifi-payout-details.cjs.entry.js +8 -7
- package/dist/cjs/justifi-payout-transactions-list.cjs.entry.js +10 -9
- package/dist/cjs/justifi-payouts-list-filters.cjs.entry.js +3 -3
- package/dist/cjs/justifi-payouts-list.cjs.entry.js +12 -11
- package/dist/cjs/justifi-refund-payment.cjs.entry.js +13 -12
- package/dist/cjs/justifi-saved-payment-method.cjs.entry.js +2 -2
- package/dist/cjs/justifi-season-interruption-insurance.cjs.entry.js +10 -11
- package/dist/cjs/justifi-skeleton.cjs.entry.js +3 -3
- package/dist/cjs/justifi-terminal-orders-list-filters.cjs.entry.js +13 -12
- package/dist/cjs/justifi-terminal-orders-list.cjs.entry.js +9 -8
- package/dist/cjs/justifi-terminals-list-filters.cjs.entry.js +9 -8
- package/dist/cjs/justifi-terminals-list.cjs.entry.js +11 -10
- package/dist/cjs/justifi-tokenize-payment-method.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/owner-form-core_2.cjs.entry.js +2 -2
- package/dist/cjs/{package-CkO7M9IQ.js → package-C9E_BIbT.js} +1 -1
- package/dist/cjs/pagination-menu.cjs.entry.js +1 -1
- package/dist/cjs/{parts-Pb06tUMp.js → parts-BVbaniVM.js} +6 -0
- package/dist/cjs/payment-details-core.cjs.entry.js +16 -15
- package/dist/cjs/payment-method-option.cjs.entry.js +2 -2
- package/dist/cjs/{payment.service-BZatGHKc.js → payment.service-CyHFdJ7n.js} +1 -1
- package/dist/cjs/payments-list-core.cjs.entry.js +9 -8
- package/dist/cjs/{payments-status-t4fVj8f9.js → payments-status-BP4u31jU.js} +1 -1
- package/dist/cjs/{payments-table-CaJt-yMH.js → payments-table-CWXVhECV.js} +2 -2
- package/dist/cjs/payout-details-core.cjs.entry.js +9 -9
- package/dist/cjs/{payout.service-DbgLWhwh.js → payout.service-Half-hdB.js} +1 -1
- package/dist/cjs/payouts-list-core.cjs.entry.js +9 -8
- package/dist/cjs/{payouts-status-pIO9qZG6.js → payouts-status-CM5Zy-0J.js} +1 -1
- package/dist/cjs/{payouts-table-DZv0WnTS.js → payouts-table-ZLTcfkUm.js} +2 -2
- package/dist/cjs/{skeleton-BF3HGL9X.js → skeleton-B8dzxFFr.js} +1 -1
- package/dist/cjs/{spinner-BBdv3Iq1.js → spinner-jHyLNCGO.js} +1 -1
- package/dist/cjs/{table-CfBpaApw.js → table-CrtpRwGN.js} +2 -2
- package/dist/cjs/table-filters-menu.cjs.entry.js +3 -3
- package/dist/cjs/terminal-orders-list-core.cjs.entry.js +8 -7
- package/dist/cjs/{terminal-orders-table-F-ZFUBwH.js → terminal-orders-table-DT53anT3.js} +5 -5
- package/dist/cjs/terminal-quantity-selector.cjs.entry.js +2 -2
- package/dist/cjs/{terminal.service-KC8wBTJJ.js → terminal.service-CFt55QNO.js} +1 -1
- package/dist/cjs/terminals-list-core.cjs.entry.js +8 -7
- package/dist/cjs/{terminals-table-D7sf_DBN.js → terminals-table-DahpSz98.js} +2 -2
- package/dist/cjs/{utils-Cjq3ZCad.js → utils-CMiA4X7s.js} +1 -1
- package/dist/cjs/webcomponents.cjs.js +1 -1
- package/dist/collection/api/GooglePay.js +181 -0
- package/dist/collection/api/index.js +2 -0
- package/dist/collection/api/services/google-pay.service.js +241 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/checkout/bank-account-form/bank-account-form.js +2 -2
- package/dist/collection/components/checkout/card-form/card-form.js +2 -2
- package/dist/collection/components/checkout/checkout.js +2 -2
- package/dist/collection/components/checkout/save-new-payment-method.js +1 -1
- package/dist/collection/components/checkout/saved-payment-method.js +1 -1
- package/dist/collection/components/checkouts-list/checkouts-list-core.js +1 -1
- package/dist/collection/components/checkouts-list/checkouts-list-filters.js +72 -2
- package/dist/collection/components/checkouts-list/checkouts-list.js +1 -1
- package/dist/collection/components/dispute-management/dispute-management-core.js +1 -1
- package/dist/collection/components/dispute-management/dispute-management.js +1 -1
- package/dist/collection/components/dispute-management/dispute-notification.js +2 -2
- package/dist/collection/components/dispute-management/dispute-response/additional-statement.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/cancellation-policy.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/customer-details.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/dispute-response-core.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/dispute-response.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/duplicate-charge.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/electronic-evidence.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/product-or-service.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/refund-policy.js +1 -1
- package/dist/collection/components/dispute-management/dispute-response/shipping-details.js +1 -1
- package/dist/collection/components/filters/table-filters-menu.js +1 -1
- package/dist/collection/components/gross-payment-chart/gross-payment-chart-core.js +1 -1
- package/dist/collection/components/modular-checkout/ModularCheckout.js +1 -0
- package/dist/collection/components/modular-checkout/modular-checkout.js +44 -6
- package/dist/collection/components/modular-checkout/sub-components/bank-account-billing-form-simple.js +1 -1
- package/dist/collection/components/modular-checkout/sub-components/bank-account.js +2 -2
- package/dist/collection/components/modular-checkout/sub-components/card-billing-form-simple.js +1 -1
- package/dist/collection/components/modular-checkout/sub-components/card-form.js +2 -2
- package/dist/collection/components/modular-checkout/sub-components/google-pay-skeleton.js +10 -0
- package/dist/collection/components/modular-checkout/sub-components/google-pay.js +609 -0
- package/dist/collection/components/modular-checkout/sub-components/payment-method-option.js +1 -1
- package/dist/collection/components/modular-checkout/sub-components/summary.js +1 -1
- package/dist/collection/components/order-terminals/order-terminals.js +1 -1
- package/dist/collection/components/order-terminals/terminal-quantity-selector/terminal-quantity-selector.js +1 -1
- package/dist/collection/components/payment-details/payment-details-core.js +8 -8
- package/dist/collection/components/payment-transactions-list/payment-transactions-list.js +1 -1
- package/dist/collection/components/payments-list/payments-list-core.js +1 -1
- package/dist/collection/components/payments-list/payments-list-filters.js +2 -2
- package/dist/collection/components/payments-list/payments-list.js +1 -1
- package/dist/collection/components/payout-details/payout-details-core.js +3 -3
- package/dist/collection/components/payout-transactions-list/payout-transactions-list.js +1 -1
- package/dist/collection/components/payouts-list/payouts-list-core.js +1 -1
- package/dist/collection/components/payouts-list/payouts-list-filters.js +2 -2
- package/dist/collection/components/payouts-list/payouts-list.js +1 -1
- package/dist/collection/components/terminal-orders-list/terminal-orders-list-core.js +1 -1
- package/dist/collection/components/terminal-orders-list/terminal-orders-list-filters.js +2 -2
- package/dist/collection/components/terminal-orders-list/terminal-orders-list.js +1 -1
- package/dist/collection/components/terminals-list/terminals-list-core.js +1 -1
- package/dist/collection/components/terminals-list/terminals-list-filters.js +1 -1
- package/dist/collection/components/terminals-list/terminals-list.js +1 -1
- package/dist/collection/components/tokenize-payment-method/internal-tokenize-payment-method.js +1 -1
- package/dist/collection/components/tokenize-payment-method/tokenize-payment-method.js +1 -1
- package/dist/collection/store/checkout.store.js +4 -0
- package/dist/collection/styles/parts.js +3 -0
- package/dist/collection/ui-components/custom-popper/custom-popper.js +2 -2
- package/dist/collection/ui-components/form/form-control-checkbox.js +2 -2
- package/dist/collection/ui-components/form/form-control-date.js +2 -2
- package/dist/collection/ui-components/form/form-control-file-v2.js +1 -1
- package/dist/collection/ui-components/form/form-control-file.js +2 -2
- package/dist/collection/ui-components/form/form-control-monetary.js +2 -2
- package/dist/collection/ui-components/form/form-control-number-masked.js +2 -2
- package/dist/collection/ui-components/form/form-control-number.js +2 -2
- package/dist/collection/ui-components/form/form-control-radio.js +2 -2
- package/dist/collection/ui-components/form/form-control-select.js +2 -2
- package/dist/collection/ui-components/form/form-control-text.js +2 -2
- package/dist/collection/ui-components/form/form-control-textarea.js +2 -2
- package/dist/collection/ui-components/form/hidden-input.js +1 -1
- package/dist/collection/ui-components/form/iframe-input.js +3 -3
- package/dist/collection/ui-components/google-pay-button.js +251 -0
- package/dist/collection/ui-components/shadow-dom-components/justifi-button.js +1 -1
- package/dist/collection/ui-components/shadow-dom-components/justifi-header.js +1 -1
- package/dist/collection/ui-components/shadow-dom-components/justifi-skeleton.js +1 -1
- package/dist/docs.json +727 -102
- package/dist/esm/{Refund-DDWRtCuX.js → GooglePay-NNHE-OLJ.js} +405 -1
- package/dist/esm/additional-questions-details_5.entry.js +2 -2
- package/dist/esm/{badge-BWd10d-w.js → badge-DtrH25ss.js} +1 -1
- package/dist/esm/bank-account-document-form-inputs_8.entry.js +8 -7
- package/dist/esm/bank-account-form.entry.js +4 -4
- package/dist/esm/business-details-core.entry.js +3 -3
- package/dist/esm/{business.service-CmSijtcP.js → business.service-BrUSam2T.js} +1 -1
- package/dist/esm/{button-BDwVDLs-.js → button-Bpf3VX8Q.js} +1 -1
- package/dist/esm/card-form.entry.js +4 -4
- package/dist/esm/{check-pkg-version-B83yUQEx.js → check-pkg-version-o2X_8wJ4.js} +2 -2
- package/dist/esm/{checkout.service-E60GnrZv.js → checkout.service-Bxt1qPaY.js} +1 -1
- package/dist/esm/checkouts-list-core.entry.js +8 -7
- package/dist/esm/{checkouts-table-BVWL1wN9.js → checkouts-table-CB4GdlcZ.js} +2 -2
- package/dist/esm/custom-popper_2.entry.js +3 -3
- package/dist/esm/{dispute.service-CAZJigrO.js → dispute.service-DYRYxxaT.js} +1 -1
- package/dist/esm/form-alert_5.entry.js +1 -1
- package/dist/esm/form-control-checkbox.entry.js +5 -5
- package/dist/esm/form-control-date.entry.js +4 -4
- package/dist/esm/{form-control-error-text-BYooqu0N.js → form-control-error-text-BZYykCDp.js} +1 -1
- package/dist/esm/form-control-file-v2_2.entry.js +5 -5
- package/dist/esm/{form-control-help-text-CF1UA5Sl.js → form-control-help-text-D-p66Yxr.js} +1 -1
- package/dist/esm/form-control-monetary-provisioning.entry.js +3 -3
- package/dist/esm/form-control-monetary.entry.js +5 -5
- package/dist/esm/form-control-number-masked_3.entry.js +4 -4
- package/dist/esm/form-control-number.entry.js +5 -5
- package/dist/esm/form-control-radio.entry.js +3 -3
- package/dist/esm/form-control-select_2.entry.js +6 -6
- package/dist/esm/{get-payment-details-Dg5WRkOM.js → get-payment-details-BJ1PLhJZ.js} +1 -1
- package/dist/esm/{get-subaccounts-CbxzednA.js → get-subaccounts-CzGHjlUF.js} +1 -1
- package/dist/esm/gross-payment-chart-core.entry.js +4 -4
- package/dist/esm/{header-1-CzkA4zNY.js → header-1-WwkF5F9y.js} +1 -1
- package/dist/esm/{header-3-eIE1RpMN.js → header-3-C5jS39cE.js} +1 -1
- package/dist/esm/hidden-input_2.entry.js +7 -7
- package/dist/esm/{index-DCIW8z1f.js → index-DkoufM1t.js} +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/{insurance-state-By2QaBZo.js → insurance-state-C11WKZU6.js} +1 -1
- package/dist/esm/internal-tokenize-payment-method_7.entry.js +14 -15
- package/dist/esm/justifi-additional-questions-form-step_9.entry.js +6 -5
- package/dist/esm/justifi-additional-statement_8.entry.js +9 -9
- package/dist/esm/{justifi-apple-pay_7.entry.js → justifi-apple-pay_8.entry.js} +788 -142
- package/dist/esm/justifi-bank-account-billing-form-simple_3.entry.js +4 -4
- package/dist/esm/justifi-business-details.entry.js +7 -6
- package/dist/esm/justifi-business-form.entry.js +9 -8
- package/dist/esm/justifi-checkout.entry.js +8 -9
- package/dist/esm/justifi-checkouts-list-filters.entry.js +19 -5
- package/dist/esm/justifi-checkouts-list.entry.js +10 -9
- package/dist/esm/justifi-details.entry.js +2 -2
- package/dist/esm/justifi-dispute-management-core.entry.js +1 -1
- package/dist/esm/justifi-dispute-management.entry.js +6 -5
- package/dist/esm/justifi-dispute-notification_3.entry.js +12 -11
- package/dist/esm/justifi-gross-payment-chart.entry.js +6 -5
- package/dist/esm/justifi-order-terminals.entry.js +9 -8
- package/dist/esm/justifi-payment-details.entry.js +8 -7
- package/dist/esm/justifi-payment-provisioning-core.entry.js +2 -2
- package/dist/esm/justifi-payment-provisioning.entry.js +5 -4
- package/dist/esm/justifi-payment-transactions-list.entry.js +9 -8
- package/dist/esm/justifi-payments-list-filters.entry.js +3 -3
- package/dist/esm/justifi-payments-list.entry.js +10 -9
- package/dist/esm/justifi-payout-details.entry.js +7 -6
- package/dist/esm/justifi-payout-transactions-list.entry.js +9 -8
- package/dist/esm/justifi-payouts-list-filters.entry.js +3 -3
- package/dist/esm/justifi-payouts-list.entry.js +11 -10
- package/dist/esm/justifi-refund-payment.entry.js +9 -8
- package/dist/esm/justifi-saved-payment-method.entry.js +2 -2
- package/dist/esm/justifi-season-interruption-insurance.entry.js +7 -8
- package/dist/esm/justifi-skeleton.entry.js +3 -3
- package/dist/esm/justifi-terminal-orders-list-filters.entry.js +5 -4
- package/dist/esm/justifi-terminal-orders-list.entry.js +8 -7
- package/dist/esm/justifi-terminals-list-filters.entry.js +4 -3
- package/dist/esm/justifi-terminals-list.entry.js +10 -9
- package/dist/esm/justifi-tokenize-payment-method.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/owner-form-core_2.entry.js +2 -2
- package/dist/esm/{package-CdVle3mx.js → package-Dr8Z8wfP.js} +1 -1
- package/dist/esm/pagination-menu.entry.js +1 -1
- package/dist/esm/{parts-QmGrQis7.js → parts-sA8HBfkI.js} +4 -1
- package/dist/esm/payment-details-core.entry.js +15 -14
- package/dist/esm/payment-method-option.entry.js +2 -2
- package/dist/esm/{payment.service-CWc5BPv-.js → payment.service-BoGemgMw.js} +1 -1
- package/dist/esm/payments-list-core.entry.js +9 -8
- package/dist/esm/{payments-status-BdCVusHE.js → payments-status-CADg1cD0.js} +1 -1
- package/dist/esm/{payments-table-9rC3BvV0.js → payments-table-C6zHWwGO.js} +2 -2
- package/dist/esm/payout-details-core.entry.js +9 -9
- package/dist/esm/{payout.service-iBVqRzf_.js → payout.service-BSG50wqN.js} +1 -1
- package/dist/esm/payouts-list-core.entry.js +9 -8
- package/dist/esm/{payouts-status-DhowllYh.js → payouts-status-4VDQvaYV.js} +1 -1
- package/dist/esm/{payouts-table-Ci_J6mmU.js → payouts-table-BU5XbzB9.js} +2 -2
- package/dist/esm/{skeleton-BX70wCwq.js → skeleton-Dtt56Fl3.js} +1 -1
- package/dist/esm/{spinner-CcDNFgNu.js → spinner-DikooWuI.js} +1 -1
- package/dist/esm/{table-KZoMaoUh.js → table-1hqe6s5m.js} +2 -2
- package/dist/esm/table-filters-menu.entry.js +3 -3
- package/dist/esm/terminal-orders-list-core.entry.js +8 -7
- package/dist/esm/{terminal-orders-table-BGiWS5cM.js → terminal-orders-table-BsVBelxB.js} +3 -3
- package/dist/esm/terminal-quantity-selector.entry.js +2 -2
- package/dist/esm/{terminal.service-CxSKhtwB.js → terminal.service-YKfi6Mr9.js} +1 -1
- package/dist/esm/terminals-list-core.entry.js +8 -7
- package/dist/esm/{terminals-table-DROFEdyn.js → terminals-table-CXJTn-0I.js} +2 -2
- package/dist/esm/{utils-C1PX_3uA.js → utils-CgFsPVsv.js} +1 -1
- package/dist/esm/webcomponents.js +1 -1
- package/dist/module/Analytics.js +2 -0
- package/dist/module/ApplePay.js +121 -0
- package/dist/module/GooglePay.js +184 -0
- package/dist/module/ModularCheckout.js +1 -0
- package/dist/module/additional-statement.js +1 -1
- package/dist/module/apple-pay.js +1 -120
- package/dist/module/bank-account-billing-form-simple.js +1 -1
- package/dist/module/bank-account-document-inputs.js +2 -0
- package/dist/module/bank-account-form.js +2 -2
- package/dist/module/bank-account.js +2 -2
- package/dist/module/business-bank-account-form-step.js +2 -0
- package/dist/module/business-terms-conditions-form-step.js +2 -0
- package/dist/module/business.service.js +2 -0
- package/dist/module/cancellation-policy.js +1 -1
- package/dist/module/card-billing-form-simple.js +1 -1
- package/dist/module/card-form.js +2 -2
- package/dist/module/card-form2.js +2 -2
- package/dist/module/checkout.service.js +2 -0
- package/dist/module/checkout.store.js +4 -0
- package/dist/module/checkouts-list-core2.js +4 -2
- package/dist/module/custom-popper2.js +2 -2
- package/dist/module/customer-details.js +1 -1
- package/dist/module/dispute-management-core.js +1 -1
- package/dist/module/dispute-notification.js +2 -2
- package/dist/module/dispute-response-actions.js +2 -0
- package/dist/module/dispute-response-core.js +1 -1
- package/dist/module/dispute-response.js +1 -1
- package/dist/module/duplicate-charge.js +1 -1
- package/dist/module/electronic-evidence.js +1 -1
- package/dist/module/form-control-checkbox2.js +2 -2
- package/dist/module/form-control-date2.js +2 -2
- package/dist/module/form-control-file-v22.js +1 -1
- package/dist/module/form-control-file2.js +2 -2
- package/dist/module/form-control-monetary2.js +2 -2
- package/dist/module/form-control-number-masked2.js +2 -2
- package/dist/module/form-control-number.js +2 -2
- package/dist/module/form-control-radio2.js +2 -2
- package/dist/module/form-control-select2.js +2 -2
- package/dist/module/form-control-text2.js +2 -2
- package/dist/module/form-control-textarea2.js +2 -2
- package/dist/module/get-payment-details.js +2 -0
- package/dist/module/get-subaccounts.js +2 -0
- package/dist/module/google-pay.js +782 -0
- package/dist/module/gross-payment-chart-core2.js +1 -1
- package/dist/module/hidden-input2.js +1 -1
- package/dist/module/iframe-input2.js +3 -3
- package/dist/module/internal-tokenize-payment-method2.js +3 -1
- package/dist/module/justifi-business-form.js +2 -0
- package/dist/module/justifi-button2.js +1 -1
- package/dist/module/justifi-checkout.js +46 -40
- package/dist/module/justifi-checkouts-list-filters.js +37 -8
- package/dist/module/justifi-checkouts-list.js +3 -1
- package/dist/module/justifi-dispute-management.js +1 -1
- package/dist/module/justifi-google-pay.d.ts +11 -0
- package/dist/module/justifi-google-pay.js +6 -0
- package/dist/module/justifi-gross-payment-chart.js +2 -0
- package/dist/module/justifi-header2.js +1 -1
- package/dist/module/justifi-order-terminals.js +3 -1
- package/dist/module/justifi-payment-provisioning.js +2 -0
- package/dist/module/justifi-payment-transactions-list.js +5 -3
- package/dist/module/justifi-payments-list-filters.js +4 -4
- package/dist/module/justifi-payments-list.js +3 -1
- package/dist/module/justifi-payout-details.js +2 -0
- package/dist/module/justifi-payout-transactions-list.js +5 -3
- package/dist/module/justifi-payouts-list-filters.js +4 -4
- package/dist/module/justifi-payouts-list.js +3 -1
- package/dist/module/justifi-refund-payment.js +2 -0
- package/dist/module/justifi-saved-payment-method.js +1 -1
- package/dist/module/justifi-season-interruption-insurance.js +2 -0
- package/dist/module/justifi-skeleton.js +1 -1
- package/dist/module/justifi-terminal-orders-list-filters.js +6 -4
- package/dist/module/justifi-terminal-orders-list.js +3 -1
- package/dist/module/justifi-terminals-list-filters.js +4 -2
- package/dist/module/justifi-terminals-list.js +3 -1
- package/dist/module/justifi-tokenize-payment-method.js +1 -1
- package/dist/module/modular-checkout.js +46 -6
- package/dist/module/package.js +1 -1
- package/dist/module/parts.js +4 -1
- package/dist/module/payment-details-core2.js +10 -8
- package/dist/module/payment-method-option.js +1 -1
- package/dist/module/payment.service.js +2 -0
- package/dist/module/payments-list-core2.js +5 -3
- package/dist/module/payout-details-core2.js +3 -3
- package/dist/module/payout.service.js +2 -0
- package/dist/module/payouts-list-core2.js +5 -3
- package/dist/module/plaid.service.js +2 -0
- package/dist/module/product-or-service.js +1 -1
- package/dist/module/refund-policy.js +1 -1
- package/dist/module/save-new-payment-method.js +1 -1
- package/dist/module/shipping-details.js +1 -1
- package/dist/module/summary.js +1 -1
- package/dist/module/table-filters-menu2.js +2 -2
- package/dist/module/table.js +1 -1
- package/dist/module/terminal-orders-list-core2.js +5 -3
- package/dist/module/terminal-quantity-selector2.js +1 -1
- package/dist/module/terminal.service.js +2 -0
- package/dist/module/terminals-list-core2.js +4 -2
- package/dist/module/utils2.js +1 -1
- package/dist/types/api/Checkout.d.ts +5 -0
- package/dist/types/api/GooglePay.d.ts +271 -0
- package/dist/types/api/index.d.ts +2 -0
- package/dist/types/api/services/google-pay.service.d.ts +60 -0
- package/dist/types/components/checkout/checkout.d.ts +1 -0
- package/dist/types/components/checkouts-list/checkouts-list-filters.d.ts +5 -0
- package/dist/types/components/modular-checkout/ModularCheckout.d.ts +2 -1
- package/dist/types/components/modular-checkout/modular-checkout.d.ts +5 -0
- package/dist/types/components/modular-checkout/sub-components/google-pay-skeleton.d.ts +6 -0
- package/dist/types/components/modular-checkout/sub-components/google-pay.d.ts +59 -0
- package/dist/types/components.d.ts +146 -0
- package/dist/types/store/checkout.store.d.ts +1 -0
- package/dist/types/styles/parts.d.ts +3 -0
- package/dist/types/ui-components/google-pay-button.d.ts +18 -0
- package/dist/webcomponents/index.esm.js +1 -1
- package/dist/webcomponents/p-016b3e4c.entry.js +1 -0
- package/dist/webcomponents/{p-fdcb24aa.entry.js → p-062fcfd5.entry.js} +1 -1
- package/dist/webcomponents/p-06cae9e2.entry.js +1 -0
- package/dist/webcomponents/p-06f81525.entry.js +1 -0
- package/dist/webcomponents/{p-3482ab40.entry.js → p-0b7c4ed5.entry.js} +1 -1
- package/dist/webcomponents/{p-9c7c60f3.entry.js → p-0bb616fc.entry.js} +1 -1
- package/dist/webcomponents/p-1575ca68.entry.js +1 -0
- package/dist/webcomponents/{p-8740871d.entry.js → p-1a327b0e.entry.js} +1 -1
- package/dist/webcomponents/p-1df660a9.entry.js +1 -0
- package/dist/webcomponents/p-1e761d96.entry.js +1 -0
- package/dist/webcomponents/{p-0eb7abed.entry.js → p-20e85114.entry.js} +1 -1
- package/dist/webcomponents/p-262e4b23.entry.js +1 -0
- package/dist/webcomponents/p-296bd0b6.entry.js +1 -0
- package/dist/webcomponents/{p-5490e39c.entry.js → p-368b37ad.entry.js} +1 -1
- package/dist/webcomponents/{p-d41ad7a8.entry.js → p-36a0af30.entry.js} +1 -1
- package/dist/webcomponents/p-3a3935a3.entry.js +1 -0
- package/dist/webcomponents/p-3fb1cf2b.entry.js +1 -0
- package/dist/webcomponents/p-3fbe8ac3.entry.js +1 -0
- package/dist/webcomponents/p-4d2589b2.entry.js +1 -0
- package/dist/webcomponents/p-4dc358aa.entry.js +1 -0
- package/dist/webcomponents/{p-99c1059c.entry.js → p-511e80a4.entry.js} +1 -1
- package/dist/webcomponents/p-5996879d.entry.js +1 -0
- package/dist/webcomponents/p-5a7207c0.entry.js +1 -0
- package/dist/webcomponents/p-5a748e49.entry.js +1 -0
- package/dist/webcomponents/p-5e6f2128.entry.js +1 -0
- package/dist/webcomponents/p-6454626a.entry.js +1 -0
- package/dist/webcomponents/p-66713269.entry.js +1 -0
- package/dist/webcomponents/p-679b36b5.entry.js +1 -0
- package/dist/webcomponents/{p-c9920e22.entry.js → p-725319f3.entry.js} +1 -1
- package/dist/webcomponents/p-77754a65.entry.js +1 -0
- package/dist/webcomponents/p-7bb7aaca.entry.js +1 -0
- package/dist/webcomponents/p-8884e000.entry.js +1 -0
- package/dist/webcomponents/p-88a8741b.entry.js +1 -0
- package/dist/webcomponents/{p-c3a625ec.entry.js → p-897b794b.entry.js} +4 -4
- package/dist/webcomponents/p-899b981b.entry.js +1 -0
- package/dist/webcomponents/p-8c4b502d.entry.js +1 -0
- package/dist/webcomponents/p-8df30672.entry.js +1 -0
- package/dist/webcomponents/p-911b3d63.entry.js +1 -0
- package/dist/webcomponents/p-97b8bf5c.entry.js +1 -0
- package/dist/webcomponents/p-9b74a642.entry.js +1 -0
- package/dist/webcomponents/p-9b8aee30.entry.js +1 -0
- package/dist/webcomponents/p-9e94c9ef.entry.js +1 -0
- package/dist/webcomponents/{p-B69TWr1K.js → p-B4xdk4mG.js} +1 -1
- package/dist/webcomponents/{p-MFnmyvti.js → p-BEu9YFnf.js} +1 -1
- package/dist/webcomponents/{p-gcRtE71H.js → p-BMJe4lzg.js} +1 -1
- package/dist/webcomponents/p-BhqSAzpT.js +1 -0
- package/dist/webcomponents/p-BrRsgB8S.js +1 -0
- package/dist/webcomponents/{p-DUQxAYW4.js → p-C2Senazf.js} +1 -1
- package/dist/webcomponents/p-C9VmfRis.js +1 -0
- package/dist/webcomponents/{p-BDRSfgZJ.js → p-CBbwdoSa.js} +1 -1
- package/dist/webcomponents/{p-C0FpWzgU.js → p-CCxsFwC4.js} +1 -1
- package/dist/webcomponents/p-CK_XkZku.js +1 -0
- package/dist/webcomponents/p-CQGIjIgZ.js +1 -0
- package/dist/webcomponents/{p-Qmo430x1.js → p-CV8xqdt6.js} +1 -1
- package/dist/webcomponents/p-CZ3F1ZAT.js +1 -0
- package/dist/webcomponents/p-CgiDds_u.js +1 -0
- package/dist/webcomponents/p-CsgUIrv8.js +1 -0
- package/dist/webcomponents/{p-BIzMmHpn.js → p-D6bKoyRc.js} +1 -1
- package/dist/webcomponents/{p-E8uzhk39.js → p-DATDsXcA.js} +1 -1
- package/dist/webcomponents/{p-H_emngUs.js → p-DGGjRqDa.js} +1 -1
- package/dist/webcomponents/{p-CJ4viNrp.js → p-DUmUUj9r.js} +1 -1
- package/dist/webcomponents/p-DY_3dcgR.js +1 -0
- package/dist/webcomponents/{p-DircQtPA.js → p-Dit3fZpU.js} +1 -1
- package/dist/webcomponents/p-DkoufM1t.js +1 -0
- package/dist/webcomponents/{p-DcHTywGe.js → p-Dlrq1iZf.js} +1 -1
- package/dist/webcomponents/p-DmdEjScI.js +1 -0
- package/dist/webcomponents/p-Dr8Z8wfP.js +1 -0
- package/dist/webcomponents/p-RTAZ4tdd.js +1 -0
- package/dist/webcomponents/p-Ty7R7tsw.js +1 -0
- package/dist/webcomponents/{p-CYz0Hubu.js → p-U3nU15el.js} +1 -1
- package/dist/webcomponents/{p-CjfgyxBN.js → p-VRubcA-q.js} +1 -1
- package/dist/webcomponents/{p-KS3Bf_2D.js → p-W9WWoLzT.js} +1 -1
- package/dist/webcomponents/p-a0b4c42b.entry.js +1 -0
- package/dist/webcomponents/p-abcb4945.entry.js +1 -0
- package/dist/webcomponents/p-ad3a73af.entry.js +1 -0
- package/dist/webcomponents/p-b0f0d53c.entry.js +1 -0
- package/dist/webcomponents/p-c8a5a2a9.entry.js +1 -0
- package/dist/webcomponents/p-c920dc54.entry.js +1 -0
- package/dist/webcomponents/p-ca0d1c6c.entry.js +1 -0
- package/dist/webcomponents/p-cbd52897.entry.js +1 -0
- package/dist/webcomponents/p-cc0c722c.entry.js +1 -0
- package/dist/webcomponents/p-cc2a1c7c.entry.js +1 -0
- package/dist/webcomponents/{p-b31bf32a.entry.js → p-cdf1e61c.entry.js} +1 -1
- package/dist/webcomponents/p-cf644e46.entry.js +1 -0
- package/dist/webcomponents/{p-d79f9a54.entry.js → p-d0c4b0ea.entry.js} +1 -1
- package/dist/webcomponents/p-d5765545.entry.js +1 -0
- package/dist/webcomponents/p-def84700.entry.js +1 -0
- package/dist/webcomponents/p-e2d33311.entry.js +1 -0
- package/dist/webcomponents/{p-dd0c456f.entry.js → p-e4335938.entry.js} +1 -1
- package/dist/webcomponents/{p-c8bd7e0d.entry.js → p-e805b011.entry.js} +1 -1
- package/dist/webcomponents/p-f30c939f.entry.js +1 -0
- package/dist/webcomponents/{p-50308873.entry.js → p-f99403d8.entry.js} +1 -1
- package/dist/webcomponents/p-fb644da6.entry.js +1 -0
- package/dist/webcomponents/p-fc4b27ec.entry.js +1 -0
- package/dist/webcomponents/p-fe43449c.entry.js +1 -0
- package/dist/webcomponents/p-sA8HBfkI.js +1 -0
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/checkout.store-BA6h-dp2.js +0 -107
- package/dist/esm/checkout.store-CaS_htQd.js +0 -101
- package/dist/webcomponents/p-0867547d.entry.js +0 -1
- package/dist/webcomponents/p-091d6a7e.entry.js +0 -1
- package/dist/webcomponents/p-0d4bea62.entry.js +0 -1
- package/dist/webcomponents/p-1634262a.entry.js +0 -1
- package/dist/webcomponents/p-1a4d0ad6.entry.js +0 -1
- package/dist/webcomponents/p-25e3cb85.entry.js +0 -1
- package/dist/webcomponents/p-278988e8.entry.js +0 -1
- package/dist/webcomponents/p-3b5a9e94.entry.js +0 -1
- package/dist/webcomponents/p-44efe4ca.entry.js +0 -1
- package/dist/webcomponents/p-49a0ef9d.entry.js +0 -1
- package/dist/webcomponents/p-4bff1285.entry.js +0 -1
- package/dist/webcomponents/p-4d87be74.entry.js +0 -1
- package/dist/webcomponents/p-51107c8f.entry.js +0 -1
- package/dist/webcomponents/p-51d7b9f7.entry.js +0 -1
- package/dist/webcomponents/p-5c60ba00.entry.js +0 -1
- package/dist/webcomponents/p-5d56a293.entry.js +0 -1
- package/dist/webcomponents/p-654d91d7.entry.js +0 -1
- package/dist/webcomponents/p-68c2ce90.entry.js +0 -1
- package/dist/webcomponents/p-69b0be17.entry.js +0 -1
- package/dist/webcomponents/p-6e99cd4c.entry.js +0 -1
- package/dist/webcomponents/p-7e4bfba1.entry.js +0 -1
- package/dist/webcomponents/p-87d23cf8.entry.js +0 -1
- package/dist/webcomponents/p-9065f077.entry.js +0 -1
- package/dist/webcomponents/p-908f6b79.entry.js +0 -1
- package/dist/webcomponents/p-93d98b07.entry.js +0 -1
- package/dist/webcomponents/p-94b2d6a1.entry.js +0 -1
- package/dist/webcomponents/p-980db13b.entry.js +0 -1
- package/dist/webcomponents/p-B10U2_Sw.js +0 -1
- package/dist/webcomponents/p-BqXh8qSb.js +0 -1
- package/dist/webcomponents/p-CA9okQxT.js +0 -1
- package/dist/webcomponents/p-CMTxbXEr.js +0 -1
- package/dist/webcomponents/p-CdVle3mx.js +0 -1
- package/dist/webcomponents/p-CiMKKjGV.js +0 -1
- package/dist/webcomponents/p-CjxyejYl.js +0 -1
- package/dist/webcomponents/p-CpP3EZBK.js +0 -1
- package/dist/webcomponents/p-DCIW8z1f.js +0 -1
- package/dist/webcomponents/p-DQKNMVh7.js +0 -1
- package/dist/webcomponents/p-DU8dqq9U.js +0 -1
- package/dist/webcomponents/p-Dp2W4Eq3.js +0 -1
- package/dist/webcomponents/p-GenVH2BR.js +0 -1
- package/dist/webcomponents/p-InCWAej0.js +0 -1
- package/dist/webcomponents/p-QmGrQis7.js +0 -1
- package/dist/webcomponents/p-VodztElu.js +0 -1
- package/dist/webcomponents/p-a4a647bd.entry.js +0 -1
- package/dist/webcomponents/p-abcbfb22.entry.js +0 -1
- package/dist/webcomponents/p-af29e819.entry.js +0 -1
- package/dist/webcomponents/p-b6286d7b.entry.js +0 -1
- package/dist/webcomponents/p-b8c816fe.entry.js +0 -1
- package/dist/webcomponents/p-bcec4201.entry.js +0 -1
- package/dist/webcomponents/p-c6ee5aa7.entry.js +0 -1
- package/dist/webcomponents/p-c900ccca.entry.js +0 -1
- package/dist/webcomponents/p-ca3733e5.entry.js +0 -1
- package/dist/webcomponents/p-cb61af93.entry.js +0 -1
- package/dist/webcomponents/p-d29ce58e.entry.js +0 -1
- package/dist/webcomponents/p-d34f5a20.entry.js +0 -1
- package/dist/webcomponents/p-d8ec7cfc.entry.js +0 -1
- package/dist/webcomponents/p-dda50611.entry.js +0 -1
- package/dist/webcomponents/p-df7e2530.entry.js +0 -1
- package/dist/webcomponents/p-e4a43e31.entry.js +0 -1
- package/dist/webcomponents/p-ea75759b.entry.js +0 -1
- package/dist/webcomponents/p-edcb6de1.entry.js +0 -1
- package/dist/webcomponents/p-faaba66d.entry.js +0 -1
- package/dist/webcomponents/p-fc680b08.entry.js +0 -1
- package/dist/webcomponents/p-fcaaed23.entry.js +0 -1
- package/dist/webcomponents/p-fefc4dea.entry.js +0 -1
- package/dist/webcomponents/p-ff1bc3de.entry.js +0 -1
|
@@ -2,149 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./index-BhI7cJcE.js');
|
|
4
4
|
var Api = require('./Api-QUTWjGTy.js');
|
|
5
|
+
var GooglePay$1 = require('./GooglePay-BwiJ_80p.js');
|
|
5
6
|
var styledHost = require('./styled-host-D5g7INLE.js');
|
|
6
7
|
require('./event-types-YOY5TKUN.js');
|
|
7
|
-
var skeleton = require('./skeleton-
|
|
8
|
-
var
|
|
9
|
-
var parts = require('./parts-Pb06tUMp.js');
|
|
8
|
+
var skeleton = require('./skeleton-B8dzxFFr.js');
|
|
9
|
+
var parts = require('./parts-BVbaniVM.js');
|
|
10
10
|
var utils = require('./utils-D4WPxuzW.js');
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
11
|
+
var index$1 = require('./index-CajjbB9t.js');
|
|
12
|
+
var header1 = require('./header-1-Bqejh9no.js');
|
|
13
|
+
var insuranceState = require('./insurance-state-DsGnIHMM.js');
|
|
14
|
+
var header3 = require('./header-3-DQ649Me2.js');
|
|
15
|
+
var checkPkgVersion = require('./check-pkg-version-cLAIX_H6.js');
|
|
15
16
|
require('./config-state-CYoBVAca.js');
|
|
16
17
|
require('./dinero-BwNN_k7x.js');
|
|
17
18
|
var ComponentError = require('./ComponentError-D4OLnOkg.js');
|
|
18
|
-
var Refund = require('./Refund-BX0mjsAQ.js');
|
|
19
19
|
require('./Pagination-Dediz133.js');
|
|
20
20
|
require('./Business-DWHy_-z9.js');
|
|
21
21
|
require('./Dispute-CruQTF6_.js');
|
|
22
22
|
var utils$1 = require('./utils-DvUQQLmR.js');
|
|
23
|
-
var checkout_service = require('./checkout.service-
|
|
24
|
-
var index$1 = require('./index-C2ITzalN.js');
|
|
23
|
+
var checkout_service = require('./checkout.service-CwelwhrT.js');
|
|
25
24
|
var paymentMethodOptionUtils = require('./payment-method-option-utils-WYHIHy-l.js');
|
|
26
25
|
require('./index-mmd0OhmD.js');
|
|
27
|
-
require('./package-
|
|
28
|
-
|
|
29
|
-
var ApplePaySessionStatus;
|
|
30
|
-
(function (ApplePaySessionStatus) {
|
|
31
|
-
ApplePaySessionStatus["STATUS_SUCCESS"] = "STATUS_SUCCESS";
|
|
32
|
-
ApplePaySessionStatus["STATUS_FAILURE"] = "STATUS_FAILURE";
|
|
33
|
-
})(ApplePaySessionStatus || (ApplePaySessionStatus = {}));
|
|
34
|
-
var ApplePayButtonType;
|
|
35
|
-
(function (ApplePayButtonType) {
|
|
36
|
-
ApplePayButtonType["PLAIN"] = "plain";
|
|
37
|
-
ApplePayButtonType["BUY"] = "buy";
|
|
38
|
-
ApplePayButtonType["SET_UP"] = "set-up";
|
|
39
|
-
ApplePayButtonType["DONATE"] = "donate";
|
|
40
|
-
ApplePayButtonType["CHECK_OUT"] = "check-out";
|
|
41
|
-
ApplePayButtonType["BOOK"] = "book";
|
|
42
|
-
ApplePayButtonType["SUBSCRIBE"] = "subscribe";
|
|
43
|
-
})(ApplePayButtonType || (ApplePayButtonType = {}));
|
|
44
|
-
var ApplePayButtonStyle;
|
|
45
|
-
(function (ApplePayButtonStyle) {
|
|
46
|
-
ApplePayButtonStyle["BLACK"] = "black";
|
|
47
|
-
ApplePayButtonStyle["WHITE"] = "white";
|
|
48
|
-
ApplePayButtonStyle["WHITE_OUTLINE"] = "white-outline";
|
|
49
|
-
})(ApplePayButtonStyle || (ApplePayButtonStyle = {}));
|
|
50
|
-
var ApplePayMerchantCapability;
|
|
51
|
-
(function (ApplePayMerchantCapability) {
|
|
52
|
-
ApplePayMerchantCapability["SUPPORTS_3DS"] = "supports3DS";
|
|
53
|
-
ApplePayMerchantCapability["SUPPORTS_EMV"] = "supportsEMV";
|
|
54
|
-
ApplePayMerchantCapability["SUPPORTS_CREDIT"] = "supportsCredit";
|
|
55
|
-
ApplePayMerchantCapability["SUPPORTS_DEBIT"] = "supportsDebit";
|
|
56
|
-
})(ApplePayMerchantCapability || (ApplePayMerchantCapability = {}));
|
|
57
|
-
class ApplePayConfig {
|
|
58
|
-
constructor(data) {
|
|
59
|
-
this.merchantIdentifier = data.merchantIdentifier;
|
|
60
|
-
this.displayName = data.displayName;
|
|
61
|
-
this.initiative = data.initiative;
|
|
62
|
-
this.initiativeContext = data.initiativeContext;
|
|
63
|
-
this.buttonType = data.buttonType || ApplePayButtonType.PLAIN;
|
|
64
|
-
this.buttonStyle = data.buttonStyle || ApplePayButtonStyle.BLACK;
|
|
65
|
-
this.buttonLocale = data.buttonLocale || 'en-US';
|
|
66
|
-
}
|
|
67
|
-
get isValid() {
|
|
68
|
-
return !!(this.merchantIdentifier &&
|
|
69
|
-
this.displayName &&
|
|
70
|
-
this.initiative &&
|
|
71
|
-
this.initiativeContext);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
class ApplePayPaymentRequest {
|
|
75
|
-
constructor(data) {
|
|
76
|
-
this.countryCode = data.countryCode;
|
|
77
|
-
this.currencyCode = data.currencyCode;
|
|
78
|
-
this.merchantCapabilities = data.merchantCapabilities;
|
|
79
|
-
this.supportedNetworks = data.supportedNetworks;
|
|
80
|
-
this.total = data.total;
|
|
81
|
-
this.lineItems = data.lineItems;
|
|
82
|
-
this.shippingMethods = data.shippingMethods;
|
|
83
|
-
this.applicationData = data.applicationData;
|
|
84
|
-
this.supportedCountries = data.supportedCountries;
|
|
85
|
-
}
|
|
86
|
-
get isValid() {
|
|
87
|
-
var _a, _b, _c, _d;
|
|
88
|
-
return !!(this.countryCode &&
|
|
89
|
-
this.currencyCode &&
|
|
90
|
-
((_a = this.merchantCapabilities) === null || _a === void 0 ? void 0 : _a.length) &&
|
|
91
|
-
((_b = this.supportedNetworks) === null || _b === void 0 ? void 0 : _b.length) &&
|
|
92
|
-
((_c = this.total) === null || _c === void 0 ? void 0 : _c.label) &&
|
|
93
|
-
((_d = this.total) === null || _d === void 0 ? void 0 : _d.amount));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
class ApplePayHelpers {
|
|
97
|
-
static isApplePaySupported() {
|
|
98
|
-
var _a;
|
|
99
|
-
return (typeof window !== 'undefined' &&
|
|
100
|
-
'ApplePaySession' in window &&
|
|
101
|
-
((_a = window.ApplePaySession) === null || _a === void 0 ? void 0 : _a.supportsVersion(3)));
|
|
102
|
-
}
|
|
103
|
-
static canMakePayments() {
|
|
104
|
-
var _a;
|
|
105
|
-
if (!this.isApplePaySupported()) {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
return ((_a = window.ApplePaySession) === null || _a === void 0 ? void 0 : _a.canMakePayments()) || false;
|
|
109
|
-
}
|
|
110
|
-
static async canMakePaymentsWithActiveCard(merchantIdentifier) {
|
|
111
|
-
var _a;
|
|
112
|
-
if (!this.isApplePaySupported()) {
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
try {
|
|
116
|
-
return ((await ((_a = window.ApplePaySession) === null || _a === void 0 ? void 0 : _a.canMakePaymentsWithActiveCard(merchantIdentifier))) || false);
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
console.error('Error checking Apple Pay active card:', error);
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
static formatAmount(amount) {
|
|
124
|
-
return (amount / 100).toFixed(2);
|
|
125
|
-
}
|
|
126
|
-
static parseAmount(amount) {
|
|
127
|
-
return Math.round(parseFloat(amount) * 100);
|
|
128
|
-
}
|
|
129
|
-
static createLineItem(label, amount, type = 'final') {
|
|
130
|
-
return {
|
|
131
|
-
label,
|
|
132
|
-
amount: this.formatAmount(amount),
|
|
133
|
-
type,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
static getDefaultSupportedNetworks() {
|
|
137
|
-
return ['amex', 'discover', 'masterCard', 'visa'];
|
|
138
|
-
}
|
|
139
|
-
static getDefaultMerchantCapabilities() {
|
|
140
|
-
return [
|
|
141
|
-
ApplePayMerchantCapability.SUPPORTS_3DS,
|
|
142
|
-
ApplePayMerchantCapability.SUPPORTS_EMV,
|
|
143
|
-
ApplePayMerchantCapability.SUPPORTS_CREDIT,
|
|
144
|
-
ApplePayMerchantCapability.SUPPORTS_DEBIT,
|
|
145
|
-
];
|
|
146
|
-
}
|
|
147
|
-
}
|
|
26
|
+
require('./package-C9E_BIbT.js');
|
|
148
27
|
|
|
149
28
|
// Centralized error codes for Apple Pay service
|
|
150
29
|
var ApplePayServiceErrorCode;
|
|
@@ -163,7 +42,7 @@ class ApplePayService {
|
|
|
163
42
|
* Initialize Apple Pay configuration
|
|
164
43
|
*/
|
|
165
44
|
initialize(applePayConfig) {
|
|
166
|
-
this.applePayConfig = new ApplePayConfig(applePayConfig);
|
|
45
|
+
this.applePayConfig = new GooglePay$1.ApplePayConfig(applePayConfig);
|
|
167
46
|
if (!this.applePayConfig.isValid) {
|
|
168
47
|
throw new Error('Invalid Apple Pay configuration provided');
|
|
169
48
|
}
|
|
@@ -214,7 +93,7 @@ class ApplePayService {
|
|
|
214
93
|
* Check if Apple Pay is available on this device/browser
|
|
215
94
|
*/
|
|
216
95
|
isAvailable() {
|
|
217
|
-
return (ApplePayHelpers.isApplePaySupported() && ApplePayHelpers.canMakePayments());
|
|
96
|
+
return (GooglePay$1.ApplePayHelpers.isApplePaySupported() && GooglePay$1.ApplePayHelpers.canMakePayments());
|
|
218
97
|
}
|
|
219
98
|
/**
|
|
220
99
|
* Check if the user has an active card for the merchant
|
|
@@ -223,7 +102,7 @@ class ApplePayService {
|
|
|
223
102
|
if (!this.applePayConfig) {
|
|
224
103
|
throw new Error('Apple Pay not initialized. Call initialize() first.');
|
|
225
104
|
}
|
|
226
|
-
return await ApplePayHelpers.canMakePaymentsWithActiveCard(this.applePayConfig.merchantIdentifier);
|
|
105
|
+
return await GooglePay$1.ApplePayHelpers.canMakePaymentsWithActiveCard(this.applePayConfig.merchantIdentifier);
|
|
227
106
|
}
|
|
228
107
|
/**
|
|
229
108
|
* Start Apple Pay session
|
|
@@ -237,7 +116,7 @@ class ApplePayService {
|
|
|
237
116
|
// if (!this.isAvailable()) {
|
|
238
117
|
// throw new Error('Apple Pay is not available on this device/browser');
|
|
239
118
|
// }
|
|
240
|
-
const request = new ApplePayPaymentRequest(paymentRequest);
|
|
119
|
+
const request = new GooglePay$1.ApplePayPaymentRequest(paymentRequest);
|
|
241
120
|
if (!request.isValid) {
|
|
242
121
|
const missingFields = [];
|
|
243
122
|
if (!request.countryCode)
|
|
@@ -348,13 +227,13 @@ class ApplePayService {
|
|
|
348
227
|
const payment = event.payment;
|
|
349
228
|
const paymentPayload = Object.assign(Object.assign({}, payment.token), { product_details: {
|
|
350
229
|
name: this.currentPaymentRequest.total.label,
|
|
351
|
-
price: ApplePayHelpers.parseAmount(this.currentPaymentRequest.total.amount),
|
|
230
|
+
price: GooglePay$1.ApplePayHelpers.parseAmount(this.currentPaymentRequest.total.amount),
|
|
352
231
|
description: this.currentPaymentRequest.total.label,
|
|
353
232
|
} });
|
|
354
233
|
const paymentResult = await this.processPayment(authToken, accountId, paymentPayload);
|
|
355
234
|
if (paymentResult.success) {
|
|
356
235
|
this.currentSession.completePayment({
|
|
357
|
-
status: ApplePaySessionStatus.STATUS_SUCCESS,
|
|
236
|
+
status: GooglePay$1.ApplePaySessionStatus.STATUS_SUCCESS,
|
|
358
237
|
});
|
|
359
238
|
resolve({
|
|
360
239
|
success: true,
|
|
@@ -365,7 +244,7 @@ class ApplePayService {
|
|
|
365
244
|
else {
|
|
366
245
|
console.error('PSP reported payment failure:', paymentResult.data);
|
|
367
246
|
this.currentSession.completePayment({
|
|
368
|
-
status: ApplePaySessionStatus.STATUS_FAILURE,
|
|
247
|
+
status: GooglePay$1.ApplePaySessionStatus.STATUS_FAILURE,
|
|
369
248
|
});
|
|
370
249
|
reject({
|
|
371
250
|
success: false,
|
|
@@ -383,7 +262,7 @@ class ApplePayService {
|
|
|
383
262
|
console.error('Error stack:', error.stack);
|
|
384
263
|
}
|
|
385
264
|
this.currentSession.completePayment({
|
|
386
|
-
status: ApplePaySessionStatus.STATUS_FAILURE,
|
|
265
|
+
status: GooglePay$1.ApplePaySessionStatus.STATUS_FAILURE,
|
|
387
266
|
});
|
|
388
267
|
reject({
|
|
389
268
|
success: false,
|
|
@@ -415,7 +294,7 @@ class ApplePayService {
|
|
|
415
294
|
};
|
|
416
295
|
this.currentSession.onshippingmethodselected = () => {
|
|
417
296
|
this.currentSession.completeShippingMethodSelection({
|
|
418
|
-
status: ApplePaySessionStatus.STATUS_SUCCESS,
|
|
297
|
+
status: GooglePay$1.ApplePaySessionStatus.STATUS_SUCCESS,
|
|
419
298
|
newTotal: this.currentPaymentRequest.total,
|
|
420
299
|
newLineItems: this.currentPaymentRequest.lineItems || [],
|
|
421
300
|
});
|
|
@@ -475,9 +354,9 @@ class ApplePayService {
|
|
|
475
354
|
return {
|
|
476
355
|
countryCode,
|
|
477
356
|
currencyCode,
|
|
478
|
-
merchantCapabilities: ApplePayHelpers.getDefaultMerchantCapabilities(),
|
|
479
|
-
supportedNetworks: ApplePayHelpers.getDefaultSupportedNetworks(),
|
|
480
|
-
total: ApplePayHelpers.createLineItem(label, amount),
|
|
357
|
+
merchantCapabilities: GooglePay$1.ApplePayHelpers.getDefaultMerchantCapabilities(),
|
|
358
|
+
supportedNetworks: GooglePay$1.ApplePayHelpers.getDefaultSupportedNetworks(),
|
|
359
|
+
total: GooglePay$1.ApplePayHelpers.createLineItem(label, amount),
|
|
481
360
|
};
|
|
482
361
|
}
|
|
483
362
|
/**
|
|
@@ -496,30 +375,30 @@ const ApplePaySkeleton = (props) => {
|
|
|
496
375
|
return (index.h("div", { class: 'container-fluid p-0' }, index.h("div", { class: 'row mb-3' }, index.h("div", { class: 'col-12 align-content-center' }, index.h(skeleton.Skeleton, { height: '44px', width: '100%', styles: { borderRadius: "8px" } })))));
|
|
497
376
|
};
|
|
498
377
|
|
|
499
|
-
const ProcessingSpinner = () => (index.h("div", { class: 'processing-overlay' }, index.h("div", { class: 'spinner' }), index.h("span", null, "Processing...")));
|
|
378
|
+
const ProcessingSpinner$1 = () => (index.h("div", { class: 'processing-overlay' }, index.h("div", { class: 'spinner' }), index.h("span", null, "Processing...")));
|
|
500
379
|
const ApplePayButton = (props) => {
|
|
501
380
|
const getApplePayButtonClass = () => {
|
|
502
381
|
let classes = "apple-pay-button";
|
|
503
382
|
switch (props.buttonStyle) {
|
|
504
|
-
case ApplePayButtonStyle.WHITE:
|
|
383
|
+
case GooglePay$1.ApplePayButtonStyle.WHITE:
|
|
505
384
|
classes += " apple-pay-button-white";
|
|
506
385
|
break;
|
|
507
|
-
case ApplePayButtonStyle.WHITE_OUTLINE:
|
|
386
|
+
case GooglePay$1.ApplePayButtonStyle.WHITE_OUTLINE:
|
|
508
387
|
classes += " apple-pay-button-white-outline";
|
|
509
388
|
break;
|
|
510
|
-
case ApplePayButtonStyle.BLACK:
|
|
389
|
+
case GooglePay$1.ApplePayButtonStyle.BLACK:
|
|
511
390
|
default:
|
|
512
391
|
classes += " apple-pay-button-black";
|
|
513
392
|
break;
|
|
514
393
|
}
|
|
515
394
|
switch (props.buttonType) {
|
|
516
|
-
case ApplePayButtonType.BUY:
|
|
395
|
+
case GooglePay$1.ApplePayButtonType.BUY:
|
|
517
396
|
classes += " apple-pay-button-type-buy";
|
|
518
397
|
break;
|
|
519
|
-
case ApplePayButtonType.DONATE:
|
|
398
|
+
case GooglePay$1.ApplePayButtonType.DONATE:
|
|
520
399
|
classes += " apple-pay-button-type-donate";
|
|
521
400
|
break;
|
|
522
|
-
case ApplePayButtonType.PLAIN:
|
|
401
|
+
case GooglePay$1.ApplePayButtonType.PLAIN:
|
|
523
402
|
default:
|
|
524
403
|
classes += " apple-pay-button-type-plain";
|
|
525
404
|
break;
|
|
@@ -540,7 +419,7 @@ const ApplePayButton = (props) => {
|
|
|
540
419
|
return (index.h("div", { class: 'apple-pay-button-container' }, index.h("button", Object.assign({ class: getApplePayButtonClass(), style: {
|
|
541
420
|
width: props.width,
|
|
542
421
|
height: props.height,
|
|
543
|
-
}, onClick: handleClick, disabled: props.disabled || props.isProcessing || !props.isAvailable, "aria-label": 'Pay with Apple Pay', type: 'button' }, props), props.isProcessing && ProcessingSpinner()), index.h("style", null, `
|
|
422
|
+
}, onClick: handleClick, disabled: props.disabled || props.isProcessing || !props.isAvailable, "aria-label": 'Pay with Apple Pay', type: 'button' }, props), props.isProcessing && ProcessingSpinner$1()), index.h("style", null, `
|
|
544
423
|
.apple-pay-button-container {
|
|
545
424
|
display: block;
|
|
546
425
|
position: relative;
|
|
@@ -650,8 +529,8 @@ const ApplePay = class {
|
|
|
650
529
|
this.merchantIdentifier = "merchant.com.staging-justifi.checkout-dev";
|
|
651
530
|
this.merchantDisplayName = "JustiFi Checkout";
|
|
652
531
|
this.initiativeContext = "dev-checkout.justifi-staging.com";
|
|
653
|
-
this.buttonType = ApplePayButtonType.PLAIN;
|
|
654
|
-
this.buttonStyle = ApplePayButtonStyle.BLACK;
|
|
532
|
+
this.buttonType = GooglePay$1.ApplePayButtonType.PLAIN;
|
|
533
|
+
this.buttonStyle = GooglePay$1.ApplePayButtonStyle.BLACK;
|
|
655
534
|
this.disabled = false;
|
|
656
535
|
this.showSkeleton = true;
|
|
657
536
|
this.width = "100%";
|
|
@@ -673,16 +552,16 @@ const ApplePay = class {
|
|
|
673
552
|
this.applePayStarted.emit();
|
|
674
553
|
const paymentRequest = {
|
|
675
554
|
countryCode: this.countryCode,
|
|
676
|
-
currencyCode:
|
|
555
|
+
currencyCode: GooglePay$1.checkoutStore.paymentCurrency,
|
|
677
556
|
merchantCapabilities: [
|
|
678
|
-
ApplePayMerchantCapability.SUPPORTS_3DS,
|
|
679
|
-
ApplePayMerchantCapability.SUPPORTS_CREDIT,
|
|
680
|
-
ApplePayMerchantCapability.SUPPORTS_DEBIT,
|
|
557
|
+
GooglePay$1.ApplePayMerchantCapability.SUPPORTS_3DS,
|
|
558
|
+
GooglePay$1.ApplePayMerchantCapability.SUPPORTS_CREDIT,
|
|
559
|
+
GooglePay$1.ApplePayMerchantCapability.SUPPORTS_DEBIT,
|
|
681
560
|
],
|
|
682
|
-
supportedNetworks: ApplePayHelpers.getDefaultSupportedNetworks(),
|
|
683
|
-
total: ApplePayHelpers.createLineItem(
|
|
561
|
+
supportedNetworks: GooglePay$1.ApplePayHelpers.getDefaultSupportedNetworks(),
|
|
562
|
+
total: GooglePay$1.ApplePayHelpers.createLineItem(GooglePay$1.checkoutStore.paymentDescription, GooglePay$1.checkoutStore.paymentAmount),
|
|
684
563
|
};
|
|
685
|
-
const result = await this.applePayService.startPaymentSession(paymentRequest,
|
|
564
|
+
const result = await this.applePayService.startPaymentSession(paymentRequest, GooglePay$1.checkoutStore.authToken, GooglePay$1.checkoutStore.accountId);
|
|
686
565
|
if (result.success) {
|
|
687
566
|
this.applePayCompleted.emit({
|
|
688
567
|
success: true,
|
|
@@ -720,24 +599,24 @@ const ApplePay = class {
|
|
|
720
599
|
this.isLoading = true;
|
|
721
600
|
this.error = null;
|
|
722
601
|
this.isConfigValid = true;
|
|
723
|
-
const hasRequiredConfig = Boolean(
|
|
724
|
-
Boolean(
|
|
725
|
-
Boolean(
|
|
602
|
+
const hasRequiredConfig = Boolean(GooglePay$1.checkoutStore.paymentAmount) &&
|
|
603
|
+
Boolean(GooglePay$1.checkoutStore.paymentCurrency) &&
|
|
604
|
+
Boolean(GooglePay$1.checkoutStore.authToken);
|
|
726
605
|
if (!hasRequiredConfig) {
|
|
727
606
|
this.error = "Missing required Apple Pay configuration";
|
|
728
607
|
this.isConfigValid = false;
|
|
729
608
|
console.error("Apple Pay config error: missing required values", {
|
|
730
|
-
paymentAmount:
|
|
731
|
-
paymentCurrency:
|
|
732
|
-
hasAuthToken: Boolean(
|
|
733
|
-
accountId:
|
|
609
|
+
paymentAmount: GooglePay$1.checkoutStore.paymentAmount,
|
|
610
|
+
paymentCurrency: GooglePay$1.checkoutStore.paymentCurrency,
|
|
611
|
+
hasAuthToken: Boolean(GooglePay$1.checkoutStore.authToken),
|
|
612
|
+
accountId: GooglePay$1.checkoutStore.accountId,
|
|
734
613
|
});
|
|
735
614
|
this.applePayError.emit({ error: this.error, code: ApplePay.ErrorCode.CONFIG_ERROR });
|
|
736
615
|
this.isLoading = false;
|
|
737
616
|
return;
|
|
738
617
|
}
|
|
739
|
-
this.isAvailable = ApplePayHelpers.isApplePaySupported();
|
|
740
|
-
this.canMakePayments = ApplePayHelpers.canMakePayments();
|
|
618
|
+
this.isAvailable = GooglePay$1.ApplePayHelpers.isApplePaySupported();
|
|
619
|
+
this.canMakePayments = GooglePay$1.ApplePayHelpers.canMakePayments();
|
|
741
620
|
if (!this.isAvailable) {
|
|
742
621
|
this.error = "Apple Pay is not supported on this device";
|
|
743
622
|
console.error(this.error);
|
|
@@ -786,7 +665,7 @@ const ApplePay = class {
|
|
|
786
665
|
if (!this.isAvailable) {
|
|
787
666
|
return [];
|
|
788
667
|
}
|
|
789
|
-
return ApplePayHelpers.getDefaultSupportedNetworks();
|
|
668
|
+
return GooglePay$1.ApplePayHelpers.getDefaultSupportedNetworks();
|
|
790
669
|
}
|
|
791
670
|
async abort() {
|
|
792
671
|
this.applePayService.abortPaymentSession();
|
|
@@ -794,7 +673,7 @@ const ApplePay = class {
|
|
|
794
673
|
this.applePayCancelled.emit();
|
|
795
674
|
}
|
|
796
675
|
render() {
|
|
797
|
-
if (!
|
|
676
|
+
if (!GooglePay$1.checkoutStore.applePayEnabled) {
|
|
798
677
|
// Render nothing when Apple Pay is disabled at the checkout settings level
|
|
799
678
|
return null;
|
|
800
679
|
}
|
|
@@ -802,7 +681,7 @@ const ApplePay = class {
|
|
|
802
681
|
this.isAvailable &&
|
|
803
682
|
this.canMakePayments &&
|
|
804
683
|
this.isConfigValid;
|
|
805
|
-
return (index.h(styledHost.StyledHost, null,
|
|
684
|
+
return (index.h(styledHost.StyledHost, null, GooglePay$1.checkoutStore.checkoutLoaded && (index.h("script", { async: true, src: 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js', onLoad: () => {
|
|
806
685
|
this.initializeApplePay();
|
|
807
686
|
} })), index.h("div", { class: 'apple-pay-container' }, index.h(ApplePaySkeleton, { isLoading: this.isLoading }), isReady && (index.h(ApplePayButton, { buttonType: this.buttonType, buttonStyle: this.buttonStyle, disabled: this.disabled, isProcessing: this.isProcessing, isAvailable: this.isAvailable, clickHandler: this.handleApplePayClick, width: this.width, height: this.height }))), index.h("style", null, `
|
|
808
687
|
.apple-pay-container {
|
|
@@ -825,8 +704,737 @@ const Summary = class {
|
|
|
825
704
|
index.registerInstance(this, hostRef);
|
|
826
705
|
}
|
|
827
706
|
render() {
|
|
828
|
-
return (index.h(styledHost.StyledHost, { key: '
|
|
707
|
+
return (index.h(styledHost.StyledHost, { key: '38b0a855a7ad68b4c979d045a41efa20937cf476' }, index.h("section", { key: 'bbe4a0d26a95b0abd108370070fb861311724df8' }, index.h("div", { key: 'f322ecda85700c1e232b3f620b672f4eef103e97' }, index.h("div", { key: 'e59c6b19e0f27f7ab99380ead3f734a7e45cc1f1', part: parts.text }, GooglePay$1.checkoutStore === null || GooglePay$1.checkoutStore === void 0 ? void 0 : GooglePay$1.checkoutStore.paymentDescription), index.h("div", { key: '2fae7125889051d87571d9fb7c42ad3646e3ce07' }, index.h("span", { key: '757941148dccea14941f6216f90af8721fbe6cb9', part: parts.text }, "Total"), "\u00A0", index.h("span", { key: 'ee50f026f64df4f73e0f6b087470a2154f4d0b4b', part: parts.text }, utils.formatCurrency(+(GooglePay$1.checkoutStore === null || GooglePay$1.checkoutStore === void 0 ? void 0 : GooglePay$1.checkoutStore.totalAmount))))))));
|
|
708
|
+
}
|
|
709
|
+
};
|
|
710
|
+
|
|
711
|
+
const PROCESS_TOKEN_ENDPOINT = 'google_pay/process_token';
|
|
712
|
+
class GooglePayService {
|
|
713
|
+
constructor() {
|
|
714
|
+
this.api = Api.Api();
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* Initialize Google Pay configuration
|
|
718
|
+
*/
|
|
719
|
+
initialize(googlePayConfig) {
|
|
720
|
+
this.googlePayConfig = new GooglePay$1.GooglePayConfig(googlePayConfig);
|
|
721
|
+
if (!this.googlePayConfig.isValid) {
|
|
722
|
+
throw new Error('Invalid Google Pay configuration provided');
|
|
723
|
+
}
|
|
724
|
+
// Create Google Pay client
|
|
725
|
+
this.googlePayClient = GooglePay$1.GooglePayHelpers.createGooglePayClient(this.googlePayConfig.environment);
|
|
726
|
+
if (!this.googlePayClient) {
|
|
727
|
+
throw new Error('Failed to create Google Pay client');
|
|
728
|
+
}
|
|
729
|
+
// No debug logs
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Process Google Pay payment via API
|
|
733
|
+
*/
|
|
734
|
+
async processPayment(authToken, accountId, payload) {
|
|
735
|
+
const endpoint = PROCESS_TOKEN_ENDPOINT;
|
|
736
|
+
try {
|
|
737
|
+
const result = await this.api.post({
|
|
738
|
+
endpoint,
|
|
739
|
+
authToken,
|
|
740
|
+
body: payload,
|
|
741
|
+
headers: {
|
|
742
|
+
'sub-account': accountId,
|
|
743
|
+
},
|
|
744
|
+
});
|
|
745
|
+
return {
|
|
746
|
+
success: result.id && !!result.data.token,
|
|
747
|
+
data: result,
|
|
748
|
+
};
|
|
749
|
+
}
|
|
750
|
+
catch (_error) {
|
|
751
|
+
throw new Error('Google Pay payment processing failed');
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
/**
|
|
755
|
+
* Check if Google Pay is available on this device/browser
|
|
756
|
+
*/
|
|
757
|
+
isAvailable() {
|
|
758
|
+
return GooglePay$1.GooglePayHelpers.isGooglePaySupported() && !!this.googlePayClient;
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Check if the user can make payments with Google Pay
|
|
762
|
+
*/
|
|
763
|
+
async canMakePayments() {
|
|
764
|
+
if (!this.googlePayClient || !this.googlePayConfig) {
|
|
765
|
+
return false;
|
|
766
|
+
}
|
|
767
|
+
try {
|
|
768
|
+
const baseRequest = GooglePay$1.GooglePayHelpers.createBasePaymentDataRequest();
|
|
769
|
+
const response = await this.googlePayClient.isReadyToPay(baseRequest);
|
|
770
|
+
return response.result;
|
|
771
|
+
}
|
|
772
|
+
catch (_error) {
|
|
773
|
+
return false;
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Start Google Pay payment session
|
|
778
|
+
*/
|
|
779
|
+
async startPaymentSession(paymentDataRequest, authToken, accountId) {
|
|
780
|
+
var _a;
|
|
781
|
+
if (!this.googlePayConfig || !this.googlePayClient) {
|
|
782
|
+
throw new Error('Google Pay not initialized. Call initialize() first.');
|
|
783
|
+
}
|
|
784
|
+
if (!this.isAvailable()) {
|
|
785
|
+
throw new Error('Google Pay is not available on this device/browser');
|
|
786
|
+
}
|
|
787
|
+
const request = new GooglePay$1.GooglePayPaymentDataRequest(paymentDataRequest);
|
|
788
|
+
if (!request.isValid) {
|
|
789
|
+
throw new Error('Invalid payment data request provided');
|
|
790
|
+
}
|
|
791
|
+
try {
|
|
792
|
+
const paymentData = await this.googlePayClient.loadPaymentData(request);
|
|
793
|
+
// Build top-level snake_case fields from Google Pay tokenizationData
|
|
794
|
+
const tokenizationData = (_a = paymentData === null || paymentData === void 0 ? void 0 : paymentData.paymentMethodData) === null || _a === void 0 ? void 0 : _a.tokenizationData;
|
|
795
|
+
const tokenObj = (() => {
|
|
796
|
+
if ((tokenizationData === null || tokenizationData === void 0 ? void 0 : tokenizationData.token) &&
|
|
797
|
+
typeof tokenizationData.token === 'string') {
|
|
798
|
+
try {
|
|
799
|
+
return JSON.parse(tokenizationData.token);
|
|
800
|
+
}
|
|
801
|
+
catch (_e) {
|
|
802
|
+
return tokenizationData;
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
return tokenizationData;
|
|
806
|
+
})();
|
|
807
|
+
const tokenProcessRequest = {
|
|
808
|
+
protocolVersion: tokenObj === null || tokenObj === void 0 ? void 0 : tokenObj.protocolVersion,
|
|
809
|
+
signature: tokenObj === null || tokenObj === void 0 ? void 0 : tokenObj.signature,
|
|
810
|
+
intermediateSigningKey: (tokenObj === null || tokenObj === void 0 ? void 0 : tokenObj.intermediateSigningKey)
|
|
811
|
+
? {
|
|
812
|
+
signedKey: tokenObj.intermediateSigningKey.signedKey,
|
|
813
|
+
signatures: tokenObj.intermediateSigningKey.signatures,
|
|
814
|
+
}
|
|
815
|
+
: undefined,
|
|
816
|
+
signedMessage: tokenObj === null || tokenObj === void 0 ? void 0 : tokenObj.signedMessage,
|
|
817
|
+
};
|
|
818
|
+
const paymentResult = await this.processPayment(authToken, accountId, tokenProcessRequest);
|
|
819
|
+
if (paymentResult.success) {
|
|
820
|
+
return {
|
|
821
|
+
success: true,
|
|
822
|
+
paymentData: paymentData,
|
|
823
|
+
paymentMethodId: paymentResult.data.id,
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
else {
|
|
827
|
+
return {
|
|
828
|
+
success: false,
|
|
829
|
+
error: {
|
|
830
|
+
code: 'PAYMENT_PROCESSING_ERROR',
|
|
831
|
+
message: 'Payment processing failed',
|
|
832
|
+
},
|
|
833
|
+
};
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
catch (error) {
|
|
837
|
+
// Handle different types of errors
|
|
838
|
+
if (error && typeof error === 'object' && 'statusCode' in error) {
|
|
839
|
+
const googlePayError = error;
|
|
840
|
+
switch (googlePayError.statusCode) {
|
|
841
|
+
case 'CANCELED':
|
|
842
|
+
return {
|
|
843
|
+
success: false,
|
|
844
|
+
error: {
|
|
845
|
+
code: 'USER_CANCELLED',
|
|
846
|
+
message: 'User cancelled the Google Pay session',
|
|
847
|
+
},
|
|
848
|
+
};
|
|
849
|
+
case 'DEVELOPER_ERROR':
|
|
850
|
+
return {
|
|
851
|
+
success: false,
|
|
852
|
+
error: {
|
|
853
|
+
code: 'DEVELOPER_ERROR',
|
|
854
|
+
message: 'Google Pay configuration error',
|
|
855
|
+
},
|
|
856
|
+
};
|
|
857
|
+
default:
|
|
858
|
+
return {
|
|
859
|
+
success: false,
|
|
860
|
+
error: {
|
|
861
|
+
code: 'PAYMENT_ERROR',
|
|
862
|
+
message: googlePayError.statusMessage || 'Google Pay payment failed',
|
|
863
|
+
},
|
|
864
|
+
};
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
return {
|
|
868
|
+
success: false,
|
|
869
|
+
error: {
|
|
870
|
+
code: 'PAYMENT_ERROR',
|
|
871
|
+
message: error instanceof Error
|
|
872
|
+
? error.message
|
|
873
|
+
: 'Google Pay payment failed',
|
|
874
|
+
},
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
/**
|
|
879
|
+
* Create Google Pay button element
|
|
880
|
+
*/
|
|
881
|
+
createButton(options) {
|
|
882
|
+
if (!this.googlePayClient || !this.googlePayConfig) {
|
|
883
|
+
return null;
|
|
884
|
+
}
|
|
885
|
+
try {
|
|
886
|
+
return this.googlePayClient.createButton({
|
|
887
|
+
onClick: options.onClick,
|
|
888
|
+
buttonType: options.buttonType,
|
|
889
|
+
buttonSizeMode: options.buttonSizeMode,
|
|
890
|
+
buttonColor: options.buttonColor,
|
|
891
|
+
buttonLocale: options.buttonLocale,
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
catch (_error) {
|
|
895
|
+
return null;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
/**
|
|
899
|
+
* Prefetch payment data for faster loading
|
|
900
|
+
*/
|
|
901
|
+
prefetchPaymentData(paymentDataRequest) {
|
|
902
|
+
if (!this.googlePayClient) {
|
|
903
|
+
return;
|
|
904
|
+
}
|
|
905
|
+
const request = new GooglePay$1.GooglePayPaymentDataRequest(paymentDataRequest);
|
|
906
|
+
if (!request.isValid) {
|
|
907
|
+
return;
|
|
908
|
+
}
|
|
909
|
+
try {
|
|
910
|
+
this.googlePayClient.prefetchPaymentData(request);
|
|
911
|
+
}
|
|
912
|
+
catch (_error) { }
|
|
913
|
+
}
|
|
914
|
+
/**
|
|
915
|
+
* Create a basic payment data request
|
|
916
|
+
*/
|
|
917
|
+
static createPaymentDataRequest(amount, label, countryCode = 'US', currencyCode = 'USD', merchantName, merchantId) {
|
|
918
|
+
const request = {
|
|
919
|
+
apiVersion: 2,
|
|
920
|
+
apiVersionMinor: 0,
|
|
921
|
+
allowedPaymentMethods: [GooglePay$1.GooglePayHelpers.createPaymentMethodData()],
|
|
922
|
+
transactionInfo: {
|
|
923
|
+
countryCode,
|
|
924
|
+
currencyCode,
|
|
925
|
+
totalPriceStatus: 'FINAL',
|
|
926
|
+
totalPrice: GooglePay$1.GooglePayHelpers.formatAmount(amount),
|
|
927
|
+
totalPriceLabel: label,
|
|
928
|
+
},
|
|
929
|
+
merchantInfo: {
|
|
930
|
+
merchantName,
|
|
931
|
+
merchantId,
|
|
932
|
+
},
|
|
933
|
+
};
|
|
934
|
+
// No debug logs
|
|
935
|
+
return request;
|
|
936
|
+
}
|
|
937
|
+
/**
|
|
938
|
+
* Get current configuration
|
|
939
|
+
*/
|
|
940
|
+
getGooglePayConfig() {
|
|
941
|
+
return this.googlePayConfig;
|
|
942
|
+
}
|
|
943
|
+
/**
|
|
944
|
+
* Get current Google Pay client
|
|
945
|
+
*/
|
|
946
|
+
getGooglePayClient() {
|
|
947
|
+
return this.googlePayClient;
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
const GooglePaySkeleton = (props) => {
|
|
952
|
+
const { isLoading } = props;
|
|
953
|
+
if (!isLoading) {
|
|
954
|
+
return null;
|
|
955
|
+
}
|
|
956
|
+
return (index.h("div", { class: 'container-fluid p-0' }, index.h("div", { class: 'row mb-3' }, index.h("div", { class: 'col-12 align-content-center' }, index.h(skeleton.Skeleton, { height: '44px', width: '100%', styles: { borderRadius: "8px" } })))));
|
|
957
|
+
};
|
|
958
|
+
|
|
959
|
+
const ProcessingSpinner = () => (index.h("div", { class: 'processing-overlay' }, index.h("div", { class: 'spinner' }), index.h("span", null, "Processing...")));
|
|
960
|
+
const GooglePayButton = (props) => {
|
|
961
|
+
const getGooglePayButtonClass = () => {
|
|
962
|
+
let classes = "google-pay-button";
|
|
963
|
+
// Button style
|
|
964
|
+
switch (props.buttonStyle) {
|
|
965
|
+
case GooglePay$1.GooglePayButtonStyle.WHITE:
|
|
966
|
+
classes += " google-pay-button-white";
|
|
967
|
+
break;
|
|
968
|
+
case GooglePay$1.GooglePayButtonStyle.BLACK:
|
|
969
|
+
default:
|
|
970
|
+
classes += " google-pay-button-black";
|
|
971
|
+
break;
|
|
972
|
+
}
|
|
973
|
+
// Button type
|
|
974
|
+
switch (props.buttonType) {
|
|
975
|
+
case GooglePay$1.GooglePayButtonType.BUY:
|
|
976
|
+
classes += " google-pay-button-type-buy";
|
|
977
|
+
break;
|
|
978
|
+
case GooglePay$1.GooglePayButtonType.BOOK:
|
|
979
|
+
classes += " google-pay-button-type-book";
|
|
980
|
+
break;
|
|
981
|
+
case GooglePay$1.GooglePayButtonType.CHECKOUT:
|
|
982
|
+
classes += " google-pay-button-type-checkout";
|
|
983
|
+
break;
|
|
984
|
+
case GooglePay$1.GooglePayButtonType.DONATE:
|
|
985
|
+
classes += " google-pay-button-type-donate";
|
|
986
|
+
break;
|
|
987
|
+
case GooglePay$1.GooglePayButtonType.ORDER:
|
|
988
|
+
classes += " google-pay-button-type-order";
|
|
989
|
+
break;
|
|
990
|
+
case GooglePay$1.GooglePayButtonType.PAY:
|
|
991
|
+
classes += " google-pay-button-type-pay";
|
|
992
|
+
break;
|
|
993
|
+
case GooglePay$1.GooglePayButtonType.SUBSCRIBE:
|
|
994
|
+
classes += " google-pay-button-type-subscribe";
|
|
995
|
+
break;
|
|
996
|
+
case GooglePay$1.GooglePayButtonType.PLAIN:
|
|
997
|
+
default:
|
|
998
|
+
classes += " google-pay-button-type-plain";
|
|
999
|
+
break;
|
|
1000
|
+
}
|
|
1001
|
+
// Size mode
|
|
1002
|
+
switch (props.buttonSizeMode) {
|
|
1003
|
+
case GooglePay$1.GooglePayButtonSizeMode.FILL:
|
|
1004
|
+
classes += " google-pay-button-fill";
|
|
1005
|
+
break;
|
|
1006
|
+
case GooglePay$1.GooglePayButtonSizeMode.STATIC:
|
|
1007
|
+
default:
|
|
1008
|
+
classes += " google-pay-button-static";
|
|
1009
|
+
break;
|
|
1010
|
+
}
|
|
1011
|
+
if (props.disabled || props.isProcessing || !props.isAvailable) {
|
|
1012
|
+
classes += " disabled";
|
|
1013
|
+
}
|
|
1014
|
+
return classes;
|
|
1015
|
+
};
|
|
1016
|
+
const getButtonStyles = () => {
|
|
1017
|
+
const styles = {};
|
|
1018
|
+
if (props.buttonSizeMode === GooglePay$1.GooglePayButtonSizeMode.FILL) {
|
|
1019
|
+
styles.width = '100%';
|
|
1020
|
+
styles.minWidth = '200px';
|
|
1021
|
+
}
|
|
1022
|
+
else {
|
|
1023
|
+
styles.width = props.width || '200px';
|
|
1024
|
+
}
|
|
1025
|
+
styles.height = props.height || '48px';
|
|
1026
|
+
return styles;
|
|
1027
|
+
};
|
|
1028
|
+
const handleClick = () => {
|
|
1029
|
+
if (!props.disabled &&
|
|
1030
|
+
!props.isProcessing &&
|
|
1031
|
+
props.isAvailable &&
|
|
1032
|
+
props.clickHandler) {
|
|
1033
|
+
props.clickHandler();
|
|
1034
|
+
}
|
|
1035
|
+
};
|
|
1036
|
+
return (index.h("div", { class: "google-pay-button-container" }, index.h("button", Object.assign({ class: getGooglePayButtonClass(), style: getButtonStyles(), onClick: handleClick, disabled: props.disabled || props.isProcessing || !props.isAvailable, "aria-label": "Google Pay", type: "button" }, props), props.isProcessing && ProcessingSpinner(), index.h("div", { class: 'google-pay-button-content' }, index.h("svg", { width: "41", height: "17", xmlns: "http://www.w3.org/2000/svg" }, index.h("g", { fill: "none", "fill-rule": "evenodd" }, index.h("path", { d: "M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z", fill: "#FFF" }), index.h("path", { d: "M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944", fill: "#4285F4" }), index.h("path", { d: "M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703", fill: "#34A853" }), index.h("path", { d: "M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z", fill: "#FABB05" }), index.h("path", { d: "M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774", fill: "#E94235" }))))), index.h("style", null, `
|
|
1037
|
+
.google-pay-button-container {
|
|
1038
|
+
display: block;
|
|
1039
|
+
position: relative;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
.google-pay-button {
|
|
1043
|
+
display: flex;
|
|
1044
|
+
align-items: center;
|
|
1045
|
+
justify-content: center;
|
|
1046
|
+
border: none;
|
|
1047
|
+
border-radius: 4px;
|
|
1048
|
+
cursor: pointer;
|
|
1049
|
+
font-size: 14px;
|
|
1050
|
+
font-weight: 500;
|
|
1051
|
+
letter-spacing: 0.25px;
|
|
1052
|
+
line-height: 16px;
|
|
1053
|
+
outline: none;
|
|
1054
|
+
padding: 0 20px;
|
|
1055
|
+
position: relative;
|
|
1056
|
+
min-width: 140px;
|
|
1057
|
+
min-height: 48px;
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
/* Button styles */
|
|
1061
|
+
.google-pay-button.google-pay-button-black {
|
|
1062
|
+
background-color: #000;
|
|
1063
|
+
color: #fff;
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
.google-pay-button.google-pay-button-white {
|
|
1067
|
+
background-color: #fff;
|
|
1068
|
+
color: #3c4043;
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
/* Button content */
|
|
1072
|
+
.google-pay-button-content {
|
|
1073
|
+
display: flex;
|
|
1074
|
+
align-items: center;
|
|
1075
|
+
justify-content: center;
|
|
1076
|
+
gap: 8px;
|
|
1077
|
+
white-space: nowrap;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
.google-g-logo {
|
|
1081
|
+
width: 20px;
|
|
1082
|
+
height: 20px;
|
|
1083
|
+
flex-shrink: 0;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
.pay-text {
|
|
1087
|
+
font-family: 'Google Sans', arial, sans-serif;
|
|
1088
|
+
font-size: 14px;
|
|
1089
|
+
font-weight: 500;
|
|
1090
|
+
margin-left: 8px;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
/* Button types - text content handled by ::before pseudo-element */
|
|
1094
|
+
.google-pay-button-type-buy .google-pay-button-content::before {
|
|
1095
|
+
content: 'Buy with';
|
|
1096
|
+
margin-right: 8px;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
.google-pay-button-type-book .google-pay-button-content::before {
|
|
1100
|
+
content: 'Book with';
|
|
1101
|
+
margin-right: 8px;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
.google-pay-button-type-checkout .google-pay-button-content::before {
|
|
1105
|
+
content: 'Checkout with';
|
|
1106
|
+
margin-right: 8px;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
.google-pay-button-type-donate .google-pay-button-content::before {
|
|
1110
|
+
content: 'Donate with';
|
|
1111
|
+
margin-right: 8px;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
.google-pay-button-type-order .google-pay-button-content::before {
|
|
1115
|
+
content: 'Order with';
|
|
1116
|
+
margin-right: 8px;
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
.google-pay-button-type-pay .google-pay-button-content::before {
|
|
1120
|
+
content: 'Pay with';
|
|
1121
|
+
margin-right: 8px;
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
.google-pay-button-type-subscribe .google-pay-button-content::before {
|
|
1125
|
+
content: 'Subscribe with';
|
|
1126
|
+
margin-right: 8px;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
/* Size modes */
|
|
1130
|
+
.google-pay-button.google-pay-button-fill {
|
|
1131
|
+
width: 100%;
|
|
1132
|
+
min-width: 200px;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
.google-pay-button.google-pay-button-static {
|
|
1136
|
+
width: auto;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
/* Hover and focus states */
|
|
1140
|
+
.google-pay-button:hover:not(.disabled) {
|
|
1141
|
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.15), 0 1px 3px 1px rgba(0, 0, 0, 0.30);
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
.google-pay-button:focus:not(.disabled) {
|
|
1145
|
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.15), 0 1px 3px 1px rgba(0, 0, 0, 0.30);
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
.google-pay-button:active:not(.disabled) {
|
|
1149
|
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.15), 0 1px 3px 1px rgba(0, 0, 0, 0.30);
|
|
1150
|
+
transform: translateY(1px);
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
/* Disabled state */
|
|
1154
|
+
.google-pay-button.disabled {
|
|
1155
|
+
opacity: 0.5;
|
|
1156
|
+
cursor: not-allowed;
|
|
1157
|
+
box-shadow: none;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.google-pay-button.disabled:hover,
|
|
1161
|
+
.google-pay-button.disabled:focus,
|
|
1162
|
+
.google-pay-button.disabled:active {
|
|
1163
|
+
box-shadow: none;
|
|
1164
|
+
transform: none;
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
/* Processing overlay */
|
|
1168
|
+
.processing-overlay {
|
|
1169
|
+
position: absolute;
|
|
1170
|
+
top: 0;
|
|
1171
|
+
left: 0;
|
|
1172
|
+
right: 0;
|
|
1173
|
+
bottom: 0;
|
|
1174
|
+
display: flex;
|
|
1175
|
+
align-items: center;
|
|
1176
|
+
justify-content: center;
|
|
1177
|
+
gap: 8px;
|
|
1178
|
+
background: rgba(0, 0, 0, 0.8);
|
|
1179
|
+
color: white;
|
|
1180
|
+
border-radius: 4px;
|
|
1181
|
+
font-size: 14px;
|
|
1182
|
+
font-weight: 500;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
.spinner {
|
|
1186
|
+
width: 16px;
|
|
1187
|
+
height: 16px;
|
|
1188
|
+
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
1189
|
+
border-top: 2px solid #fff;
|
|
1190
|
+
border-radius: 50%;
|
|
1191
|
+
animation: spin 1s linear infinite;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
@keyframes spin {
|
|
1195
|
+
0% { transform: rotate(0deg); }
|
|
1196
|
+
100% { transform: rotate(360deg); }
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
/* Responsive design */
|
|
1200
|
+
@media (max-width: 480px) {
|
|
1201
|
+
.google-pay-button {
|
|
1202
|
+
width: 100% !important;
|
|
1203
|
+
min-width: 200px;
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
`)));
|
|
1207
|
+
};
|
|
1208
|
+
|
|
1209
|
+
const GooglePay = class {
|
|
1210
|
+
constructor(hostRef) {
|
|
1211
|
+
index.registerInstance(this, hostRef);
|
|
1212
|
+
this.googlePayCancelled = index.createEvent(this, "googlePayCancelled");
|
|
1213
|
+
this.googlePayCompleted = index.createEvent(this, "googlePayCompleted");
|
|
1214
|
+
this.googlePayStarted = index.createEvent(this, "googlePayStarted");
|
|
1215
|
+
this.unsubscribes = [];
|
|
1216
|
+
this.canMakePayments = false;
|
|
1217
|
+
this.error = null;
|
|
1218
|
+
this.isAvailable = false;
|
|
1219
|
+
this.isLoading = true;
|
|
1220
|
+
this.isProcessing = false;
|
|
1221
|
+
this.buttonSizeMode = GooglePay$1.GooglePayButtonSizeMode.FILL;
|
|
1222
|
+
this.buttonStyle = GooglePay$1.GooglePayButtonStyle.BLACK;
|
|
1223
|
+
this.buttonType = GooglePay$1.GooglePayButtonType.PLAIN;
|
|
1224
|
+
this.countryCode = "US";
|
|
1225
|
+
this.disabled = false;
|
|
1226
|
+
this.environment = GooglePay$1.GooglePayEnvironment.PRODUCTION;
|
|
1227
|
+
this.merchantId = "gateway:justifi";
|
|
1228
|
+
this.merchantName = "justifi";
|
|
1229
|
+
this.showSkeleton = true;
|
|
1230
|
+
this.handleGooglePayClick = async () => {
|
|
1231
|
+
var _a;
|
|
1232
|
+
if (this.isProcessing ||
|
|
1233
|
+
this.disabled ||
|
|
1234
|
+
!this.isAvailable ||
|
|
1235
|
+
!this.canMakePayments) {
|
|
1236
|
+
return;
|
|
1237
|
+
}
|
|
1238
|
+
try {
|
|
1239
|
+
this.isProcessing = true;
|
|
1240
|
+
this.error = null;
|
|
1241
|
+
this.googlePayStarted.emit();
|
|
1242
|
+
const paymentDataRequest = this.createPaymentDataRequest();
|
|
1243
|
+
const result = await this.googlePayService.startPaymentSession(paymentDataRequest, GooglePay$1.checkoutStore.authToken, GooglePay$1.checkoutStore.accountId);
|
|
1244
|
+
if (result.success) {
|
|
1245
|
+
this.googlePayCompleted.emit({
|
|
1246
|
+
success: true,
|
|
1247
|
+
paymentData: result.paymentData,
|
|
1248
|
+
paymentMethodId: result.paymentMethodId,
|
|
1249
|
+
});
|
|
1250
|
+
}
|
|
1251
|
+
else {
|
|
1252
|
+
this.googlePayCompleted.emit({
|
|
1253
|
+
success: false,
|
|
1254
|
+
error: result.error,
|
|
1255
|
+
});
|
|
1256
|
+
if (((_a = result.error) === null || _a === void 0 ? void 0 : _a.code) === "USER_CANCELLED") {
|
|
1257
|
+
this.googlePayCancelled.emit();
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
catch (error) {
|
|
1262
|
+
const errorMessage = error instanceof Error ? error.message : "Payment failed";
|
|
1263
|
+
this.error = errorMessage;
|
|
1264
|
+
this.googlePayCompleted.emit({
|
|
1265
|
+
success: false,
|
|
1266
|
+
error: errorMessage,
|
|
1267
|
+
});
|
|
1268
|
+
}
|
|
1269
|
+
finally {
|
|
1270
|
+
this.isProcessing = false;
|
|
1271
|
+
}
|
|
1272
|
+
};
|
|
1273
|
+
}
|
|
1274
|
+
watchConfigChange() {
|
|
1275
|
+
this.initializeGooglePay();
|
|
1276
|
+
}
|
|
1277
|
+
componentWillLoad() {
|
|
1278
|
+
this.googlePayService = new GooglePayService();
|
|
1279
|
+
}
|
|
1280
|
+
componentDidLoad() {
|
|
1281
|
+
const unsub = GooglePay$1.onChange("paymentAmount", () => {
|
|
1282
|
+
this.prefetchPaymentData();
|
|
1283
|
+
});
|
|
1284
|
+
if (typeof unsub === 'function')
|
|
1285
|
+
this.unsubscribes.push(unsub);
|
|
1286
|
+
const unsubCurrency = GooglePay$1.onChange("paymentCurrency", () => {
|
|
1287
|
+
this.prefetchPaymentData();
|
|
1288
|
+
});
|
|
1289
|
+
if (typeof unsubCurrency === 'function')
|
|
1290
|
+
this.unsubscribes.push(unsubCurrency);
|
|
1291
|
+
const unsubDesc = GooglePay$1.onChange("paymentDescription", () => {
|
|
1292
|
+
this.prefetchPaymentData();
|
|
1293
|
+
});
|
|
1294
|
+
if (typeof unsubDesc === 'function')
|
|
1295
|
+
this.unsubscribes.push(unsubDesc);
|
|
1296
|
+
}
|
|
1297
|
+
disconnectedCallback() {
|
|
1298
|
+
this.unsubscribes.forEach((fn) => {
|
|
1299
|
+
try {
|
|
1300
|
+
fn();
|
|
1301
|
+
}
|
|
1302
|
+
catch (_a) { }
|
|
1303
|
+
});
|
|
1304
|
+
this.unsubscribes = [];
|
|
1305
|
+
}
|
|
1306
|
+
/**
|
|
1307
|
+
* Returns supported authentication methods when Google Pay is available.
|
|
1308
|
+
*/
|
|
1309
|
+
async getSupportedAuthMethods() {
|
|
1310
|
+
if (!this.isAvailable) {
|
|
1311
|
+
return [];
|
|
1312
|
+
}
|
|
1313
|
+
return GooglePay$1.GooglePayHelpers.getDefaultAuthMethods();
|
|
1314
|
+
}
|
|
1315
|
+
/**
|
|
1316
|
+
* Returns supported card networks when Google Pay is available.
|
|
1317
|
+
*/
|
|
1318
|
+
async getSupportedNetworks() {
|
|
1319
|
+
if (!this.isAvailable) {
|
|
1320
|
+
return [];
|
|
1321
|
+
}
|
|
1322
|
+
return GooglePay$1.GooglePayHelpers.getDefaultSupportedNetworks();
|
|
1323
|
+
}
|
|
1324
|
+
/**
|
|
1325
|
+
* Select Google Pay in the modular checkout parent.
|
|
1326
|
+
*/
|
|
1327
|
+
async handleSelectionClick() {
|
|
1328
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.GOOGLE_PAY };
|
|
1329
|
+
}
|
|
1330
|
+
/**
|
|
1331
|
+
* Returns whether Google Pay is both available and can make payments.
|
|
1332
|
+
*/
|
|
1333
|
+
async isSupported() {
|
|
1334
|
+
return this.isAvailable && this.canMakePayments;
|
|
1335
|
+
}
|
|
1336
|
+
/**
|
|
1337
|
+
* Prefetch payment data for faster load times of the Google Pay sheet.
|
|
1338
|
+
*/
|
|
1339
|
+
async prefetchPaymentData() {
|
|
1340
|
+
if (!this.isAvailable || !this.canMakePayments) {
|
|
1341
|
+
return;
|
|
1342
|
+
}
|
|
1343
|
+
const paymentDataRequest = this.createPaymentDataRequest();
|
|
1344
|
+
this.googlePayService.prefetchPaymentData(paymentDataRequest);
|
|
1345
|
+
}
|
|
1346
|
+
async initializeGooglePay() {
|
|
1347
|
+
try {
|
|
1348
|
+
this.isLoading = true;
|
|
1349
|
+
this.error = null;
|
|
1350
|
+
if (!GooglePay$1.checkoutStore.paymentAmount) {
|
|
1351
|
+
this.error = "Missing required Google Pay configuration";
|
|
1352
|
+
this.isLoading = false;
|
|
1353
|
+
return;
|
|
1354
|
+
}
|
|
1355
|
+
const googlePayConfig = {
|
|
1356
|
+
environment: this.environment,
|
|
1357
|
+
merchantId: this.merchantId,
|
|
1358
|
+
merchantName: this.merchantName,
|
|
1359
|
+
buttonType: this.buttonType,
|
|
1360
|
+
buttonStyle: this.buttonStyle,
|
|
1361
|
+
buttonSizeMode: this.buttonSizeMode,
|
|
1362
|
+
};
|
|
1363
|
+
this.googlePayService.initialize(googlePayConfig);
|
|
1364
|
+
this.isAvailable = this.googlePayService.isAvailable();
|
|
1365
|
+
if (!this.isAvailable) {
|
|
1366
|
+
this.error = "Google Pay is not supported on this device";
|
|
1367
|
+
this.isLoading = false;
|
|
1368
|
+
return;
|
|
1369
|
+
}
|
|
1370
|
+
this.canMakePayments = await this.googlePayService.canMakePayments();
|
|
1371
|
+
if (!this.canMakePayments) {
|
|
1372
|
+
this.error = "Google Pay is not available for payments";
|
|
1373
|
+
this.isLoading = false;
|
|
1374
|
+
return;
|
|
1375
|
+
}
|
|
1376
|
+
const paymentDataRequest = this.createPaymentDataRequest();
|
|
1377
|
+
this.googlePayService.prefetchPaymentData(paymentDataRequest);
|
|
1378
|
+
}
|
|
1379
|
+
catch (error) {
|
|
1380
|
+
this.error =
|
|
1381
|
+
error instanceof Error
|
|
1382
|
+
? error.message
|
|
1383
|
+
: "Failed to initialize Google Pay";
|
|
1384
|
+
}
|
|
1385
|
+
finally {
|
|
1386
|
+
this.isLoading = false;
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
createPaymentDataRequest() {
|
|
1390
|
+
return GooglePayService.createPaymentDataRequest(GooglePay$1.checkoutStore.paymentAmount, GooglePay$1.checkoutStore.paymentDescription, this.countryCode, GooglePay$1.checkoutStore.paymentCurrency, this.merchantName, this.merchantId);
|
|
1391
|
+
}
|
|
1392
|
+
render() {
|
|
1393
|
+
const showError = !this.isLoading && !!this.error;
|
|
1394
|
+
const showDeviceUnavailable = !this.isLoading && !this.error && !this.isAvailable;
|
|
1395
|
+
const showPaymentsUnavailable = !this.isLoading && !this.error && this.isAvailable && !this.canMakePayments;
|
|
1396
|
+
const showButton = !this.isLoading && !this.error && this.isAvailable && this.canMakePayments;
|
|
1397
|
+
return (index.h(styledHost.StyledHost, { key: 'ee9d21e776e2a5c48d3fa2fb505290020707897d' }, GooglePay$1.checkoutStore.checkoutLoaded && (index.h("script", { key: '72bd5be9e6b80a42e219082cb248927aa6e1154b', async: true, src: 'https://pay.google.com/gp/p/js/pay.js', onLoad: () => {
|
|
1398
|
+
this.initializeGooglePay();
|
|
1399
|
+
} })), index.h("div", { key: 'f0c2c019b80589e69c159e78b18e37fc5b1f5b21', class: 'google-pay-container' }, index.h(GooglePaySkeleton, { key: 'd2b1f727aec121ce5e71afcd4306df92a4b5dd3b', isLoading: this.isLoading }), showError && (index.h("div", { key: '257df18492bff1609b864b69e2fffbacfc751ead', class: 'google-pay-error', role: 'alert', "data-testid": 'gp-error' }, index.h("span", { key: 'f0ece1f1ceeb2fd957ab577f848741a377c7375d', class: 'error-icon' }, "\u26A0\uFE0F"), index.h("span", { key: '9139e3824de300b51b2f577fbfa77ab200b0afa5', class: 'error-message' }, this.error))), showDeviceUnavailable && (index.h("div", { key: 'f1bf0002a82aec202b168130729c16caeb254119', class: 'google-pay-unavailable', "data-testid": 'gp-device-unavailable' }, index.h("span", { key: 'de42cef5e7fd8df4f84c6b2d9429672b97e9e805', class: 'unavailable-message' }, "Google Pay is not available on this device"))), showPaymentsUnavailable && (index.h("div", { key: 'a4738f6c36240efee000560acc775e431b517588', class: 'google-pay-unavailable', "data-testid": 'gp-payments-unavailable' }, index.h("span", { key: '6987a5208a702c15081660b09bfc10360eeef922', class: 'unavailable-message' }, "Google Pay is not available for payments"))), showButton && (index.h(GooglePayButton, { key: 'de09f6693db4dc60ba6529e683dc213bec8492a5', "data-testid": 'gp-button', buttonType: this.buttonType, buttonStyle: this.buttonStyle, buttonSizeMode: this.buttonSizeMode, disabled: this.disabled, isProcessing: this.isProcessing, isAvailable: this.isAvailable, clickHandler: this.handleGooglePayClick }))), index.h("style", { key: 'ed3249a9b1f55720f6f4f29b3923ae2c6eda3431' }, `
|
|
1400
|
+
.google-pay-container {
|
|
1401
|
+
width: 100%;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.google-pay-error {
|
|
1405
|
+
display: flex;
|
|
1406
|
+
align-items: center;
|
|
1407
|
+
gap: 8px;
|
|
1408
|
+
padding: 12px;
|
|
1409
|
+
background: #fef2f2;
|
|
1410
|
+
border: 1px solid #fecaca;
|
|
1411
|
+
border-radius: 8px;
|
|
1412
|
+
color: #dc2626;
|
|
1413
|
+
font-size: 14px;
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
.google-pay-unavailable {
|
|
1417
|
+
display: flex;
|
|
1418
|
+
align-items: center;
|
|
1419
|
+
justify-content: center;
|
|
1420
|
+
padding: 12px;
|
|
1421
|
+
background: #f9fafb;
|
|
1422
|
+
border: 1px solid #e5e7eb;
|
|
1423
|
+
border-radius: 8px;
|
|
1424
|
+
color: #6b7280;
|
|
1425
|
+
font-size: 14px;
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
.error-icon {
|
|
1429
|
+
font-size: 16px;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
`)));
|
|
829
1433
|
}
|
|
1434
|
+
static get watchers() { return {
|
|
1435
|
+
"merchantId": ["watchConfigChange"],
|
|
1436
|
+
"environment": ["watchConfigChange"]
|
|
1437
|
+
}; }
|
|
830
1438
|
};
|
|
831
1439
|
|
|
832
1440
|
const Header = class {
|
|
@@ -841,7 +1449,7 @@ const Header = class {
|
|
|
841
1449
|
}
|
|
842
1450
|
render() {
|
|
843
1451
|
const HeaderComponent = this.levels[this.level];
|
|
844
|
-
return (index.h(styledHost.StyledHost, { key: '
|
|
1452
|
+
return (index.h(styledHost.StyledHost, { key: 'e448c85b2268df923662a0ff71bf4d178dcfc910' }, index.h(HeaderComponent, { key: 'c76766a1ab006ea4b5eb7e0ad8a6b294d52283a0', text: this.text, class: this.class })));
|
|
845
1453
|
}
|
|
846
1454
|
};
|
|
847
1455
|
|
|
@@ -927,11 +1535,30 @@ const ModularCheckout = class {
|
|
|
927
1535
|
this.submitEvent = index.createEvent(this, "submit-event");
|
|
928
1536
|
this.checkoutChangedEvent = index.createEvent(this, "checkout-changed");
|
|
929
1537
|
this.plaidService = new PlaidService();
|
|
1538
|
+
this.handleGooglePayCompleted = (event) => {
|
|
1539
|
+
const { success, paymentMethodId, error } = event.detail || {};
|
|
1540
|
+
if (success && paymentMethodId) {
|
|
1541
|
+
GooglePay$1.checkoutStore.paymentToken = paymentMethodId;
|
|
1542
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.GOOGLE_PAY };
|
|
1543
|
+
this.submitCheckout();
|
|
1544
|
+
}
|
|
1545
|
+
else {
|
|
1546
|
+
this.errorEvent.emit({
|
|
1547
|
+
message: (error && error.message) || "Google Pay payment failed",
|
|
1548
|
+
errorCode: ComponentError.ComponentErrorCodes.TOKENIZE_ERROR,
|
|
1549
|
+
severity: ComponentError.ComponentErrorSeverity.ERROR,
|
|
1550
|
+
});
|
|
1551
|
+
}
|
|
1552
|
+
};
|
|
1553
|
+
this.handleGooglePayCancelled = () => {
|
|
1554
|
+
GooglePay$1.checkoutStore.paymentToken = undefined;
|
|
1555
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = undefined;
|
|
1556
|
+
};
|
|
930
1557
|
this.handleApplePayCompleted = (event) => {
|
|
931
1558
|
const { success, token, paymentMethodId, error } = event.detail;
|
|
932
1559
|
if (success && token) {
|
|
933
|
-
|
|
934
|
-
|
|
1560
|
+
GooglePay$1.checkoutStore.paymentToken = paymentMethodId;
|
|
1561
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.APPLE_PAY };
|
|
935
1562
|
this.submitCheckout();
|
|
936
1563
|
}
|
|
937
1564
|
else {
|
|
@@ -954,20 +1581,21 @@ const ModularCheckout = class {
|
|
|
954
1581
|
});
|
|
955
1582
|
};
|
|
956
1583
|
this.handleApplePayCancelled = () => {
|
|
957
|
-
|
|
958
|
-
|
|
1584
|
+
GooglePay$1.checkoutStore.paymentToken = undefined;
|
|
1585
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = undefined;
|
|
959
1586
|
};
|
|
960
1587
|
}
|
|
961
1588
|
connectedCallback() {
|
|
962
1589
|
this.observer = new MutationObserver(() => {
|
|
963
1590
|
this.queryFormRefs();
|
|
964
1591
|
this.setupApplePayListeners(); // set up again listeners when DOM changes
|
|
1592
|
+
this.setupGooglePayListeners();
|
|
965
1593
|
});
|
|
966
1594
|
this.observer.observe(this.hostEl, {
|
|
967
1595
|
childList: true,
|
|
968
1596
|
subtree: true,
|
|
969
1597
|
});
|
|
970
|
-
|
|
1598
|
+
GooglePay$1.checkoutStore.checkoutId = this.checkoutId;
|
|
971
1599
|
const config = {
|
|
972
1600
|
authToken: this.authToken,
|
|
973
1601
|
checkoutId: this.checkoutId,
|
|
@@ -976,14 +1604,14 @@ const ModularCheckout = class {
|
|
|
976
1604
|
this.getCheckout = makeGetCheckout(config);
|
|
977
1605
|
this.completeCheckout = makeCheckoutComplete(config);
|
|
978
1606
|
// Emit checkout-changed whenever any store key changes
|
|
979
|
-
|
|
1607
|
+
GooglePay$1.onAnyChange(() => {
|
|
980
1608
|
this.emitCheckoutChanged();
|
|
981
1609
|
});
|
|
982
1610
|
}
|
|
983
1611
|
componentWillLoad() {
|
|
984
1612
|
this.analytics = new checkPkgVersion.JustifiAnalytics(this);
|
|
985
1613
|
checkPkgVersion.checkPkgVersion();
|
|
986
|
-
|
|
1614
|
+
GooglePay$1.checkoutStore.authToken = this.authToken;
|
|
987
1615
|
this.fetchCheckout();
|
|
988
1616
|
// Refresh the checkout data when insurance values actually change (not on initial load)
|
|
989
1617
|
insuranceState.insuranceValuesOn("set", (key) => {
|
|
@@ -996,11 +1624,13 @@ const ModularCheckout = class {
|
|
|
996
1624
|
componentDidLoad() {
|
|
997
1625
|
this.queryFormRefs();
|
|
998
1626
|
this.setupApplePayListeners();
|
|
1627
|
+
this.setupGooglePayListeners();
|
|
999
1628
|
}
|
|
1000
1629
|
disconnectedCallback() {
|
|
1001
1630
|
var _a;
|
|
1002
1631
|
(_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
1003
1632
|
this.removeApplePayListeners();
|
|
1633
|
+
this.removeGooglePayListeners();
|
|
1004
1634
|
}
|
|
1005
1635
|
fetchCheckout() {
|
|
1006
1636
|
if (!this.authToken || !this.checkoutId) {
|
|
@@ -1015,7 +1645,7 @@ const ModularCheckout = class {
|
|
|
1015
1645
|
this.getCheckout({
|
|
1016
1646
|
onSuccess: ({ checkout }) => {
|
|
1017
1647
|
this.updateStore(checkout);
|
|
1018
|
-
if (checkout.status ===
|
|
1648
|
+
if (checkout.status === GooglePay$1.ICheckoutStatus.completed) {
|
|
1019
1649
|
this.errorEvent.emit({
|
|
1020
1650
|
message: ComponentError.ComponentErrorMessages.CHECKOUT_ALREADY_COMPLETED,
|
|
1021
1651
|
errorCode: ComponentError.ComponentErrorCodes.CHECKOUT_ALREADY_COMPLETED,
|
|
@@ -1023,7 +1653,7 @@ const ModularCheckout = class {
|
|
|
1023
1653
|
});
|
|
1024
1654
|
return;
|
|
1025
1655
|
}
|
|
1026
|
-
else if (checkout.status ===
|
|
1656
|
+
else if (checkout.status === GooglePay$1.ICheckoutStatus.expired) {
|
|
1027
1657
|
this.errorEvent.emit({
|
|
1028
1658
|
message: ComponentError.ComponentErrorMessages.CHECKOUT_EXPIRED,
|
|
1029
1659
|
errorCode: ComponentError.ComponentErrorCodes.CHECKOUT_EXPIRED,
|
|
@@ -1043,35 +1673,37 @@ const ModularCheckout = class {
|
|
|
1043
1673
|
}
|
|
1044
1674
|
}
|
|
1045
1675
|
updateStore(checkout) {
|
|
1046
|
-
var _a, _b, _c, _d, _e, _f;
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1676
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1677
|
+
GooglePay$1.checkoutStore.accountId = checkout.account_id;
|
|
1678
|
+
GooglePay$1.checkoutStore.checkoutLoaded = true;
|
|
1679
|
+
GooglePay$1.checkoutStore.paymentMethods = checkout.payment_methods.map((paymentMethod) => new index$1.PaymentMethod(paymentMethod));
|
|
1680
|
+
GooglePay$1.checkoutStore.paymentMethodGroupId = checkout.payment_method_group_id;
|
|
1681
|
+
GooglePay$1.checkoutStore.paymentDescription = checkout.payment_description;
|
|
1682
|
+
GooglePay$1.checkoutStore.totalAmount = checkout.total_amount;
|
|
1683
|
+
GooglePay$1.checkoutStore.paymentAmount = checkout.payment_amount;
|
|
1684
|
+
GooglePay$1.checkoutStore.bnplEnabled = checkout.payment_settings.bnpl_payments;
|
|
1685
|
+
GooglePay$1.checkoutStore.insuranceEnabled = checkout.payment_settings.insurance_payments;
|
|
1686
|
+
GooglePay$1.checkoutStore.bankAccountVerification = (_a = checkout.payment_settings) === null || _a === void 0 ? void 0 : _a.bank_account_verification;
|
|
1687
|
+
GooglePay$1.checkoutStore.applePayEnabled = (_b = checkout.payment_settings) === null || _b === void 0 ? void 0 : _b.apple_payments;
|
|
1688
|
+
GooglePay$1.checkoutStore.googlePayEnabled = (_c = checkout.payment_settings) === null || _c === void 0 ? void 0 : _c.google_payments;
|
|
1689
|
+
GooglePay$1.checkoutStore.bnplProviderClientId = (_d = checkout === null || checkout === void 0 ? void 0 : checkout.bnpl) === null || _d === void 0 ? void 0 : _d.provider_client_id;
|
|
1690
|
+
GooglePay$1.checkoutStore.bnplProviderMode = (_e = checkout === null || checkout === void 0 ? void 0 : checkout.bnpl) === null || _e === void 0 ? void 0 : _e.provider_mode;
|
|
1691
|
+
GooglePay$1.checkoutStore.bnplProviderApiVersion = (_f = checkout === null || checkout === void 0 ? void 0 : checkout.bnpl) === null || _f === void 0 ? void 0 : _f.provider_api_version;
|
|
1692
|
+
GooglePay$1.checkoutStore.bnplProviderCheckoutUrl =
|
|
1693
|
+
(_g = checkout === null || checkout === void 0 ? void 0 : checkout.bnpl) === null || _g === void 0 ? void 0 : _g.provider_checkout_url;
|
|
1063
1694
|
}
|
|
1064
1695
|
emitCheckoutChanged() {
|
|
1065
1696
|
const detail = {
|
|
1066
|
-
availablePaymentMethodTypes:
|
|
1067
|
-
selectedPaymentMethod:
|
|
1068
|
-
savedPaymentMethods:
|
|
1697
|
+
availablePaymentMethodTypes: GooglePay$1.getAvailablePaymentMethodTypes(),
|
|
1698
|
+
selectedPaymentMethod: GooglePay$1.checkoutStore.selectedPaymentMethod,
|
|
1699
|
+
savedPaymentMethods: GooglePay$1.checkoutStore.paymentMethods,
|
|
1069
1700
|
};
|
|
1070
1701
|
this.checkoutChangedEvent.emit(detail);
|
|
1071
1702
|
}
|
|
1072
1703
|
queryFormRefs() {
|
|
1073
1704
|
this.billingFormRef = this.hostEl.querySelector("justifi-billing-form, justifi-bank-account-billing-form-simple, justifi-card-billing-form-simple, justifi-billing-form-full");
|
|
1074
1705
|
this.applePayRef = this.hostEl.querySelector("justifi-apple-pay");
|
|
1706
|
+
this.googlePayRef = this.hostEl.querySelector("justifi-google-pay");
|
|
1075
1707
|
this.paymentMethodFormRef =
|
|
1076
1708
|
this.hostEl.querySelector('justifi-card-form, justifi-bank-account-form, justifi-tokenize-payment-method');
|
|
1077
1709
|
this.insuranceFormRef = this.hostEl.querySelector('justifi-season-interruption-insurance');
|
|
@@ -1090,40 +1722,52 @@ const ModularCheckout = class {
|
|
|
1090
1722
|
this.applePayRef.removeEventListener("applePayCancelled", this.handleApplePayCancelled);
|
|
1091
1723
|
}
|
|
1092
1724
|
}
|
|
1725
|
+
setupGooglePayListeners() {
|
|
1726
|
+
if (this.googlePayRef) {
|
|
1727
|
+
this.googlePayRef.addEventListener("googlePayCompleted", this.handleGooglePayCompleted);
|
|
1728
|
+
this.googlePayRef.addEventListener("googlePayCancelled", this.handleGooglePayCancelled);
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
removeGooglePayListeners() {
|
|
1732
|
+
if (this.googlePayRef) {
|
|
1733
|
+
this.googlePayRef.removeEventListener("googlePayCompleted", this.handleGooglePayCompleted);
|
|
1734
|
+
this.googlePayRef.removeEventListener("googlePayCancelled", this.handleGooglePayCancelled);
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1093
1737
|
async tokenizePaymentMethod(tokenizeArgs) {
|
|
1094
1738
|
var _a, _b, _c;
|
|
1095
1739
|
const billingInfoValues = (_b = (await ((_a = this.billingFormRef) === null || _a === void 0 ? void 0 : _a.getValues()))) !== null && _b !== void 0 ? _b : {};
|
|
1096
1740
|
const combinedBillingInfo = Object.assign(Object.assign({}, tokenizeArgs), billingInfoValues);
|
|
1097
|
-
const paymentMethodMetadata = Object.assign({ accountId:
|
|
1098
|
-
if (
|
|
1741
|
+
const paymentMethodMetadata = Object.assign({ accountId: GooglePay$1.checkoutStore.accountId, payment_method_group_id: undefined }, combinedBillingInfo);
|
|
1742
|
+
if (GooglePay$1.checkoutStore.savePaymentMethod) {
|
|
1099
1743
|
paymentMethodMetadata.payment_method_group_id =
|
|
1100
|
-
|
|
1744
|
+
GooglePay$1.checkoutStore.paymentMethodGroupId;
|
|
1101
1745
|
}
|
|
1102
1746
|
const tokenizeResult = await ((_c = this.paymentMethodFormRef) === null || _c === void 0 ? void 0 : _c.tokenize({
|
|
1103
1747
|
clientId: this.authToken,
|
|
1104
1748
|
paymentMethodMetadata,
|
|
1105
|
-
account:
|
|
1749
|
+
account: GooglePay$1.checkoutStore.accountId,
|
|
1106
1750
|
}));
|
|
1107
1751
|
if (tokenizeResult.error) {
|
|
1108
1752
|
return tokenizeResult;
|
|
1109
1753
|
}
|
|
1110
|
-
|
|
1754
|
+
GooglePay$1.checkoutStore.paymentToken = tokenizeResult.id;
|
|
1111
1755
|
return tokenizeResult.id;
|
|
1112
1756
|
}
|
|
1113
1757
|
// set the selected payment method to the checkout store from outside the component
|
|
1114
1758
|
async setSelectedPaymentMethod(paymentMethod) {
|
|
1115
|
-
|
|
1116
|
-
|
|
1759
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = paymentMethod;
|
|
1760
|
+
GooglePay$1.checkoutStore.paymentToken = paymentMethod.id || undefined;
|
|
1117
1761
|
}
|
|
1118
1762
|
// if validation fails, the error will be emitted by the component
|
|
1119
1763
|
async validate() {
|
|
1120
1764
|
var _a, _b;
|
|
1121
1765
|
const promises = [];
|
|
1122
|
-
if (
|
|
1766
|
+
if (GooglePay$1.checkoutStore.insuranceEnabled && this.insuranceFormRef) {
|
|
1123
1767
|
promises.push(this.insuranceFormRef.validate());
|
|
1124
1768
|
}
|
|
1125
|
-
const isNewCard = ((_a =
|
|
1126
|
-
const isNewBankAccount = ((_b =
|
|
1769
|
+
const isNewCard = ((_a = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _a === void 0 ? void 0 : _a.type) === index$1.PAYMENT_METHODS.NEW_CARD;
|
|
1770
|
+
const isNewBankAccount = ((_b = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _b === void 0 ? void 0 : _b.type) === index$1.PAYMENT_METHODS.NEW_BANK_ACCOUNT;
|
|
1127
1771
|
// For new card/bank account, validate payment method + billing.
|
|
1128
1772
|
if (isNewCard || isNewBankAccount) {
|
|
1129
1773
|
if (this.paymentMethodFormRef)
|
|
@@ -1157,7 +1801,7 @@ const ModularCheckout = class {
|
|
|
1157
1801
|
async submitCheckout(submitCheckoutArgs) {
|
|
1158
1802
|
var _a, _b, _c, _d, _e;
|
|
1159
1803
|
const isValid = await this.validate();
|
|
1160
|
-
if (!
|
|
1804
|
+
if (!GooglePay$1.checkoutStore.selectedPaymentMethod) {
|
|
1161
1805
|
this.errorEvent.emit({
|
|
1162
1806
|
message: 'No payment method selected.',
|
|
1163
1807
|
errorCode: ComponentError.ComponentErrorCodes.VALIDATION_ERROR,
|
|
@@ -1165,9 +1809,9 @@ const ModularCheckout = class {
|
|
|
1165
1809
|
});
|
|
1166
1810
|
return;
|
|
1167
1811
|
}
|
|
1168
|
-
const isNewCard = ((_a =
|
|
1169
|
-
const isNewBankAccount = ((_b =
|
|
1170
|
-
const isPlaid = ((_c =
|
|
1812
|
+
const isNewCard = ((_a = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _a === void 0 ? void 0 : _a.type) === index$1.PAYMENT_METHODS.NEW_CARD;
|
|
1813
|
+
const isNewBankAccount = ((_b = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _b === void 0 ? void 0 : _b.type) === index$1.PAYMENT_METHODS.NEW_BANK_ACCOUNT;
|
|
1814
|
+
const isPlaid = ((_c = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _c === void 0 ? void 0 : _c.type) === index$1.PAYMENT_METHODS.PLAID;
|
|
1171
1815
|
const shouldTokenize = isNewCard || isNewBankAccount;
|
|
1172
1816
|
if (shouldTokenize) {
|
|
1173
1817
|
const tokenizeResult = await this.tokenizePaymentMethod(submitCheckoutArgs);
|
|
@@ -1181,9 +1825,9 @@ const ModularCheckout = class {
|
|
|
1181
1825
|
}
|
|
1182
1826
|
}
|
|
1183
1827
|
// For Plaid, perform exchange at submit time using stored public token and link token id
|
|
1184
|
-
if (isPlaid && !
|
|
1185
|
-
const publicToken =
|
|
1186
|
-
const linkTokenId =
|
|
1828
|
+
if (isPlaid && !GooglePay$1.checkoutStore.paymentToken) {
|
|
1829
|
+
const publicToken = GooglePay$1.checkoutStore.plaidPublicToken;
|
|
1830
|
+
const linkTokenId = GooglePay$1.checkoutStore.plaidLinkTokenId;
|
|
1187
1831
|
if (!publicToken) {
|
|
1188
1832
|
this.errorEvent.emit({
|
|
1189
1833
|
message: 'Missing Plaid public token. Please connect your bank.',
|
|
@@ -1193,7 +1837,7 @@ const ModularCheckout = class {
|
|
|
1193
1837
|
return;
|
|
1194
1838
|
}
|
|
1195
1839
|
try {
|
|
1196
|
-
const response = await this.plaidService.tokenizeBankAccount(
|
|
1840
|
+
const response = await this.plaidService.tokenizeBankAccount(GooglePay$1.checkoutStore.authToken, GooglePay$1.checkoutStore.accountId, publicToken, linkTokenId || undefined, GooglePay$1.checkoutStore.savePaymentMethod ? GooglePay$1.checkoutStore.paymentMethodGroupId : undefined);
|
|
1197
1841
|
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
1198
1842
|
this.errorEvent.emit({
|
|
1199
1843
|
message: typeof response.error === 'string' ? response.error : response.error.message || 'Failed to tokenize bank account',
|
|
@@ -1204,7 +1848,7 @@ const ModularCheckout = class {
|
|
|
1204
1848
|
}
|
|
1205
1849
|
const paymentMethod = response === null || response === void 0 ? void 0 : response.data;
|
|
1206
1850
|
const token = ((_d = paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.bank_account) === null || _d === void 0 ? void 0 : _d.token) || (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.token) || (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.id);
|
|
1207
|
-
|
|
1851
|
+
GooglePay$1.checkoutStore.paymentToken = token;
|
|
1208
1852
|
}
|
|
1209
1853
|
catch (err) {
|
|
1210
1854
|
this.errorEvent.emit({
|
|
@@ -1223,7 +1867,7 @@ const ModularCheckout = class {
|
|
|
1223
1867
|
});
|
|
1224
1868
|
return;
|
|
1225
1869
|
}
|
|
1226
|
-
if (!
|
|
1870
|
+
if (!GooglePay$1.checkoutStore.paymentToken) {
|
|
1227
1871
|
this.errorEvent.emit({
|
|
1228
1872
|
message: 'Payment token not found.',
|
|
1229
1873
|
errorCode: ComponentError.ComponentErrorCodes.TOKENIZE_ERROR,
|
|
@@ -1244,16 +1888,18 @@ const ModularCheckout = class {
|
|
|
1244
1888
|
return index$1.PAYMENT_MODE.BNPL;
|
|
1245
1889
|
case index$1.PAYMENT_METHODS.APPLE_PAY:
|
|
1246
1890
|
return index$1.PAYMENT_MODE.APPLE_PAY;
|
|
1891
|
+
case index$1.PAYMENT_METHODS.GOOGLE_PAY:
|
|
1892
|
+
return index$1.PAYMENT_MODE.GOOGLE_PAY;
|
|
1247
1893
|
default:
|
|
1248
1894
|
return undefined;
|
|
1249
1895
|
}
|
|
1250
1896
|
};
|
|
1251
1897
|
payment = {
|
|
1252
|
-
payment_mode: mapTypeToPaymentMode((_e =
|
|
1253
|
-
payment_token:
|
|
1898
|
+
payment_mode: mapTypeToPaymentMode((_e = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _e === void 0 ? void 0 : _e.type),
|
|
1899
|
+
payment_token: GooglePay$1.checkoutStore.paymentToken,
|
|
1254
1900
|
};
|
|
1255
1901
|
if (this.preCompleteHook) {
|
|
1256
|
-
const state =
|
|
1902
|
+
const state = GooglePay$1.getCheckoutState();
|
|
1257
1903
|
try {
|
|
1258
1904
|
await new Promise((resolve, reject) => {
|
|
1259
1905
|
this.preCompleteHook(state, () => resolve(), () => reject());
|
|
@@ -1281,7 +1927,7 @@ const ModularCheckout = class {
|
|
|
1281
1927
|
});
|
|
1282
1928
|
}
|
|
1283
1929
|
render() {
|
|
1284
|
-
return index.h(index.Host, { key: '
|
|
1930
|
+
return index.h(index.Host, { key: 'e771926ee79c47b09145bd44b47cbba3c21be3eb' });
|
|
1285
1931
|
}
|
|
1286
1932
|
get hostEl() { return index.getElement(this); }
|
|
1287
1933
|
};
|
|
@@ -1360,7 +2006,7 @@ const PlaidPaymentMethod = class {
|
|
|
1360
2006
|
this.hasLoggedDisabledWarning = false;
|
|
1361
2007
|
this.waitForStoreAndInitialize = () => {
|
|
1362
2008
|
// Check if store has necessary data
|
|
1363
|
-
if (
|
|
2009
|
+
if (GooglePay$1.checkoutStore.authToken && GooglePay$1.checkoutStore.accountId && GooglePay$1.checkoutStore.checkoutId) {
|
|
1364
2010
|
this.initializePlaidLink();
|
|
1365
2011
|
}
|
|
1366
2012
|
else {
|
|
@@ -1419,7 +2065,7 @@ const PlaidPaymentMethod = class {
|
|
|
1419
2065
|
this.getLinkToken = async () => {
|
|
1420
2066
|
var _a, _b, _c, _d, _e;
|
|
1421
2067
|
try {
|
|
1422
|
-
if (!
|
|
2068
|
+
if (!GooglePay$1.checkoutStore.authToken || !GooglePay$1.checkoutStore.accountId) {
|
|
1423
2069
|
this.handleError({
|
|
1424
2070
|
code: PlaidErrorCodes.PLAID_LINK_TOKEN_FAILED,
|
|
1425
2071
|
message: 'Missing authentication. Please refresh the page and try again.',
|
|
@@ -1436,7 +2082,7 @@ const PlaidPaymentMethod = class {
|
|
|
1436
2082
|
var _a;
|
|
1437
2083
|
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
|
1438
2084
|
}, 30000); // 30 second timeout
|
|
1439
|
-
const response = await this.plaidService.getLinkToken(
|
|
2085
|
+
const response = await this.plaidService.getLinkToken(GooglePay$1.checkoutStore.authToken, GooglePay$1.checkoutStore.accountId, GooglePay$1.checkoutStore.checkoutId, this.abortController.signal);
|
|
1440
2086
|
// Clear timeout
|
|
1441
2087
|
if (this.timeoutId) {
|
|
1442
2088
|
clearTimeout(this.timeoutId);
|
|
@@ -1453,7 +2099,7 @@ const PlaidPaymentMethod = class {
|
|
|
1453
2099
|
// Try to capture link token id if present in envelope
|
|
1454
2100
|
this.linkTokenId = (response === null || response === void 0 ? void 0 : response.id) || ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.id) || null;
|
|
1455
2101
|
if (this.linkTokenId) {
|
|
1456
|
-
|
|
2102
|
+
GooglePay$1.checkoutStore.plaidLinkTokenId = this.linkTokenId;
|
|
1457
2103
|
}
|
|
1458
2104
|
}
|
|
1459
2105
|
catch (error) {
|
|
@@ -1526,7 +2172,7 @@ const PlaidPaymentMethod = class {
|
|
|
1526
2172
|
// Ensure the component remains selected after successful authentication
|
|
1527
2173
|
if (!this.isSelected) {
|
|
1528
2174
|
this.isSelected = true;
|
|
1529
|
-
|
|
2175
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.PLAID };
|
|
1530
2176
|
}
|
|
1531
2177
|
// Emit success event for parent components
|
|
1532
2178
|
this.plaidErrorRecovered.emit({
|
|
@@ -1535,7 +2181,7 @@ const PlaidPaymentMethod = class {
|
|
|
1535
2181
|
severity: ComponentError.ComponentErrorSeverity.INFO
|
|
1536
2182
|
});
|
|
1537
2183
|
// Store public token in checkout store; exchange will be handled on submit
|
|
1538
|
-
|
|
2184
|
+
GooglePay$1.checkoutStore.plaidPublicToken = publicToken;
|
|
1539
2185
|
};
|
|
1540
2186
|
// Exchange logic moved to Modular Checkout submit flow.
|
|
1541
2187
|
this.handlePlaidExit = (err, _metadata) => {
|
|
@@ -1677,7 +2323,7 @@ const PlaidPaymentMethod = class {
|
|
|
1677
2323
|
// Watch for store changes to sync component state
|
|
1678
2324
|
this.syncWithStore = () => {
|
|
1679
2325
|
var _a;
|
|
1680
|
-
const shouldBeSelected = ((_a =
|
|
2326
|
+
const shouldBeSelected = ((_a = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _a === void 0 ? void 0 : _a.type) === index$1.PAYMENT_METHODS.PLAID;
|
|
1681
2327
|
if (this.isSelected !== shouldBeSelected) {
|
|
1682
2328
|
this.isSelected = shouldBeSelected;
|
|
1683
2329
|
}
|
|
@@ -1686,8 +2332,8 @@ const PlaidPaymentMethod = class {
|
|
|
1686
2332
|
onSelectionChange(newValue) {
|
|
1687
2333
|
var _a;
|
|
1688
2334
|
// Ensure store is updated when component selection changes
|
|
1689
|
-
if (newValue && ((_a =
|
|
1690
|
-
|
|
2335
|
+
if (newValue && ((_a = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _a === void 0 ? void 0 : _a.type) !== index$1.PAYMENT_METHODS.PLAID) {
|
|
2336
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.PLAID };
|
|
1691
2337
|
}
|
|
1692
2338
|
// Auto-start Plaid flow when selected and ready
|
|
1693
2339
|
if (newValue &&
|
|
@@ -1719,7 +2365,7 @@ const PlaidPaymentMethod = class {
|
|
|
1719
2365
|
componentWillLoad() {
|
|
1720
2366
|
var _a;
|
|
1721
2367
|
// Initialize selection state based on store
|
|
1722
|
-
this.isSelected = ((_a =
|
|
2368
|
+
this.isSelected = ((_a = GooglePay$1.checkoutStore.selectedPaymentMethod) === null || _a === void 0 ? void 0 : _a.type) === index$1.PAYMENT_METHODS.PLAID;
|
|
1723
2369
|
}
|
|
1724
2370
|
async resolvePaymentMethod() {
|
|
1725
2371
|
if (!this.publicToken) {
|
|
@@ -1736,13 +2382,13 @@ const PlaidPaymentMethod = class {
|
|
|
1736
2382
|
// Returns a usable payment method token for checkout completion.
|
|
1737
2383
|
// Will perform the backend exchange if the token is not yet present in the store.
|
|
1738
2384
|
async getPaymentToken() {
|
|
1739
|
-
return
|
|
2385
|
+
return GooglePay$1.checkoutStore.paymentToken;
|
|
1740
2386
|
}
|
|
1741
2387
|
async handleSelectionClick() {
|
|
1742
2388
|
// Update local selection state
|
|
1743
2389
|
this.isSelected = true;
|
|
1744
2390
|
// Update store selection
|
|
1745
|
-
|
|
2391
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.PLAID };
|
|
1746
2392
|
// If there's an error, clear it and try to initialize again
|
|
1747
2393
|
if (this.error) {
|
|
1748
2394
|
this.clearError();
|
|
@@ -1758,7 +2404,7 @@ const PlaidPaymentMethod = class {
|
|
|
1758
2404
|
async setSelected(selected) {
|
|
1759
2405
|
this.isSelected = selected;
|
|
1760
2406
|
if (selected) {
|
|
1761
|
-
|
|
2407
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.PLAID };
|
|
1762
2408
|
}
|
|
1763
2409
|
}
|
|
1764
2410
|
// Method to check if component is currently selected
|
|
@@ -1807,7 +2453,7 @@ const PlaidPaymentMethod = class {
|
|
|
1807
2453
|
}
|
|
1808
2454
|
componentDidLoad() {
|
|
1809
2455
|
// Set up store change listener to keep component in sync
|
|
1810
|
-
const unsubscribe =
|
|
2456
|
+
const unsubscribe = GooglePay$1.onChange('selectedPaymentMethod', this.syncWithStore);
|
|
1811
2457
|
// Store unsubscribe function for cleanup
|
|
1812
2458
|
this.unsubscribeFromStore = unsubscribe;
|
|
1813
2459
|
}
|
|
@@ -1826,7 +2472,7 @@ const PlaidPaymentMethod = class {
|
|
|
1826
2472
|
}
|
|
1827
2473
|
render() {
|
|
1828
2474
|
// Only allow use if enabled in checkout settings
|
|
1829
|
-
if (
|
|
2475
|
+
if (GooglePay$1.checkoutStore.bankAccountVerification !== true) {
|
|
1830
2476
|
if (!this.hasLoggedDisabledWarning) {
|
|
1831
2477
|
// Log once per component lifecycle
|
|
1832
2478
|
console.warn('[PlaidPaymentMethod] bank_account_verification is disabled. Component will not render.');
|
|
@@ -1877,36 +2523,36 @@ const SavedPaymentMethods = class {
|
|
|
1877
2523
|
index.registerInstance(this, hostRef);
|
|
1878
2524
|
this.onPaymentMethodOptionClick = (paymentMethod) => (e) => {
|
|
1879
2525
|
e.preventDefault();
|
|
1880
|
-
|
|
1881
|
-
|
|
2526
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { id: paymentMethod.id, type: paymentMethod.type };
|
|
2527
|
+
GooglePay$1.checkoutStore.paymentToken = paymentMethod.id;
|
|
1882
2528
|
};
|
|
1883
2529
|
this.isAllowedPaymentMethod = (paymentMethodType) => {
|
|
1884
2530
|
const isCard = paymentMethodType === index$1.PAYMENT_METHODS.SAVED_CARD;
|
|
1885
2531
|
const isBankAccount = paymentMethodType === index$1.PAYMENT_METHODS.SAVED_BANK_ACCOUNT;
|
|
1886
|
-
if (isCard &&
|
|
2532
|
+
if (isCard && GooglePay$1.checkoutStore.disableCreditCard) {
|
|
1887
2533
|
return false;
|
|
1888
2534
|
}
|
|
1889
|
-
if (isBankAccount &&
|
|
2535
|
+
if (isBankAccount && GooglePay$1.checkoutStore.disableBankAccount) {
|
|
1890
2536
|
return false;
|
|
1891
2537
|
}
|
|
1892
2538
|
return true;
|
|
1893
2539
|
};
|
|
1894
2540
|
}
|
|
1895
2541
|
componentWillLoad() {
|
|
1896
|
-
if (!
|
|
2542
|
+
if (!GooglePay$1.checkoutStore.paymentMethods.length) {
|
|
1897
2543
|
console.warn('No saved payment methods available.');
|
|
1898
2544
|
}
|
|
1899
|
-
if (
|
|
2545
|
+
if (GooglePay$1.checkoutStore.disablePaymentMethodGroup) {
|
|
1900
2546
|
console.warn('Payment method group is disabled.');
|
|
1901
2547
|
}
|
|
1902
2548
|
}
|
|
1903
2549
|
render() {
|
|
1904
|
-
if (
|
|
2550
|
+
if (GooglePay$1.checkoutStore.disablePaymentMethodGroup) {
|
|
1905
2551
|
return null;
|
|
1906
2552
|
}
|
|
1907
|
-
return (index.h(styledHost.StyledHost, null, index.h("div", { class: "saved-payment-methods" },
|
|
2553
|
+
return (index.h(styledHost.StyledHost, null, index.h("div", { class: "saved-payment-methods" }, GooglePay$1.checkoutStore.paymentMethods.length ? GooglePay$1.checkoutStore.paymentMethods
|
|
1908
2554
|
.filter((paymentMethod) => this.isAllowedPaymentMethod(paymentMethod.type))
|
|
1909
|
-
.map((paymentMethod) => (index.h("div", { class: "radio-list-item p-3", part: parts.radioListItem, onClick: this.onPaymentMethodOptionClick(paymentMethod) }, index.h("form-control-radio", { name: "paymentMethodType", value: paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.id, checked:
|
|
2555
|
+
.map((paymentMethod) => (index.h("div", { class: "radio-list-item p-3", part: parts.radioListItem, onClick: this.onPaymentMethodOptionClick(paymentMethod) }, index.h("form-control-radio", { name: "paymentMethodType", value: paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.id, checked: GooglePay$1.checkoutStore.paymentToken === (paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.id), label: `${paymentMethodOptionUtils.CardBrandLabels[paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.brand] || ''} *${paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.acct_last_four}` })))) : null)));
|
|
1910
2556
|
}
|
|
1911
2557
|
};
|
|
1912
2558
|
|
|
@@ -1924,20 +2570,20 @@ const SezzlePaymentMethod = class {
|
|
|
1924
2570
|
this.initializeSezzleCheckout = () => {
|
|
1925
2571
|
let resolveSezzlePromise;
|
|
1926
2572
|
this.sezzlePromise = new Promise((resolve) => { resolveSezzlePromise = resolve; });
|
|
1927
|
-
const amount = Number(
|
|
2573
|
+
const amount = Number(GooglePay$1.checkoutStore.paymentAmount);
|
|
1928
2574
|
const Checkout = window.Checkout;
|
|
1929
2575
|
const checkout = new Checkout({
|
|
1930
2576
|
mode: 'popup',
|
|
1931
|
-
publicKey:
|
|
1932
|
-
apiMode:
|
|
1933
|
-
apiVersion:
|
|
2577
|
+
publicKey: GooglePay$1.checkoutStore.bnplProviderClientId,
|
|
2578
|
+
apiMode: GooglePay$1.checkoutStore.bnplProviderMode,
|
|
2579
|
+
apiVersion: GooglePay$1.checkoutStore.bnplProviderApiVersion,
|
|
1934
2580
|
});
|
|
1935
2581
|
checkout.sezzleButtonElement = this.sezzleButtonRef;
|
|
1936
2582
|
checkout.init({
|
|
1937
2583
|
onClick: function (event) {
|
|
1938
2584
|
event.preventDefault();
|
|
1939
2585
|
checkout.startCheckout({
|
|
1940
|
-
checkout_url:
|
|
2586
|
+
checkout_url: GooglePay$1.checkoutStore.bnplProviderCheckoutUrl,
|
|
1941
2587
|
});
|
|
1942
2588
|
},
|
|
1943
2589
|
onComplete: (event) => resolveSezzlePromise({ bnpl: event.data }),
|
|
@@ -1964,12 +2610,12 @@ const SezzlePaymentMethod = class {
|
|
|
1964
2610
|
return this.sezzlePromise;
|
|
1965
2611
|
}
|
|
1966
2612
|
async handleSelectionClick() {
|
|
1967
|
-
|
|
2613
|
+
GooglePay$1.checkoutStore.selectedPaymentMethod = { type: index$1.PAYMENT_METHODS.SEZZLE };
|
|
1968
2614
|
this.paymentMethodOptionSelected.emit(this.paymentMethodOptionId);
|
|
1969
2615
|
}
|
|
1970
2616
|
render() {
|
|
1971
2617
|
var _a, _b;
|
|
1972
|
-
if (!
|
|
2618
|
+
if (!GooglePay$1.checkoutStore.bnplEnabled) {
|
|
1973
2619
|
console.warn('justifi-sezzle-payment-method: BNPL is not enabled for this account.');
|
|
1974
2620
|
return null;
|
|
1975
2621
|
}
|
|
@@ -1979,6 +2625,7 @@ const SezzlePaymentMethod = class {
|
|
|
1979
2625
|
|
|
1980
2626
|
exports.justifi_apple_pay = ApplePay;
|
|
1981
2627
|
exports.justifi_checkout_summary = Summary;
|
|
2628
|
+
exports.justifi_google_pay = GooglePay;
|
|
1982
2629
|
exports.justifi_header = Header;
|
|
1983
2630
|
exports.justifi_modular_checkout = ModularCheckout;
|
|
1984
2631
|
exports.justifi_plaid_payment_method = PlaidPaymentMethod;
|