Changeset 3278936
- Timestamp:
- 04/22/2025 10:39:05 AM (12 months ago)
- Location:
- splitit-installment-payments
- Files:
-
- 610 added
- 14 edited
-
tags/4.2.8 (added)
-
tags/4.2.8/CHANGELOG.md (added)
-
tags/4.2.8/README.md (added)
-
tags/4.2.8/assets (added)
-
tags/4.2.8/assets/css (added)
-
tags/4.2.8/assets/css/admin.css (added)
-
tags/4.2.8/assets/css/adminOrder.css (added)
-
tags/4.2.8/assets/css/style.css (added)
-
tags/4.2.8/assets/fonts (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Bold.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Bold.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-BoldItalic.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-BoldItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-ExtraBold.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-ExtraBold.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-ExtraBoldItalic.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-ExtraBoldItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Italic.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Italic.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Light.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Light.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-LightItalic.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-LightItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Medium.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Medium.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-MediumItalic.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-MediumItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Regular.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-Regular.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-SemiBold.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-SemiBold.woff2 (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-SemiBoldItalic.woff (added)
-
tags/4.2.8/assets/fonts/MerriweatherSans/MerriweatherSans-SemiBoldItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Bold.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Bold.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-BoldItalic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-BoldItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraBold.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraBold.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraBoldItalic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraBoldItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraLight.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraLight.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraLightItalic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-ExtraLightItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Italic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Italic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Light.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Light.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-LightItalic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-LightItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Medium.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Medium.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-MediumItalic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-MediumItalic.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Regular.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-Regular.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-SemiBold.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-SemiBold.woff2 (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-SemiBoldItalic.woff (added)
-
tags/4.2.8/assets/fonts/RedditSans/RedditSans-SemiBoldItalic.woff2 (added)
-
tags/4.2.8/assets/img (added)
-
tags/4.2.8/assets/img/add-to-cart.svg (added)
-
tags/4.2.8/assets/img/amex.svg (added)
-
tags/4.2.8/assets/img/dinersclub.svg (added)
-
tags/4.2.8/assets/img/discover.svg (added)
-
tags/4.2.8/assets/img/icon-14-px-info.svg (added)
-
tags/4.2.8/assets/img/icon-16-px-status-empty.svg (added)
-
tags/4.2.8/assets/img/icon-16-px-status-full.svg (added)
-
tags/4.2.8/assets/img/icon-20-px-add-card.svg (added)
-
tags/4.2.8/assets/img/icon-20-px-arrow-down.svg (added)
-
tags/4.2.8/assets/img/icon-20-px-arrow-right.svg (added)
-
tags/4.2.8/assets/img/icon-20-px-plus.svg (added)
-
tags/4.2.8/assets/img/icon-20-px-triangle-down.svg (added)
-
tags/4.2.8/assets/img/icon-24-px-check-mark-not-checked.svg (added)
-
tags/4.2.8/assets/img/icon-24-px-check-mark.svg (added)
-
tags/4.2.8/assets/img/icon-24-px-dollar.svg (added)
-
tags/4.2.8/assets/img/icon-30-px-trash.svg (added)
-
tags/4.2.8/assets/img/jcb.svg (added)
-
tags/4.2.8/assets/img/loading-buffering.gif (added)
-
tags/4.2.8/assets/img/logo-49-px-splitit.svg (added)
-
tags/4.2.8/assets/img/logo-informative.svg (added)
-
tags/4.2.8/assets/img/logo-splitit.png (added)
-
tags/4.2.8/assets/img/logo_38px_splitit.svg (added)
-
tags/4.2.8/assets/img/logo_38px_splitit_old.svg (added)
-
tags/4.2.8/assets/img/maestro.svg (added)
-
tags/4.2.8/assets/img/mastercard.svg (added)
-
tags/4.2.8/assets/img/no-image-icon-23485.png (added)
-
tags/4.2.8/assets/img/shirt-icon.png (added)
-
tags/4.2.8/assets/img/visa.svg (added)
-
tags/4.2.8/assets/img/visaelectron.svg (added)
-
tags/4.2.8/assets/img/welcome-config.png (added)
-
tags/4.2.8/assets/img/welcome-config.svg (added)
-
tags/4.2.8/assets/img/welcome-connect.png (added)
-
tags/4.2.8/assets/img/welcome-connect.svg (added)
-
tags/4.2.8/assets/img/welcome-setup.png (added)
-
tags/4.2.8/assets/img/welcome-setup.svg (added)
-
tags/4.2.8/assets/js (added)
-
tags/4.2.8/assets/js/admin.js (added)
-
tags/4.2.8/assets/js/adminOrder.js (added)
-
tags/4.2.8/assets/js/multiple-select (added)
-
tags/4.2.8/assets/js/multiple-select/multiple-select.min.css (added)
-
tags/4.2.8/assets/js/multiple-select/multiple-select.min.js (added)
-
tags/4.2.8/assets/js/select2 (added)
-
tags/4.2.8/assets/js/select2/select2.min.css (added)
-
tags/4.2.8/assets/js/select2/select2.min.js (added)
-
tags/4.2.8/assets/js/splitit-blocks-um-cart.js (added)
-
tags/4.2.8/assets/js/splitit-blocks-um-checkout.js (added)
-
tags/4.2.8/assets/js/splitit-blocks.js (added)
-
tags/4.2.8/assets/js/splitit-flex-form.js (added)
-
tags/4.2.8/assets/js/splitit-payment.js (added)
-
tags/4.2.8/assets/validation (added)
-
tags/4.2.8/assets/validation/additional-methods.js (added)
-
tags/4.2.8/assets/validation/jquery.validate.js (added)
-
tags/4.2.8/assets/validation/localization (added)
-
tags/4.2.8/assets/validation/localization/messages_ar.js (added)
-
tags/4.2.8/assets/validation/localization/messages_az.js (added)
-
tags/4.2.8/assets/validation/localization/messages_bg.js (added)
-
tags/4.2.8/assets/validation/localization/messages_bn_BD.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ca.js (added)
-
tags/4.2.8/assets/validation/localization/messages_cs.js (added)
-
tags/4.2.8/assets/validation/localization/messages_da.js (added)
-
tags/4.2.8/assets/validation/localization/messages_de.js (added)
-
tags/4.2.8/assets/validation/localization/messages_el.js (added)
-
tags/4.2.8/assets/validation/localization/messages_es.js (added)
-
tags/4.2.8/assets/validation/localization/messages_es_AR.js (added)
-
tags/4.2.8/assets/validation/localization/messages_es_PE.js (added)
-
tags/4.2.8/assets/validation/localization/messages_et.js (added)
-
tags/4.2.8/assets/validation/localization/messages_eu.js (added)
-
tags/4.2.8/assets/validation/localization/messages_fa.js (added)
-
tags/4.2.8/assets/validation/localization/messages_fi.js (added)
-
tags/4.2.8/assets/validation/localization/messages_fr.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ge.js (added)
-
tags/4.2.8/assets/validation/localization/messages_gl.js (added)
-
tags/4.2.8/assets/validation/localization/messages_he.js (added)
-
tags/4.2.8/assets/validation/localization/messages_hr.js (added)
-
tags/4.2.8/assets/validation/localization/messages_hu.js (added)
-
tags/4.2.8/assets/validation/localization/messages_hy_AM.js (added)
-
tags/4.2.8/assets/validation/localization/messages_id.js (added)
-
tags/4.2.8/assets/validation/localization/messages_is.js (added)
-
tags/4.2.8/assets/validation/localization/messages_it.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ja.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ka.js (added)
-
tags/4.2.8/assets/validation/localization/messages_kk.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ko.js (added)
-
tags/4.2.8/assets/validation/localization/messages_lt.js (added)
-
tags/4.2.8/assets/validation/localization/messages_lv.js (added)
-
tags/4.2.8/assets/validation/localization/messages_mk.js (added)
-
tags/4.2.8/assets/validation/localization/messages_my.js (added)
-
tags/4.2.8/assets/validation/localization/messages_nl.js (added)
-
tags/4.2.8/assets/validation/localization/messages_no.js (added)
-
tags/4.2.8/assets/validation/localization/messages_pl.js (added)
-
tags/4.2.8/assets/validation/localization/messages_pt_BR.js (added)
-
tags/4.2.8/assets/validation/localization/messages_pt_PT.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ro.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ru.js (added)
-
tags/4.2.8/assets/validation/localization/messages_sd.js (added)
-
tags/4.2.8/assets/validation/localization/messages_si.js (added)
-
tags/4.2.8/assets/validation/localization/messages_sk.js (added)
-
tags/4.2.8/assets/validation/localization/messages_sl.js (added)
-
tags/4.2.8/assets/validation/localization/messages_sr.js (added)
-
tags/4.2.8/assets/validation/localization/messages_sr_lat.js (added)
-
tags/4.2.8/assets/validation/localization/messages_sv.js (added)
-
tags/4.2.8/assets/validation/localization/messages_th.js (added)
-
tags/4.2.8/assets/validation/localization/messages_tj.js (added)
-
tags/4.2.8/assets/validation/localization/messages_tr.js (added)
-
tags/4.2.8/assets/validation/localization/messages_uk.js (added)
-
tags/4.2.8/assets/validation/localization/messages_ur.js (added)
-
tags/4.2.8/assets/validation/localization/messages_vi.js (added)
-
tags/4.2.8/assets/validation/localization/messages_zh.js (added)
-
tags/4.2.8/assets/validation/localization/messages_zh_TW.js (added)
-
tags/4.2.8/assets/validation/localization/methods_de.js (added)
-
tags/4.2.8/assets/validation/localization/methods_es_CL.js (added)
-
tags/4.2.8/assets/validation/localization/methods_fi.js (added)
-
tags/4.2.8/assets/validation/localization/methods_it.js (added)
-
tags/4.2.8/assets/validation/localization/methods_nl.js (added)
-
tags/4.2.8/assets/validation/localization/methods_pt.js (added)
-
tags/4.2.8/changelog.txt (added)
-
tags/4.2.8/classes (added)
-
tags/4.2.8/classes/class-splitit-flexfields-payment-plugin-api.php (added)
-
tags/4.2.8/classes/class-splitit-flexfields-payment-plugin-blocks-support.php (added)
-
tags/4.2.8/classes/class-splitit-flexfields-payment-plugin-checkout.php (added)
-
tags/4.2.8/classes/class-splitit-flexfields-payment-plugin-log.php (added)
-
tags/4.2.8/classes/class-splitit-flexfields-payment-plugin-settings.php (added)
-
tags/4.2.8/classes/traits (added)
-
tags/4.2.8/classes/traits/splitit-flexfields-payment-plugin-upstream-messaging-trait.php (added)
-
tags/4.2.8/composer.json (added)
-
tags/4.2.8/composer.lock (added)
-
tags/4.2.8/cron (added)
-
tags/4.2.8/cron/check-refund-status.php (added)
-
tags/4.2.8/db (added)
-
tags/4.2.8/db/create-async-refund-log-table.php (added)
-
tags/4.2.8/db/create-log-table.php (added)
-
tags/4.2.8/db/create-order-data-with-ipn.php (added)
-
tags/4.2.8/db/create-transactions-tracking-table.php (added)
-
tags/4.2.8/readme.txt (added)
-
tags/4.2.8/splitIt-flexfields-payment-gateway.php (added)
-
tags/4.2.8/template (added)
-
tags/4.2.8/template/flex-field-index.php (added)
-
tags/4.2.8/uninstall.php (added)
-
tags/4.2.8/vendor (added)
-
tags/4.2.8/vendor/autoload.php (added)
-
tags/4.2.8/vendor/composer (added)
-
tags/4.2.8/vendor/composer/ClassLoader.php (added)
-
tags/4.2.8/vendor/composer/InstalledVersions.php (added)
-
tags/4.2.8/vendor/composer/LICENSE (added)
-
tags/4.2.8/vendor/composer/autoload_classmap.php (added)
-
tags/4.2.8/vendor/composer/autoload_files.php (added)
-
tags/4.2.8/vendor/composer/autoload_namespaces.php (added)
-
tags/4.2.8/vendor/composer/autoload_psr4.php (added)
-
tags/4.2.8/vendor/composer/autoload_real.php (added)
-
tags/4.2.8/vendor/composer/autoload_static.php (added)
-
tags/4.2.8/vendor/composer/installed.json (added)
-
tags/4.2.8/vendor/composer/installed.php (added)
-
tags/4.2.8/vendor/composer/platform_check.php (added)
-
tags/4.2.8/vendor/guzzlehttp (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/CHANGELOG.md (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/LICENSE (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/README.md (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/UPGRADING.md (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/composer.json (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/BodySummarizer.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Client.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/ClientInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/ClientTrait.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Cookie (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/HandlerStack.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/MessageFormatter.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Middleware.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Pool.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/RequestOptions.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/TransferStats.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/Utils.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/functions.php (added)
-
tags/4.2.8/vendor/guzzlehttp/guzzle/src/functions_include.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/CHANGELOG.md (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/LICENSE (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/README.md (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/composer.json (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/AggregateException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/CancellationException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/Coroutine.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/Create.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/Each.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/EachPromise.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/FulfilledPromise.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/Is.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/Promise.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/PromiseInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/PromisorInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/RejectedPromise.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/RejectionException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/TaskQueue.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/TaskQueueInterface.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/src/Utils.php (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin/php-cs-fixer (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin/php-cs-fixer/composer.json (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin/phpstan (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin/phpstan/composer.json (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin/psalm (added)
-
tags/4.2.8/vendor/guzzlehttp/promises/vendor-bin/psalm/composer.json (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7 (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/CHANGELOG.md (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/LICENSE (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/README.md (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/composer.json (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/AppendStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/BufferStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/CachingStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/DroppingStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Exception (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/FnStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Header.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/HttpFactory.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/InflateStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/LazyOpenStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/LimitStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Message.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/MessageTrait.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/MimeType.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/MultipartStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/NoSeekStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/PumpStream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Query.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Request.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Response.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Rfc7230.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/ServerRequest.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Stream.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/StreamWrapper.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/UploadedFile.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Uri.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/UriComparator.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/UriNormalizer.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/UriResolver.php (added)
-
tags/4.2.8/vendor/guzzlehttp/psr7/src/Utils.php (added)
-
tags/4.2.8/vendor/konfig (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.gitignore (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.konfig (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.konfig/generate-id.txt (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.konfigignore (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.php-cs-fixer.dist.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.vscode (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/.vscode/launch.json (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/README.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/composer.json (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Api (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Api/InstallmentPlanApi.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/AddressData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/AddressDataModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/AuthorizationModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/BluesnapVaultedShopperToken.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/CardBrand.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/CardData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/CardType.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/CheckInstallmentsEligibilityRequest.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/Error.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ErrorExtended.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ErrorExtendedAllOf.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/EventsEndpointsModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/FailedResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/GatewayTokenData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/GwAuthorizationStatus.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/IdentifierContract.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InitiatePlanResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InitiateRedirectionEndpointsModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/Installment.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanCancelResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanCreateRequest.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanCreateResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanGetResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanInitiateRequest.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanRefundRequest.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanRefundResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanSearchResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanUpdateRequest.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanUpdateRequestByIdentifier.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanUpdateRequestByIdentifierAllOf.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentPlanUpdateResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentStatus.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/InstallmentsEligibilityResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/LinksData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/LinksModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/MockerShopperToken.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PaymentMethodModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PaymentMethodType.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PaymentPlanOptionModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PlanData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PlanDataModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PlanErrorResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PlanErrorResponseAllOf.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PlanStatus.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ProcessingData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ProcessingData2.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/PurchaseMethod.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/RedirectionEndpointsModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/RefundModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/RefundStatus.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/RefundStrategy.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/RefundSummary.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/SearchInstallmentPlanResponseItem.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ShippingStatus.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ShippingStatus2.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ShopperData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/TestModes.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ThreeDSData.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ThreeDSData2.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/ThreeDsRedirectDataV3.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/UpdateOrderRequest.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/UxSettingsModel.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/docs/Model/VerifyAuthorizationResponse.md (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Api (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Api/InstallmentPlanApi.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/ApiException.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Client.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Configuration.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/CustomApi.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/HeaderSelector.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/AddressData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/AddressDataModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/AuthorizationModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/BluesnapVaultedShopperToken.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/CardBrand.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/CardData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/CardType.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/CheckInstallmentsEligibilityRequest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/Error.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ErrorExtended.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ErrorExtendedAllOf.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/EventsEndpointsModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/FailedResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/GatewayTokenData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/GwAuthorizationStatus.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/IdentifierContract.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InitiatePlanResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InitiateRedirectionEndpointsModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/Installment.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanCancelResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanCreateRequest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanCreateResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanGetResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanInitiateRequest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanRefundRequest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanRefundResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanSearchResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanUpdateRequest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanUpdateRequestByIdentifier.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanUpdateRequestByIdentifierAllOf.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentPlanUpdateResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentStatus.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/InstallmentsEligibilityResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/LinksData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/LinksModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/MockerShopperToken.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ModelInterface.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PaymentMethodModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PaymentMethodType.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PaymentPlanOptionModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PlanData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PlanDataModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PlanErrorResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PlanErrorResponseAllOf.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PlanStatus.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ProcessingData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ProcessingData2.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/PurchaseMethod.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/RedirectionEndpointsModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/RefundModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/RefundStatus.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/RefundStrategy.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/RefundSummary.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/SearchInstallmentPlanResponseItem.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ShippingStatus.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ShippingStatus2.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ShopperData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/TestModes.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ThreeDSData.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ThreeDSData2.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/ThreeDsRedirectDataV3.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/UpdateOrderRequest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/UxSettingsModel.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/Model/VerifyAuthorizationResponse.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/ObjectSerializer.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/lib/RequestOptions.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/phpunit.xml.dist (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Api (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Api/InstallmentPlanApiTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/AddressDataModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/AddressDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/AuthorizationModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/BluesnapVaultedShopperTokenTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/CardBrandTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/CardDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/CardTypeTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/CheckInstallmentsEligibilityRequestTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ErrorExtendedAllOfTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ErrorExtendedTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ErrorTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/EventsEndpointsModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/FailedResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/GatewayTokenDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/GwAuthorizationStatusTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/IdentifierContractTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InitiatePlanResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InitiateRedirectionEndpointsModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanCancelResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanCreateRequestTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanCreateResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanGetResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanInitiateRequestTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanRefundRequestTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanRefundResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanSearchResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanUpdateRequestByIdentifierAllOfTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanUpdateRequestByIdentifierTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanUpdateRequestTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentPlanUpdateResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentStatusTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/InstallmentsEligibilityResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/LinksDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/LinksModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/MockerShopperTokenTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PaymentMethodModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PaymentMethodTypeTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PaymentPlanOptionModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PlanDataModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PlanDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PlanErrorResponseAllOfTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PlanErrorResponseTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PlanStatusTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ProcessingData2Test.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ProcessingDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/PurchaseMethodTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/RedirectionEndpointsModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/RefundModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/RefundStatusTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/RefundStrategyTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/RefundSummaryTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/SearchInstallmentPlanResponseItemTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ShippingStatus2Test.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ShippingStatusTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ShopperDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/TestModesTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ThreeDSData2Test.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ThreeDSDataTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/ThreeDsRedirectDataV3Test.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/UpdateOrderRequestTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/UxSettingsModelTest.php (added)
-
tags/4.2.8/vendor/konfig/splitit-web-php-sdk/test/Model/VerifyAuthorizationResponseTest.php (added)
-
tags/4.2.8/vendor/psr (added)
-
tags/4.2.8/vendor/psr/http-client (added)
-
tags/4.2.8/vendor/psr/http-client/CHANGELOG.md (added)
-
tags/4.2.8/vendor/psr/http-client/LICENSE (added)
-
tags/4.2.8/vendor/psr/http-client/README.md (added)
-
tags/4.2.8/vendor/psr/http-client/composer.json (added)
-
tags/4.2.8/vendor/psr/http-client/src (added)
-
tags/4.2.8/vendor/psr/http-client/src/ClientExceptionInterface.php (added)
-
tags/4.2.8/vendor/psr/http-client/src/ClientInterface.php (added)
-
tags/4.2.8/vendor/psr/http-client/src/NetworkExceptionInterface.php (added)
-
tags/4.2.8/vendor/psr/http-client/src/RequestExceptionInterface.php (added)
-
tags/4.2.8/vendor/psr/http-factory (added)
-
tags/4.2.8/vendor/psr/http-factory/LICENSE (added)
-
tags/4.2.8/vendor/psr/http-factory/README.md (added)
-
tags/4.2.8/vendor/psr/http-factory/composer.json (added)
-
tags/4.2.8/vendor/psr/http-factory/src (added)
-
tags/4.2.8/vendor/psr/http-factory/src/RequestFactoryInterface.php (added)
-
tags/4.2.8/vendor/psr/http-factory/src/ResponseFactoryInterface.php (added)
-
tags/4.2.8/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php (added)
-
tags/4.2.8/vendor/psr/http-factory/src/StreamFactoryInterface.php (added)
-
tags/4.2.8/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php (added)
-
tags/4.2.8/vendor/psr/http-factory/src/UriFactoryInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message (added)
-
tags/4.2.8/vendor/psr/http-message/CHANGELOG.md (added)
-
tags/4.2.8/vendor/psr/http-message/LICENSE (added)
-
tags/4.2.8/vendor/psr/http-message/README.md (added)
-
tags/4.2.8/vendor/psr/http-message/composer.json (added)
-
tags/4.2.8/vendor/psr/http-message/docs (added)
-
tags/4.2.8/vendor/psr/http-message/docs/PSR7-Interfaces.md (added)
-
tags/4.2.8/vendor/psr/http-message/docs/PSR7-Usage.md (added)
-
tags/4.2.8/vendor/psr/http-message/src (added)
-
tags/4.2.8/vendor/psr/http-message/src/MessageInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message/src/RequestInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message/src/ResponseInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message/src/ServerRequestInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message/src/StreamInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message/src/UploadedFileInterface.php (added)
-
tags/4.2.8/vendor/psr/http-message/src/UriInterface.php (added)
-
tags/4.2.8/vendor/ralouphie (added)
-
tags/4.2.8/vendor/ralouphie/getallheaders (added)
-
tags/4.2.8/vendor/ralouphie/getallheaders/LICENSE (added)
-
tags/4.2.8/vendor/ralouphie/getallheaders/README.md (added)
-
tags/4.2.8/vendor/ralouphie/getallheaders/composer.json (added)
-
tags/4.2.8/vendor/ralouphie/getallheaders/src (added)
-
tags/4.2.8/vendor/ralouphie/getallheaders/src/getallheaders.php (added)
-
tags/4.2.8/vendor/symfony (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts/.gitignore (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts/CHANGELOG.md (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts/LICENSE (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts/README.md (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts/composer.json (added)
-
tags/4.2.8/vendor/symfony/deprecation-contracts/function.php (added)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/assets/css/admin.css (modified) (2 diffs)
-
trunk/assets/js/admin.js (modified) (4 diffs)
-
trunk/assets/js/splitit-blocks-um-cart.js (modified) (4 diffs)
-
trunk/assets/js/splitit-blocks-um-checkout.js (modified) (4 diffs)
-
trunk/assets/js/splitit-flex-form.js (modified) (7 diffs)
-
trunk/assets/js/splitit-payment.js (modified) (4 diffs)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/classes/class-splitit-flexfields-payment-plugin-checkout.php (modified) (2 diffs)
-
trunk/classes/class-splitit-flexfields-payment-plugin-settings.php (modified) (4 diffs)
-
trunk/classes/traits/splitit-flexfields-payment-plugin-upstream-messaging-trait.php (modified) (22 diffs)
-
trunk/cron/check-refund-status.php (modified) (5 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/splitIt-flexfields-payment-gateway.php (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
splitit-installment-payments/trunk/CHANGELOG.md
r3243228 r3278936 4 4 - 5 5 6 ### 4.2.7 6 ### 4.2.8 7 * Added the ability to configure the number of installments for On-Site Messaging 8 * Added the ability to customize the desired order status after creation 9 * Added compatibility with Phone Validator for WooCommerce plugin 10 * Added compatibility with Checkout Field Editor for WooCommerce plugin 11 * Code improvements and bug fixes 12 * Tested compatibility with WordPress version 6.8 and WooCommerce version 9.8.1 13 14 * ### 4.2.7 7 15 * Code improvements and bug fixes 8 16 * Tested compatibility with WordPress version 6.7.2 and WooCommerce version 9.6.2 -
splitit-installment-payments/trunk/assets/css/admin.css
r3243228 r3278936 1788 1788 color: #fff; 1789 1789 } 1790 .select2-container--default .select2-selection--multiple .select2-selection__rendered li {1790 #main_ic_container .select2-container--default .select2-selection--multiple .select2-selection__rendered li { 1791 1791 margin: 6px 3px 0 0 !important; 1792 1792 text-align: center; 1793 line-height: 2 8px;1794 } 1795 .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {1793 line-height: 27px; 1794 } 1795 #main_ic_container .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { 1796 1796 color: #fff !important; 1797 1797 cursor: pointer; 1798 1798 display: inline-block; 1799 1799 font-weight: 700; 1800 font-size: 1 6px;1800 font-size: 12px; 1801 1801 margin-right: 8px !important; 1802 1802 float: right; 1803 } 1804 .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { 1803 left: 31px !important; 1804 top: -1px !important; 1805 } 1806 #main_ic_container .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { 1805 1807 color: #ddd !important; 1806 1808 } … … 2065 2067 font-weight: 400; 2066 2068 } 2069 2070 .default-installments { 2071 width: 120px !important; 2072 height: 46px !important; 2073 } 2074 2075 .main-section-enabled-visa-main, 2076 .main-default-installments-number-main { 2077 justify-content: space-between; 2078 align-items: center; 2079 } -
splitit-installment-payments/trunk/assets/js/admin.js
r3212118 r3278936 1394 1394 } 1395 1395 1396 let defaultInstallmentsNumber = 4; 1397 let defaultInstallmentsInput = $( '#woocommerce_splitit_default_installments_number' ); 1398 if (defaultInstallmentsInput.length) { 1399 let defaultInstallments = defaultInstallmentsInput.val(); 1400 if (defaultInstallments && '' !== defaultInstallments) { 1401 defaultInstallmentsNumber = defaultInstallments; 1402 } 1403 } 1404 1396 1405 $.each( 1397 1406 options, … … 1403 1412 let value = Object.values( option )[0] 1404 1413 if ('position' === key) { 1405 value = 'top' === value ? 'bottom' : 'top';1414 value = 'top' === value ? 'bottom' : 'top'; 1406 1415 } else if ('hide_learn_more' === key && 1 == value) { 1407 1416 value = true … … 1412 1421 if (('hide_learn_more' === key || 'hide_icon' === key) && 1 == val) { 1413 1422 val = true 1423 } else if ('installments' === key) { 1424 if (0 == val || '' === val) { 1425 val = defaultInstallmentsNumber; 1426 } 1414 1427 } 1415 1428 customOptions += key + '="' + val + '" '; … … 1420 1433 1421 1434 if ('logo' === type || 'one_liner' === type) { 1422 customOptions += 'amount="1000" installments="4"'; 1435 customOptions += 'amount="1000"'; 1436 if ( ! customOptions.includes( 'installments=' ) ) { 1437 customOptions += `installments="${defaultInstallmentsNumber}"`; 1438 } 1423 1439 } 1424 1440 -
splitit-installment-payments/trunk/assets/js/splitit-blocks-um-cart.js
r3212118 r3278936 24 24 let tagName = ''; 25 25 let price = getPrice(); 26 let installments = getInstallmentByPrice( price, splititSettings );26 let installments = getInstallmentByPrice( price, splititSettings, umSettings ); 27 27 28 28 if (umSettings.strip && 1 == umSettings.strip.enable_strip) { … … 170 170 let previousTotal = previousTotals ? previousTotals.total_price / 100 : null; 171 171 172 const unsubscribe = subscribe(172 const unsubscribe = subscribe( 173 173 () => { 174 const currentTotals = select( 'wc/store/cart' ).getCartTotals();175 const currentTotal = currentTotals ? currentTotals.total_price / 100 : null;176 if (currentTotal !== previousTotal) {177 previousTotal = currentTotal;178 installments = getInstallmentByPrice( currentTotal, splitit_settings );179 if ( ! installments) {180 $( 'spt-floating-logo, spt-one-liner' ).css( 'display', 'none' );181 } else {182 $( 'spt-floating-logo, spt-one-liner' )183 .css( 'display', '' )184 .attr( 'amount', currentTotal )185 .attr( 'installments', installments );186 }187 188 }174 const currentTotals = select( 'wc/store/cart' ).getCartTotals(); 175 const currentTotal = currentTotals ? currentTotals.total_price / 100 : null; 176 if (currentTotal !== previousTotal) { 177 previousTotal = currentTotal; 178 installments = getInstallmentByPrice( currentTotal, splitit_settings, umSettings ); 179 if ( ! installments) { 180 $( 'spt-floating-logo, spt-one-liner' ).css( 'display', 'none' ); 181 } else { 182 $( 'spt-floating-logo, spt-one-liner' ) 183 .css( 'display', '' ) 184 .attr( 'amount', currentTotal ) 185 .attr( 'installments', installments ); 186 } 187 188 } 189 189 } 190 190 ); … … 201 201 } 202 202 203 function getInstallmentByPrice(price, settings ) {203 function getInstallmentByPrice(price, settings, pageConfig) { 204 204 if ('undefined' !== typeof settings.splitit_upstream_default_installments && '' !== settings.splitit_upstream_default_installments) { 205 205 return parseInt( settings.splitit_upstream_default_installments ); 206 } 207 208 let customInstallments = checkCustomInstallmentsSettings( pageConfig, settings ); 209 if (customInstallments !== null) { 210 return customInstallments; 206 211 } 207 212 … … 219 224 } 220 225 221 return 3; 226 return 4; 227 } 228 229 function checkCustomInstallmentsSettings(pageConfig, splititSettings) { 230 let umType = ''; 231 232 if (pageConfig.strip && pageConfig.strip.enable_strip == 1) { 233 umType = 'strip'; 234 } else if (pageConfig.banner && pageConfig.banner.enable_banner == 1) { 235 umType = 'banner'; 236 } else if (pageConfig.logo && pageConfig.logo.enable_logo == 1) { 237 umType = 'logo'; 238 } else if (pageConfig.one_liner && pageConfig.one_liner.enable_one_liner == 1) { 239 umType = 'one_liner'; 240 } 241 242 let customInstallments = pageConfig[umType] && pageConfig[umType].installments && 243 pageConfig[umType].installments.trim() !== '' 244 ? parseInt( pageConfig[umType].installments, 10 ) 245 : null; 246 247 let defaultInstallments = splititSettings.default_installments_number && 248 splititSettings.default_installments_number.trim() !== '' 249 ? parseInt( splititSettings.default_installments_number, 10 ) 250 : null; 251 252 return customInstallments !== null ? customInstallments : defaultInstallments; 222 253 } 223 254 -
splitit-installment-payments/trunk/assets/js/splitit-blocks-um-checkout.js
r3212118 r3278936 24 24 let tagName = ''; 25 25 let price = getPrice(); 26 let installments = getInstallmentByPrice( price, splititSettings );26 let installments = getInstallmentByPrice( price, splititSettings, umSettings ); 27 27 28 28 if (umSettings.strip && 1 == umSettings.strip.enable_strip) { … … 170 170 let previousTotal = previousTotals ? previousTotals.total_price / 100 : null; 171 171 172 const unsubscribe = subscribe(172 const unsubscribe = subscribe( 173 173 () => { 174 const currentTotals = select( 'wc/store/cart' ).getCartTotals();175 const currentTotal = currentTotals ? currentTotals.total_price / 100 : null;176 if (currentTotal !== previousTotal) {177 previousTotal = currentTotal;178 installments = getInstallmentByPrice( currentTotal, splitit_settings );179 if ( ! installments) {180 $( 'spt-floating-logo, spt-one-liner' ).css( 'display', 'none' );181 } else {182 $( 'spt-floating-logo, spt-one-liner' )183 .css( 'display', '' )184 .attr( 'amount', currentTotal )185 .attr( 'installments', installments );186 }187 188 }174 const currentTotals = select( 'wc/store/cart' ).getCartTotals(); 175 const currentTotal = currentTotals ? currentTotals.total_price / 100 : null; 176 if (currentTotal !== previousTotal) { 177 previousTotal = currentTotal; 178 installments = getInstallmentByPrice( currentTotal, splitit_settings, umSettings ); 179 if ( ! installments) { 180 $( 'spt-floating-logo, spt-one-liner' ).css( 'display', 'none' ); 181 } else { 182 $( 'spt-floating-logo, spt-one-liner' ) 183 .css( 'display', '' ) 184 .attr( 'amount', currentTotal ) 185 .attr( 'installments', installments ); 186 } 187 188 } 189 189 } 190 190 ); … … 201 201 } 202 202 203 function getInstallmentByPrice(price, settings ) {203 function getInstallmentByPrice(price, settings, pageConfig) { 204 204 if ('undefined' !== typeof settings.splitit_upstream_default_installments && '' !== settings.splitit_upstream_default_installments) { 205 205 return parseInt( settings.splitit_upstream_default_installments ); 206 } 207 208 let customInstallments = checkCustomInstallmentsSettings( pageConfig, settings ); 209 if (customInstallments !== null) { 210 return customInstallments; 206 211 } 207 212 … … 219 224 } 220 225 221 return 3; 226 return 4; 227 } 228 229 function checkCustomInstallmentsSettings(pageConfig, splititSettings) { 230 let umType = ''; 231 232 if (pageConfig.strip && pageConfig.strip.enable_strip == 1) { 233 umType = 'strip'; 234 } else if (pageConfig.banner && pageConfig.banner.enable_banner == 1) { 235 umType = 'banner'; 236 } else if (pageConfig.logo && pageConfig.logo.enable_logo == 1) { 237 umType = 'logo'; 238 } else if (pageConfig.one_liner && pageConfig.one_liner.enable_one_liner == 1) { 239 umType = 'one_liner'; 240 } 241 242 let customInstallments = pageConfig[umType] && pageConfig[umType].installments && 243 pageConfig[umType].installments.trim() !== '' 244 ? parseInt( pageConfig[umType].installments, 10 ) 245 : null; 246 247 let defaultInstallments = splititSettings.default_installments_number && 248 splititSettings.default_installments_number.trim() !== '' 249 ? parseInt( splititSettings.default_installments_number, 10 ) 250 : null; 251 252 return customInstallments !== null ? customInstallments : defaultInstallments; 222 253 } 223 254 -
splitit-installment-payments/trunk/assets/js/splitit-flex-form.js
r3237941 r3278936 32 32 33 33 window.removeLoader = function () { 34 // setTimeout( () => $( '#order_review' ).unblock(), 1000 );35 34 setTimeout( 36 35 function () { … … 57 56 58 57 window.scrollTopToBlock = function ( block ) { 59 $( 'html, body' ).animate( 60 { 61 scrollTop: ( $( block ).offset().top - 100) 62 }, 63 1000 64 ); 58 var $block = $( block ); 59 60 if ( $block.length ) { 61 $('html, body').animate( 62 { 63 scrollTop: ( $block.offset().top - 100 ) 64 }, 65 1000 66 ); 67 } else { 68 console.warn('scrollTopToBlock: Element not found', block); 69 } 65 70 } 66 71 67 72 window.getBillingAddressValue = function (code) { 68 // In some cases city or state is optional, but it required in Splitit 73 // In some cases city or state is optional, but it required in Splitit. 69 74 let value = $( '[name="' + code + '"]' ).val(); 70 75 if ( ! value) { … … 84 89 85 90 window.setError = function (text) { 86 var form = $( 'form. woocommerce-checkout' );91 var form = $( 'form.checkout' ); 87 92 var errMessage = "<li>" + text + "</li>"; 88 93 addWoocommerceErrorMessage( errMessage, form ); 89 scrollTopToBlock( 'form. woocommerce-checkout' );94 scrollTopToBlock( 'form.checkout' ); 90 95 hideSplititLoader(); 96 } 97 98 // Compatibility with Phone Validator for WooCommerce plugin. 99 window.checkPhoneNumber = function () { 100 var isValidBillingPhone = true; 101 if ( 'undefined' != typeof intlTelInputGlobals ) { 102 var billingPhoneInput = document.querySelector( "#billing_phone" ); 103 if (billingPhoneInput) { 104 var iti = Object.values( window.intlTelInputGlobals.instances ).find( i => i.a === billingPhoneInput ); 105 if ('undefined' != typeof iti) { 106 isValidBillingPhone = iti.isValidNumber(); 107 } 108 } 109 } 110 return isValidBillingPhone; 91 111 } 92 112 … … 149 169 $( sender ).attr( 'disabled', true ); 150 170 151 // Check if flex fields has errors 171 // Check if flex fields has errors. 152 172 if ( ! flexFieldsInstance.isValid() ) { 153 173 flexFieldsInstance.triggerValidation() … … 171 191 } 172 192 173 if ( 'undefined' == typeof grecaptcha || ( 'undefined' != typeof grecaptcha && "" != grecaptcha.getResponse() ) ) { 174 if ($( 'input[name="cf-turnstile-response"]' ).length) { 175 if ('' != $( 'input[name="cf-turnstile-response"]' ).val()) { 193 if (window.location.href.includes( "hobfurniture" ) || window.location.href.includes( "bioflexwave" )) { 194 flexFieldsInstance.pay(); 195 } else { 196 if ( 'undefined' == typeof grecaptcha || ( 'undefined' != typeof grecaptcha && "" != grecaptcha.getResponse() ) ) { 197 if ($( 'input[name="cf-turnstile-response"]' ).length) { 198 if ('' != $( 'input[name="cf-turnstile-response"]' ).val()) { 199 if (checkPhoneNumber()) { 200 flexFieldsInstance.pay(); 201 } else { 202 setError( 'Phone is not a valid phone number.' ); 203 } 204 } else { 205 setError( 'Verify you are human is a required field.' ); 206 } 207 } else { 208 if (checkPhoneNumber()) { 176 209 flexFieldsInstance.pay(); 177 } else { 178 setError( 'Verify you are human is a required field.' ); 210 } else { 211 setError( 'Phone is not a valid phone number.' ); 212 } 179 213 } 180 214 } else { 181 flexFieldsInstance.pay();215 setError( 'I`m not a robot is a required field.' ); 182 216 } 183 } else {184 setError( 'I`m not a robot is a required field.' );185 217 } 186 218 } 187 219 } else { 188 let $form = $( 'form. woocommerce-checkout' );220 let $form = $( 'form.checkout' ); 189 221 let errorMessage = data.messages ? data.messages : data; 190 222 … … 192 224 193 225 addWoocommerceErrorMessage( errorMessage, $form ); 194 scrollTopToBlock( 'form. woocommerce-checkout' );226 scrollTopToBlock( 'form.checkout' ); 195 227 hideSplititLoader(); 196 228 } 197 229 }, 198 230 error: function ( error ) { 199 scrollTopToBlock( 'form. woocommerce-checkout' );231 scrollTopToBlock( 'form.checkout' ); 200 232 hideSplititLoader(); 201 233 } … … 207 239 function () { 208 240 if ( 'undefined' === typeof flexFieldsInstance ) { 209 firstInitFlexFieldsInstance(); 241 function waitForFlexFormContainer(callback) { 242 let observer = new MutationObserver( 243 (mutations, obs) => { 244 if (document.getElementById( "flex-form" )) { 245 obs.disconnect(); 246 callback(); 247 } 248 } 249 ); 250 251 observer.observe( 252 document.body, 253 { 254 childList: true, 255 subtree: true 256 } 257 ); 258 } 259 waitForFlexFormContainer( 260 () => { 261 console.log( "container #flex-form found, init Splitit" ); 262 firstInitFlexFieldsInstance(); 263 } 264 ); 210 265 } else { 211 266 $( document ).trigger( 'update_checkout' ); -
splitit-installment-payments/trunk/assets/js/splitit-payment.js
r3212118 r3278936 93 93 }; 94 94 95 window.scrollTopToBlockBlocks = function ( block ) { 96 $( 'html, body' ).animate( 97 { 98 scrollTop: ( $( block ).offset().top - 100) 99 }, 100 1000 101 ); 95 window.scrollTopToBlock = function ( block ) { 96 var $block = $( block ); 97 98 if ( $block.length ) { 99 $('html, body').animate( 100 { 101 scrollTop: ( $block.offset().top - 100 ) 102 }, 103 1000 104 ); 105 } else { 106 console.warn('scrollTopToBlock: Element not found', block); 107 } 102 108 } 103 109 … … 126 132 scrollTopToBlockBlocks( 'form.wc-block-checkout__form' ); 127 133 hideSplititLoaderBlocks(); 134 } 135 136 window.checkPhoneNumberBlocks = function () { 137 var isValidBillingPhone = true; 138 if ( 'undefined' != typeof intlTelInputGlobals ) { 139 var billingPhoneInput = document.querySelector( "#billing_phone" ); 140 if (billingPhoneInput) { 141 var iti = Object.values( window.intlTelInputGlobals.instances ).find( i => i.a === billingPhoneInput ); 142 if ('undefined' != typeof iti) { 143 isValidBillingPhone = iti.isValidNumber(); 144 } 145 } 146 } 147 return isValidBillingPhone; 128 148 } 129 149 … … 205 225 $( '.wc-block-components-checkout-place-order-button' ).attr( 'disabled', true ); 206 226 207 // Check if flex fields has errors 227 // Check if flex fields has errors. 208 228 if ( ! flexFieldsInstance.isValid() ) { 209 229 flexFieldsInstance.triggerValidation() 210 console.log( 'flexFieldsInstance: ', 'flex form is not valid');230 console.log( 'flexFieldsInstance: ', 'flex form is not valid' ); 211 231 hideSplititLoaderBlocks(); 212 232 localStorage.setItem( 'flex_fields_error', 'Please check your input' ); … … 214 234 return false; 215 235 } else { 216 if ( 'undefined' == typeof grecaptcha || ( 'undefined' != typeof grecaptcha && "" != grecaptcha.getResponse() ) ) { 217 if ($( 'input[name="cf-turnstile-response"]' ).length) { 218 if ('' != $( 'input[name="cf-turnstile-response"]' ).val()) { 219 flexFieldsInstance.pay(); 236 if (window.location.href.includes( "hobfurniture" ) || window.location.href.includes( "bioflexwave" )) { 237 flexFieldsInstance.pay(); 238 } else { 239 if ( 'undefined' == typeof grecaptcha || ( 'undefined' != typeof grecaptcha && "" != grecaptcha.getResponse() ) ) { 240 if ($( 'input[name="cf-turnstile-response"]' ).length) { 241 if ('' != $( 'input[name="cf-turnstile-response"]' ).val()) { 242 if (checkPhoneNumberBlocks()) { 243 flexFieldsInstance.pay(); 244 } else { 245 setError( 'Phone is not a valid phone number.' ); 246 } 247 } else { 248 setError( 'Verify you are human is a required field.' ); 249 } 220 250 } else { 221 setErrorBlocks( 'Verify you are human is a required field.' ); 251 if (checkPhoneNumberBlocks()) { 252 flexFieldsInstance.pay(); 253 } else { 254 setError( 'Phone is not a valid phone number.' ); 255 } 222 256 } 223 257 } else { 224 flexFieldsInstance.pay();258 setError( 'I`m not a robot is a required field.' ); 225 259 } 226 } else {227 setErrorBlocks( 'I`m not a robot is a required field.' );228 260 } 229 261 } -
splitit-installment-payments/trunk/changelog.txt
r3243228 r3278936 1 1 *** Splitit Changelog *** 2 3 2025-04-22 - version 4.2.8 4 * Added the ability to configure the number of installments for On-Site Messaging 5 * Added the ability to customize the desired order status after creation 6 * Added compatibility with Phone Validator for WooCommerce plugin 7 * Added compatibility with Checkout Field Editor for WooCommerce plugin 8 * Code improvements and bug fixes 9 * Tested compatibility with WordPress version 6.8 and WooCommerce version 9.8.1 2 10 3 11 2025-02-19 - version 4.2.7 -
splitit-installment-payments/trunk/classes/class-splitit-flexfields-payment-plugin-checkout.php
r3237941 r3278936 15 15 */ 16 16 class SplitIt_FlexFields_Payment_Plugin_Checkout { 17 18 /** 19 * @param array $settings Settings from DB 20 */ 21 public function __construct( $settings ) { 22 $this->settings = $settings; 23 } 24 17 25 /** 18 26 * Create checkout … … 27 35 $cart_info = json_decode( $order_info->wc_cart, true ); 28 36 37 $create_checkout_log_data = array( 38 'user_id' => null, 39 'method' => __( 'create_checkout() Splitit', 'splitit-installment-payments' ), 40 ); 41 42 $log_message = "\nOrder details:\n"; 43 $log_message .= 'IPN: ' . $order_info->ipn ?? 'not found' . "\n"; 44 45 try { 46 if ( $cart_info ) { 47 $cart_contents = $cart_info['cart_contents']; 48 49 foreach ( $cart_contents as $item ) { 50 $real_product_id = ! empty( $item['variation_id'] ) ? $item['variation_id'] : $item['product_id']; 51 $product = wc_get_product( $real_product_id ); 52 53 if ( $product ) { 54 $log_message .= "\nProduct Name: " . $product->get_name() . "\n"; 55 $log_message .= 'Product SKU: ' . $product->get_sku() . "\n"; 56 $log_message .= 'Price: ' . $item['line_total'] . "\n"; 57 $log_message .= 'Quantity: ' . $item['quantity'] . "\n"; 58 $log_message .= 'Amount without tax: ' . $item['line_subtotal'] . "\n"; 59 $log_message .= 'Tax: ' . $item['line_tax'] . "\n"; 60 $log_message .= 'Total amount: ' . ( $item['line_total'] + $item['line_tax'] ) . "\n"; 61 $log_message .= "-------------\n"; 62 } 63 } 64 } 65 } catch ( Exception $e ) { 66 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $create_checkout_log_data, 'create_checkout() - $order_info error: ' . $e->getMessage(), 'error' ); 67 } 68 69 try { 70 if ( $user_data ) { 71 $log_message .= "User details:\n"; 72 $log_message .= 'Name: ' . ( $user_data['billing_first_name'] ?? 'no' ) . "\n"; 73 $log_message .= 'Last Name: ' . ( $user_data['billing_last_name'] ?? 'no' ) . "\n"; 74 $log_message .= 'Email: ' . ( $user_data['billing_email'] ?? 'no' ) . "\n"; 75 $log_message .= 'Phone: ' . ( $user_data['billing_phone'] ?? 'no' ) . "\n"; 76 $log_message .= 'Country: ' . ( $user_data['billing_country'] ?? 'no' ) . "\n"; 77 $log_message .= 'Address: ' . ( $user_data['billing_address_1'] ?? 'no' ) . "\n"; 78 $log_message .= 'City: ' . ( $user_data['billing_city'] ?? 'no' ) . "\n"; 79 $log_message .= 'State: ' . ( $user_data['billing_state'] ?? 'no' ) . "\n"; 80 $log_message .= 'Post code: ' . ( $user_data['billing_postcode'] ?? 'no' ) . "\n"; 81 $log_message .= 'Payment method: ' . ( $user_data['payment_method'] ?? 'no' ) . "\n"; 82 $log_message .= "---------------------------\n"; 83 } 84 } catch ( Exception $e ) { 85 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $create_checkout_log_data, 'create_checkout() - $user_info error: ' . $e->getMessage(), 'error' ); 86 } 87 88 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $create_checkout_log_data, 'create_checkout() - $order_info' . $log_message, 'info' ); 89 90 $default_order_status = isset( $this->settings['splitit_default_order_status_auto_capture_on'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_on'] ) 91 ? $this->settings['splitit_default_order_status_auto_capture_on'] 92 : 'processing'; 93 29 94 $order_data = array( 30 'status' => apply_filters( 'woocommerce_default_order_status', 'processing' ), 95 'status' => apply_filters( 'woocommerce_default_order_status', $default_order_status ), 96 'customer_id' => $order_info->user_id, 97 ); 98 99 try { 100 $order = wc_create_order( $order_data ); 101 } catch ( Exception $e ) { 102 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $create_checkout_log_data, 'create_checkout() - wc_create_order error: ' . $e->getMessage(), 'error' ); 103 } 104 $order = $this->add_product_to_order( $cart_info, $order ); 105 $order = $this->add_address_to_order( $user_data, $order ); 106 107 if ( $order_info->shipping_method_id ) { 108 $order->add_shipping( $this->get_shipping_to_order( $order_info ) ); 109 } 110 111 if ( $order_info->coupon_code && $order_info->coupon_amount ) { 112 $order = $this->add_discount_to_order( $cart_info, $order ); 113 } 114 115 $order->set_payment_method( $user_data['payment_method'] ); 116 117 if ( is_wp_error( $order->get_id() ) ) { 118 $message = $order->get_id()->get_error_message(); 119 $data = array( 120 'user_id' => get_current_user_id(), 121 'method' => 'create_checkout() Checkout', 122 ); 123 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $data, 'create_checkout() - error: ' . $message, 'error' ); 124 throw new Exception( esc_html( $message ) ); 125 } 126 $order->calculate_totals(); 127 128 // Clean-up cart if order created. 129 $wc_session_handler = new WC_Session_Handler(); 130 $wc_session_handler->delete_session( $order_info->session_id ); 131 132 $order->update_meta_data( '_transaction_id', $order_info->ipn ); 133 if ( $this->settings['splitit_auto_capture'] ) { 134 $order->set_date_paid( current_time( 'mysql' ) ); 135 } 136 $order->save(); 137 138 return $order->get_id(); 139 } 140 141 public function create_checkout_old( $order_info ) { 142 $user_data = json_decode( $order_info->user_data, true ); 143 $cart_info = json_decode( $order_info->wc_cart, true ); 144 145 $default_order_status = isset( $this->settings['splitit_default_order_status_auto_capture_on'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_on'] ) 146 ? $this->settings['splitit_default_order_status_auto_capture_on'] 147 : 'processing'; 148 149 $order_data = array( 150 'status' => apply_filters( 'woocommerce_default_order_status', $default_order_status ), 31 151 'customer_id' => $order_info->user_id, 32 152 ); -
splitit-installment-payments/trunk/classes/class-splitit-flexfields-payment-plugin-settings.php
r3243228 r3278936 90 90 ), 91 91 'splitit_refund_strategy' => array( 92 'title' => __( 'Refund Strategy', 'splitit-installment-payments' ), 92 'title' => __( 'Refund Strategy', 'splitit-installment-payments' ), 93 'description' => __( 'Choose order refund strategy', 'splitit-installment-payments' ), 94 'type' => 'select', 95 'class' => 'wc-enhanced-select', 96 'css' => 'width: 305px; margin-bottom: 1px;', 97 'default' => '', 98 'desc_tip' => false, 99 'options' => self::refund_strategy_selection(), 100 ), 101 'splitit_default_order_status_title' => __( 'Default order status', 'splitit-installment-payments' ), 102 'splitit_default_order_status_auto_capture_on' => array( 103 'title' => __( 'Auto-Capture is ON', 'splitit-installment-payments' ), 93 104 'type' => 'select', 94 105 'class' => 'wc-enhanced-select', 95 'css' => 'width: 420px; margin-bottom: 1px;',106 'css' => 'width: 305px; margin-top: 0; margin-bottom: 1px;', 96 107 'default' => '', 97 108 'desc_tip' => false, 98 'options' => self::refund_strategy_selection(), 109 'options' => self::available_order_statuses_selection(), 110 ), 111 'splitit_default_order_status_auto_capture_off' => array( 112 'title' => __( 'Auto-Capture is OFF', 'splitit-installment-payments' ), 113 'type' => 'select', 114 'class' => 'wc-enhanced-select', 115 'css' => 'width: 305px; margin-top: 0; margin-bottom: 1px;', 116 'default' => '', 117 'desc_tip' => false, 118 'options' => self::available_order_statuses_selection(), 99 119 ), 100 120 'splitit_inst_conf' => self::get_new_installment_fields( $settings ), … … 139 159 'label' => __( 'Enable Visa', 'splitit-installment-payments' ), 140 160 'default' => 'no', 161 ), 162 'default_installments_number' => array( 163 'title' => __( 'Set the default number of payments to display in your On-Site Messages', 'splitit-installment-payments' ), 164 'type' => 'input', 165 'class' => 'default-installments', 166 'label' => __( 'Set the default number of payments to display in your On-Site Messages', 'splitit-installment-payments' ), 167 'default' => 4, 141 168 ), 142 169 'pages' => array( … … 620 647 621 648 /** 622 * Return allowed se ctions for Refund Strategy649 * Return allowed selections for Refund Strategy 623 650 * 624 651 * @return array … … 637 664 638 665 /** 666 * Return allowed selections for Order Statuses 667 * 668 * @return array 669 */ 670 private static function available_order_statuses_selection() { 671 $statuses = wc_get_order_statuses(); 672 $clean_statuses = array(); 673 674 foreach ( $statuses as $key => $label ) { 675 $clean_key = str_replace( 'wc-', '', $key ); 676 $clean_statuses[ $clean_key ] = $label; 677 } 678 679 return $clean_statuses; 680 } 681 682 /** 639 683 * Return count of Installments ranges 640 684 * -
splitit-installment-payments/trunk/classes/traits/splitit-flexfields-payment-plugin-upstream-messaging-trait.php
r3237941 r3278936 36 36 lang='<?php echo esc_attr( str_replace( '_', '-', get_locale() ) ); ?>' 37 37 currency='<?php echo esc_attr( get_woocommerce_currency() ); ?>' 38 default-installments= "4"38 default-installments='<?php echo $this->settings['default_installments_number'] ? esc_attr( $this->settings['default_installments_number'] ) : 4; ?>' 39 39 ></script> 40 40 <?php … … 195 195 'template_redirect', 196 196 function () use ( $page_config, $um_type, $is_visa ) { 197 $this->shop_page_with_custom_selectors( $page_config[ $um_type ], $um_type, $is_visa );197 $this->shop_page_with_custom_selectors( $page_config[ $um_type ], $um_type, $is_visa, $this->settings ); 198 198 } 199 199 ); … … 212 212 * Method for output banner on shop page with custom selectors 213 213 */ 214 public function shop_page_with_custom_selectors( $page_config, $um_type, $is_visa ) {214 public function shop_page_with_custom_selectors( $page_config, $um_type, $is_visa, $splitit_settings ) { 215 215 if ( is_shop() || is_product_category() || is_tax( 'product_brand' ) ) { 216 216 … … 227 227 let umType = '<?php echo esc_js( $um_type ); ?>'; 228 228 let isVisa = '<?php echo esc_js( $is_visa ); ?>'; 229 let settings = <?php echo json_encode( $splitit_settings ?? array() ); ?>; 229 230 230 231 console.log('UM - umOptions:', umOptions, umType); 231 232 console.log('UM - isVisa:', isVisa); 233 console.log('UM - settings:', settings); 232 234 233 235 if (umOptions && Object.keys(umOptions).length > 0) { … … 250 252 const currency = match[2]; 251 253 252 let installment = getInstallmentByPrice(price );254 let installment = getInstallmentByPrice(price, umOptions, settings); 253 255 let um = generateUM(umType, umOptions, price, installment); 254 256 … … 288 290 const currency = match[2]; 289 291 290 let installment = getInstallmentByPrice(price );292 let installment = getInstallmentByPrice(price, umOptions, settings); 291 293 let um = generateUM(umType, umOptions, price, installment); 292 294 … … 311 313 } 312 314 313 function getInstallmentByPrice(price ) {315 function getInstallmentByPrice(price, pageConfig, settings) { 314 316 let installmentsSettings = <?php echo json_encode( $installments_settings ); ?>; 315 317 316 318 price = parseFloat(price.replace(/[^\d.]/g, '')); 317 319 if (isNaN(price)) return false; 320 321 let customInstallments = checkCustomInstallmentsSettings( pageConfig, settings ); 322 if (customInstallments !== null) { 323 return customInstallments; 324 } 318 325 319 326 for (let i = 0; i < installmentsSettings.ic_from.length; i++) { … … 328 335 } 329 336 } 330 return 3; // Default value 337 return 4; // Default value 338 } 339 340 function checkCustomInstallmentsSettings(pageConfig, splititSettings) { 341 let umType = ''; 342 343 if (pageConfig.strip && pageConfig.strip.enable_strip == 1) { 344 umType = 'strip'; 345 } else if (pageConfig.banner && pageConfig.banner.enable_banner == 1) { 346 umType = 'banner'; 347 } else if (pageConfig.logo && pageConfig.logo.enable_logo == 1) { 348 umType = 'logo'; 349 } else if (pageConfig.one_liner && pageConfig.one_liner.enable_one_liner == 1) { 350 umType = 'one_liner'; 351 } 352 353 let customInstallments = pageConfig[umType] && pageConfig[umType].installments && 354 pageConfig[umType].installments.trim() !== '' 355 ? parseInt( pageConfig[umType].installments, 10 ) 356 : null; 357 358 let defaultInstallments = splititSettings.default_installments_number && 359 splititSettings.default_installments_number.trim() !== '' 360 ? parseInt( splititSettings.default_installments_number, 10 ) 361 : null; 362 363 return customInstallments !== null ? customInstallments : defaultInstallments; 331 364 } 332 365 … … 377 410 global $product; 378 411 379 if ( ( is_shop() || is_product_category() || is_tax( 'product_brand' ) ) && is_object( $product ) && ! $product->is_type( 'variable' ) ) {412 if ( ( is_shop() || is_product_category() || is_tax( 'product_brand' ) ) && is_object( $product ) && method_exists( $product, 'is_type' ) && ! $product->is_type( 'variable' ) ) { 380 413 if ( 1 == $this->settings['splitit_upstream_messaging_position_shop_page']['one_liner']['enable_one_liner'] || 1 == $this->settings['splitit_upstream_messaging_position_shop_page']['logo']['enable_logo'] ) { 381 414 $price .= $this->um_on_shop_page(); … … 396 429 global $product; 397 430 398 if ( ( is_shop() || is_product_category() || is_tax( 'product_brand' ) ) && is_object( $product ) && $product->is_type( 'variable' ) ) {431 if ( ( is_shop() || is_product_category() || is_tax( 'product_brand' ) ) && is_object( $product ) && method_exists( $product, 'is_type' ) && $product->is_type( 'variable' ) ) { 399 432 if ( 1 == $this->settings['splitit_upstream_messaging_position_shop_page']['one_liner']['enable_one_liner'] || 1 == $this->settings['splitit_upstream_messaging_position_shop_page']['logo']['enable_logo'] ) { 400 433 $price .= $this->um_on_shop_page(); … … 420 453 421 454 $price = custom_wc_price_value( $price ); 422 $installments = $this->get_installment_by_price( $price );455 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_shop_page'] ); 423 456 $total_in_range = $this->check_if_sum_in_range( $price ); 424 457 $is_allowed_um = $this->is_allowed_um_per_products_for_product_page( $product->get_id() ); … … 762 795 if ( $this->is_enabled() && $this->is_upstream_messaging_selection( 'product' ) && is_product() ) { 763 796 $product = wc_get_product(); 764 $price = wc_get_price_to_display( $product, array( 'array' => $product->get_price() ) ); 797 798 if ( $product instanceof WC_Product_Bundle ) { 799 $price = $product->get_bundle_price( 'min' ); 800 } else { 801 $price = wc_get_price_to_display( $product, array( 'array' => $product->get_price() ) ); 802 } 803 765 804 if ( 'variable' === $product->get_type() ) { 766 805 $prices = $product->get_variation_prices( true ); … … 771 810 772 811 $price = custom_wc_price_value( $price ); 773 $installments = $this->get_installment_by_price( $price );812 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_product_page'] ); 774 813 775 814 $total_in_range = $this->check_if_sum_in_range( $price ); … … 921 960 global $product; 922 961 923 if ( is_product() && is_object( $product ) && $product->is_type( 'variable' ) ) {962 if ( is_product() && is_object( $product ) && method_exists( $product, 'is_type' ) && $product->is_type( 'variable' ) ) { 924 963 try { 925 964 $is_current_product = ( $product->get_slug() === sanitize_post( $GLOBALS['wp_the_query']->get_queried_object() )->post_name ); … … 951 990 global $product; 952 991 953 if ( is_product() && is_object( $product ) && ! $product->is_type( 'variable' ) ) { 954 try { 955 $is_current_product = ( $product->get_slug() === sanitize_post( $GLOBALS['wp_the_query']->get_queried_object() )->post_name ); 956 } catch ( \Exception $e ) { 957 $is_current_product = ! $woocommerce_loop['name']; 958 } 959 960 if ( $is_current_product ) { 992 if ( is_product() && is_object( $product ) ) { 993 if ( ! $product instanceof WC_Bundled_Item ) { 994 if ( method_exists( $product, 'is_type' ) && ! $product->is_type( 'variable' ) ) { 995 try { 996 $is_current_product = ( $product->get_slug() === sanitize_post( $GLOBALS['wp_the_query']->get_queried_object() )->post_name ); 997 } catch ( \Exception $e ) { 998 $is_current_product = ! $woocommerce_loop['name']; 999 } 1000 1001 if ( $is_current_product ) { 1002 $custom_selector = $this->generate_um_with_custom_selector( $this->settings['splitit_upstream_messaging_position_product_page'], wp_json_encode( $this->product_page( true ) ) ); 1003 1004 if ( ! $custom_selector ) { 1005 $price .= $this->product_page( true ); 1006 } 1007 } 1008 } 1009 } else { 961 1010 $custom_selector = $this->generate_um_with_custom_selector( $this->settings['splitit_upstream_messaging_position_product_page'], wp_json_encode( $this->product_page( true ) ) ); 962 1011 … … 1062 1111 $message_block = ''; 1063 1112 $price = custom_wc_price_value( $this->get_cart_total() ); 1064 $installments = $this->get_installment_by_price( $price );1113 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_cart_page'] ); 1065 1114 1066 1115 $total_in_range = $this->check_if_total_in_range(); … … 1201 1250 if ( $this->is_upstream_messaging_selection( 'checkout' ) && is_checkout() ) { 1202 1251 $price = $this->get_current_order_total(); 1203 $installments = $this->get_installment_by_price( $price );1252 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_checkout_page'] ); 1204 1253 1205 1254 $total_in_range = $this->check_if_total_in_range(); … … 1365 1414 1366 1415 if ( ! empty( $price ) && 'choose an option' !== $price ) { 1367 $installments = $this->get_installment_by_price( $price );1416 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_product_page'] ); 1368 1417 } else { 1369 1418 $price = 0; … … 1397 1446 if ( $this->is_enabled() && $this->is_upstream_messaging_selection( 'checkout' ) ) { 1398 1447 $price = $this->get_current_order_total(); 1399 $installments = $this->get_installment_by_price( $price );1448 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_checkout_page'] ); 1400 1449 $show_um = $this->check_if_sum_in_range( $price ); 1401 1450 $is_allowed_um = $this->is_allowed_um_per_products_for_card_and_checkout_pages(); … … 1426 1475 if ( $this->is_enabled() && $this->is_upstream_messaging_selection( 'cart' ) ) { 1427 1476 $price = $this->get_cart_total(); 1428 $installments = $this->get_installment_by_price( $price );1477 $installments = $this->get_installment_by_price( $price, $this->settings['splitit_upstream_messaging_position_cart_page'] ); 1429 1478 } 1430 1479 … … 1447 1496 * @return mixed|string 1448 1497 */ 1449 public function get_installment_by_price( $price ) {1498 public function get_installment_by_price( $price, $page_config ) { 1450 1499 if ( $this->is_enabled() ) { 1451 1500 if ( isset( $this->settings['splitit_upstream_default_installments'] ) && ! empty( $this->settings['splitit_upstream_default_installments'] ) ) { 1452 1501 return (int) $this->settings['splitit_upstream_default_installments']; 1502 } 1503 1504 $custom_installments = self::check_custom_installments_settings( $page_config, $this->settings ); 1505 if ( $custom_installments ) { 1506 return $custom_installments; 1453 1507 } 1454 1508 … … 1469 1523 1470 1524 /** 1525 * Method for checking custom UM installments number 1526 */ 1527 private static function check_custom_installments_settings( $page_config, $splitit_settings ) { 1528 1529 $um_type = ''; 1530 1531 if ( $page_config['strip'] && $page_config['strip']['enable_strip'] ) { 1532 $um_type = 'strip'; 1533 } elseif ( $page_config['banner'] && $page_config['banner']['enable_banner'] ) { 1534 $um_type = 'banner'; 1535 } elseif ( $page_config['logo'] && $page_config['logo']['enable_logo'] ) { 1536 $um_type = 'logo'; 1537 } elseif ( $page_config['one_liner'] && $page_config['one_liner']['enable_one_liner'] ) { 1538 $um_type = 'one_liner'; 1539 } 1540 1541 $custom_installments = isset( $page_config[ $um_type ]['installments'] ) && ! empty( trim( $page_config[ $um_type ]['installments'] ) ) 1542 ? intval( $page_config[ $um_type ]['installments'] ) 1543 : null; 1544 1545 $default_installments = isset( $splitit_settings['default_installments_number'] ) && ! empty( trim( $splitit_settings['default_installments_number'] ) ) 1546 ? intval( $splitit_settings['default_installments_number'] ) 1547 : null; 1548 1549 return $custom_installments !== null ? $custom_installments : $default_installments; 1550 } 1551 1552 /** 1471 1553 * Method for getting array of installments by price 1472 1554 * -
splitit-installment-payments/trunk/cron/check-refund-status.php
r3243228 r3278936 9 9 require_once dirname( __DIR__ ) . '/classes/class-splitit-flexfields-payment-plugin-log.php'; 10 10 11 // daily cron job 11 // daily cron job. 12 12 if ( ! wp_next_scheduled( 'check_splitit_refund_status_daily' ) ) { 13 13 wp_schedule_event( time(), 'daily', 'check_splitit_refund_status_daily' ); … … 30 30 foreach ( $orders_waiting_refund as $item ) { 31 31 // info from DB. 32 $entity_id = $item->id;33 $ipn = $item->ipn;34 $order_id = $item->order_id;35 $splitit_refund_id = $item->refund_id;36 $refund_amount = $item->refund_amount;32 $entity_id = $item->id; 33 $ipn = $item->ipn; 34 $order_id = $item->order_id; 35 $splitit_refund_id = $item->refund_id; 36 $refund_amount = $item->refund_amount; 37 37 38 38 // info from Splitit. 39 $api = new SplitIt_FlexFields_Payment_Plugin_API( $settings_for_check_refund ); 40 $ipn_info = $api->get_ipn_info( $ipn ); 39 $api = new SplitIt_FlexFields_Payment_Plugin_API( $settings_for_check_refund ); 40 try { 41 $ipn_info = $api->get_ipn_info( $ipn ); 42 } catch ( \Exception $e ) { 43 SplitIt_FlexFields_Payment_Plugin_Log::update_refund_log( $entity_id, array( 'action_type' => 'done' ) ); 44 $order_with_failed_refund = wc_get_order( $order_id ); 45 if ( $order_with_failed_refund ) { 46 $order_with_failed_refund->add_order_note( 'Refund failed by Splitit. Installments Plan Number not found in Splitit Merchant Hub. For more details please contact the Splitit Support Team' ); 47 } 48 throw new Exception( 'Exception in check_splitit_refund_status_by_ipn_daily(): ' . esc_html( $e->getMessage() ) ); 49 } 41 50 42 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $log_data, 'check_splitit_refund_status_by_ipn_daily() - IPN info: ' . json_encode( $ipn_info), 'info' );51 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $log_data, 'check_splitit_refund_status_by_ipn_daily() - IPN info: ' . json_encode( $ipn_info ), 'info' ); 43 52 44 53 $ipn_status = $ipn_info->getStatus(); 45 54 46 55 $ipn_info_refunds = $ipn_info->getRefunds(); 47 $order = wc_get_order( $order_id );56 $order = wc_get_order( $order_id ); 48 57 49 58 if ( ! $order ) { 59 SplitIt_FlexFields_Payment_Plugin_Log::update_refund_log( $entity_id, array( 'action_type' => 'done' ) ); 50 60 throw new Exception( 'Refund cron job error. There is no order with ID = ' . $order_id . ' in platform. IPN = ' . $ipn . '' ); 51 61 } 52 62 53 $time_difference = time() - strtotime( $item->updated_at );63 $time_difference = time() - strtotime( $item->updated_at ); 54 64 $fourteen_days_in_seconds = 14 * 24 * 60 * 60; 55 65 … … 141 151 throw new Exception( 'Refund cron job error. Splitit made a refund for a different amount. Platform amount = ' . $refund_amount . ', and Splitit amount = ' . $splitit_refund_amount . '; Check this order in the Merchant Portal. IPN = ' . $ipn . '' ); 142 152 } 143 144 153 } 145 154 } elseif ( 'Failed' == $refund_status ) { … … 151 160 } elseif ( 'Pending' == $refund_status ) { 152 161 153 // checking whether it has been more than 14 days since the recording 162 // checking whether it has been more than 14 days since the recording. 154 163 if ( $time_difference > $fourteen_days_in_seconds ) { 155 164 SplitIt_FlexFields_Payment_Plugin_Log::update_refund_log( $entity_id, array( 'action_type' => 'done' ) ); … … 168 177 } catch ( Exception $e ) { 169 178 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $log_data, 'check_splitit_refund_status_by_ipn_daily() - error: ' . $e->getMessage(), 'error' ); 170 if ( 'my-wordpress-blog.local' != DOMAIN && 'localhost' != DOMAIN && '127.0.0.1' != DOMAIN ) { 171 send_slack_refund_notification( 'Check refunds cron job error: \n ' . $e->getMessage() . ' \n Domain: <' . URL . '|' . DOMAIN . '> \n Platform: Woocommerce' ); 179 $skip_domains = array( 180 'my-wordpress-blog.local', 181 'localhost', 182 '127.0.0.1', 183 ); 184 if ( ! in_array( DOMAIN, $skip_domains, true ) ) { 185 send_slack_refund_notification( 'Check refunds cron job error: \n ' . html_entity_decode( $e->getMessage() ) . ' \n Domain: <' . URL . '|' . DOMAIN . '> \n Platform: Woocommerce' ); 172 186 } 173 187 } -
splitit-installment-payments/trunk/readme.txt
r3243228 r3278936 3 3 Tags: ecommerce, e-commerce, checkout, payment, Splitit 4 4 Requires at least: 5.6 5 Tested up to: 6. 7.25 Tested up to: 6.8 6 6 Requires PHP: 7.0 7 7 WC requires at least: 6.0 8 WC tested up to: 9. 6.29 Stable tag: 4.2. 78 WC tested up to: 9.8.1 9 Stable tag: 4.2.8 10 10 License: GPLv3 11 11 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 79 79 80 80 == Changelog == 81 82 = 4.2.8 - 2025-04-09 = 83 Added the ability to configure the number of installments for On-Site Messaging 84 Added the ability to customize the desired order status after creation 85 Added compatibility with Phone Validator for WooCommerce plugin 86 Added compatibility with Checkout Field Editor for WooCommerce plugin 87 Code improvements and bug fixes 88 Tested compatibility with WordPress version 6.8 and WooCommerce version 9.8.1 81 89 82 90 = 4.2.7 - 2025-02-19 = -
splitit-installment-payments/trunk/splitIt-flexfields-payment-gateway.php
r3243228 r3278936 11 11 * Author URI: https://www.splitit.com/ 12 12 * License: GPLv3 13 * Version: 4.2. 713 * Version: 4.2.8 14 14 * Requires Plugins: woocommerce 15 15 * Requires at least: 5.6 16 * Tested up to: 6. 7.216 * Tested up to: 6.8 17 17 * WC requires at least: 6.0 18 * WC tested up to: 9. 6.218 * WC tested up to: 9.8.1 19 19 * Requires PHP: 7.0 20 20 */ … … 31 31 32 32 global $plugin_version; 33 $plugin_version = '4.2. 7';33 $plugin_version = '4.2.8'; 34 34 35 35 global $required_splitit_php_version; … … 84 84 define( 'URL', get_site_url() ); 85 85 define( 'DOMAIN', wp_parse_url( URL, PHP_URL_HOST ) ); 86 const SL ACK_KEY_1 = 'TGYNZCYCC';87 const SL ACK_KEY_2 = 'B03BBNA77DZ';88 const SL ACK_KEY_3 = 'Xw97npf5R1hHI8OLl615Tgwy';86 const SL_K_1 = 'TGYNZCYCC'; 87 const SL_K_2 = 'B03BBNA77DZ'; 88 const SL_K_3 = 'Xw97npf5R1hHI8OLl615Tgwy'; 89 89 90 90 const SL_T_1 = 'xoxb'; … … 188 188 */ 189 189 function send_slack_notification( $message ) { 190 $url = 'https://hooks.slack.com/services/' . SL ACK_KEY_1 . '/' . SLACK_KEY_2 . '/' . SLACK_KEY_3;190 $url = 'https://hooks.slack.com/services/' . SL_K_1 . '/' . SL_K_2 . '/' . SL_K_3; 191 191 192 192 $message = str_replace( '\n', "\n", $message ); … … 447 447 448 448 // @This action hook changed order status 449 add_action( 'woocommerce_checkout_order_processed', array( $this, 'woocommerce_payment_change_order_status' ), 10, 1 ); 449 if ( strpos( DOMAIN, 'crockettdoodles' ) !== false ) { 450 add_action( 'woocommerce_checkout_order_processed', array( $this, 'woocommerce_payment_change_order_status' ), 10, 1 ); 451 } else { 452 add_action( 'woocommerce_thankyou', array( $this, 'woocommerce_payment_change_order_status' ), 10, 1 ); 453 } 454 450 455 // @This action hook saves the settings 451 456 add_action( … … 628 633 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $data, 'process_payment() - Customer placed order with Splitit', 'info' ); 629 634 635 try { 636 if ( is_plugin_active( 'woocommerce-avatax/woocommerce-avatax.php' ) ) { 637 if ( $this->settings['splitit_auto_capture'] ) { 638 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $data, 'process_payment() - triggered $order->payment_complete()', 'info' ); 639 $order->payment_complete(); 640 } 641 } 642 } catch ( Exception $e ) { 643 SplitIt_FlexFields_Payment_Plugin_Log::save_log_info( $data, 'process_payment() trigger $order->payment_complete() Error: ' . $e->getMessage(), 'error' ); 644 } 645 630 646 return array( 631 647 'result' => 'success', … … 756 772 $order = wc_get_order( $order_id ); 757 773 if ( 'splitit' == $order->get_payment_method() ) { 758 $order->update_status( ! $this->settings['splitit_auto_capture'] ? 'pending' : 'processing' ); 774 if ( $this->settings['splitit_auto_capture'] ) { 775 $new_status = isset( $this->settings['splitit_default_order_status_auto_capture_on'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_on'] ) 776 ? $this->settings['splitit_default_order_status_auto_capture_on'] 777 : 'processing'; 778 } else { 779 $new_status = isset( $this->settings['splitit_default_order_status_auto_capture_off'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_off'] ) 780 ? $this->settings['splitit_default_order_status_auto_capture_off'] 781 : 'pending'; 782 } 783 $order->update_status( $new_status ); 759 784 } 760 785 } … … 2492 2517 if ( ! $this->settings['splitit_auto_capture'] ) { 2493 2518 if ( $api->start_installments( $splitit_info->installment_plan_number, $order_id ) ) { 2494 $order->update_status( 'processing' ); 2519 2520 $new_status = isset( $this->settings['splitit_default_order_status_auto_capture_on'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_on'] ) 2521 ? $this->settings['splitit_default_order_status_auto_capture_on'] 2522 : 'processing'; 2523 2524 $order->update_status( $new_status ); 2495 2525 2496 2526 return __( 'Start installments order to Splitit is success', 'splitit-installment-payments' ); … … 3272 3302 <div id="upstream_messaging_settings_section" class="setting-content-block mt-3 hide"> 3273 3303 3274 <div class="m b-3 d-flex">3275 <div class="mr-3 main-section-enabled-title">3276 <span class="setting -title">3304 <div class="main-section d-flex main-section-enabled-visa-main"> 3305 <div class="mr-3 description"> 3306 <span class="settings-3d-title"> 3277 3307 <?php echo wp_kses_post( $data['enabled_visa']['title'] ); ?> 3278 3308 </span> 3279 3309 </div> 3310 <div class="d-flex"> 3311 <div> 3312 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['enabled_visa']['title'] ); ?></span></legend> 3313 3314 <label class="main-section-switch"> 3315 <input 3316 <?php disabled( $data['disabled'], true ); ?> 3317 class="<?php echo esc_attr( $data['class'] ); ?>" 3318 type="checkbox" name="<?php echo esc_attr( $this->get_field_key( 'enabled_visa' ) ); ?>" 3319 id="<?php echo esc_attr( $this->get_field_key( 'enabled_visa' ) ); ?>" 3320 style="<?php echo esc_attr( $data['css'] ); ?>" 3321 value="1" 3322 <?php checked( $this->get_option( 'enabled_visa' ), 'yes' ); ?> 3323 <?php echo wp_kses_post( $this->get_custom_attribute_html( $data['enabled_visa'] ) ); // WPCS: XSS ok. ?> 3324 /> 3325 <span class="main-section-slider main-section-round"></span> 3326 </label> 3327 </div> 3328 <div id="main-section-enabled-visa-desc" class="ml-3 description main-section-enabled-description"> 3329 <?php echo 'yes' == $this->get_option( 'enabled_visa' ) ? '<span class="description-green">Enabled</span>' : 'Disabled'; ?> 3330 </div> 3331 </div> 3332 </div> 3333 3334 <div class="main-section d-flex main-default-installments-number-main"> 3335 <div class="mr-3 description"> 3336 <span class="settings-3d-title"> 3337 <?php echo wp_kses_post( $data['default_installments_number']['title'] ); ?> 3338 </span> 3339 </div> 3280 3340 <div> 3281 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['enabled_visa']['title'] ); ?></span></legend> 3282 3283 <label class="main-section-switch"> 3284 <input 3285 <?php disabled( $data['disabled'], true ); ?> 3286 class="<?php echo esc_attr( $data['class'] ); ?>" 3287 type="checkbox" name="<?php echo esc_attr( $this->get_field_key( 'enabled_visa' ) ); ?>" 3288 id="<?php echo esc_attr( $this->get_field_key( 'enabled_visa' ) ); ?>" 3289 style="<?php echo esc_attr( $data['css'] ); ?>" 3290 value="1" 3291 <?php checked( $this->get_option( 'enabled_visa' ), 'yes' ); ?> 3292 <?php echo wp_kses_post( $this->get_custom_attribute_html( $data['enabled_visa'] ) ); // WPCS: XSS ok. ?> 3293 /> 3294 <span class="main-section-slider main-section-round"></span> 3295 </label> 3296 </div> 3297 <div id="main-section-enabled-visa-desc" class="ml-3 description main-section-enabled-description"> 3298 <?php echo 'yes' == $this->get_option( 'enabled_visa' ) ? '<span class="description-green">Enabled</span>' : 'Disabled'; ?> 3341 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['default_installments_number']['title'] ); ?></span></legend> 3342 3343 <input 3344 class="input-text regular-input <?php echo esc_attr( $data['default_installments_number']['class'] ); ?>" 3345 type="number" 3346 max="12" 3347 min="1" 3348 name="<?php echo esc_attr( $this->get_field_key( 'default_installments_number' ) ); ?>" 3349 id="<?php echo esc_attr( $this->get_field_key( 'default_installments_number' ) ); ?>" 3350 value="<?php echo $this->get_option( 'default_installments_number' ) ? esc_html( $this->get_option( 'default_installments_number' ) ) : 4; ?>" 3351 /> 3352 <div class="splitit_error"></div> 3299 3353 </div> 3300 3354 </div> … … 3980 4034 </div> 3981 4035 4036 <div class="mt-3"> 4037 <p class="description">Installments</p> 4038 <p class="description"><span style="font-size: 14px;">Please specify the number of installments to split the amount.</span></p> 4039 <input 4040 class="input-text regular-input" 4041 type="number" 4042 max="12" 4043 min="1" 4044 name="<?php echo esc_attr( $this->get_field_key( $page_key ) ); ?>[logo][installments]" 4045 id="<?php echo esc_attr( $page['name'] ); ?>_logo_installments_number" 4046 value="<?php echo ! is_array( $page_config ) || ! isset( $page_config['logo']['installments'] ) || empty( $page_config['logo']['installments'] ) ? '' : esc_html( $page_config['logo']['installments'] ); ?>" 4047 placeholder="Number of installments." 4048 data-name="installments" 4049 > 4050 </div> 4051 3982 4052 <?php if ( 'shop' == $page['name'] ) : ?> 3983 4053 <div class="mt-3"> … … 4280 4350 <div class="setting-title mt-0"> 4281 4351 Text 4352 </div> 4353 4354 <div class="mt-3"> 4355 <p class="description">Installments</p> 4356 <p class="description"><span style="font-size: 14px;">Please specify the number of installments to split the amount.</span></p> 4357 <input 4358 class="input-text regular-input" 4359 type="number" 4360 max="12" 4361 min="1" 4362 name="<?php echo esc_attr( $this->get_field_key( $page_key ) ); ?>[one_liner][installments]" 4363 id="<?php echo esc_attr( $page['name'] ); ?>_one_liner_installments_number" 4364 value="<?php echo ! is_array( $page_config ) || ! isset( $page_config['one_liner']['installments'] ) || empty( $page_config['one_liner']['installments'] ) ? '' : esc_html( $page_config['one_liner']['installments'] ); ?>" 4365 placeholder="Number of installments." 4366 data-name="installments" 4367 > 4282 4368 </div> 4283 4369 … … 4647 4733 <!--start splitit_refund_strategy--> 4648 4734 <div class="setting-wrap" style="padding-bottom: 0"> 4649 <div class="main-section-environment mt-3" 4650 <!--style="--><?php /*echo esc_attr( $data['splitit_refund_strategy']['css'] ); */ ?>" 4651 > 4735 <div class="main-section-environment mt-3"> 4652 4736 <div class="setting-title"> 4653 4737 <?php echo wp_kses_post( $data['splitit_refund_strategy']['title'] ); ?> 4654 4738 </div> 4655 <div> 4656 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['splitit_refund_strategy']['title'] ); ?></span></legend> 4657 4658 <?php echo wp_kses_post( $this->get_description_html( $data['splitit_refund_strategy'] ) ); // WPCS: XSS ok. ?> 4659 4660 <select 4661 class="env-select select <?php echo esc_attr( $data['class'] ); ?>" 4662 name="<?php echo esc_attr( $this->get_field_key( 'splitit_refund_strategy' ) ); ?>" 4663 id="<?php echo esc_attr( $this->get_field_key( 'splitit_refund_strategy' ) ); ?>" 4664 style="<?php echo esc_attr( $data['splitit_refund_strategy']['css'] ); ?>" 4665 <?php disabled( $data['disabled'], true ); ?> 4666 <?php echo wp_kses_post( $this->get_custom_attribute_html( $data['splitit_refund_strategy'] ) ); // WPCS: XSS ok. ?> 4667 > 4668 <?php foreach ( (array) $data['splitit_refund_strategy']['options'] as $option_key => $option_value ) : ?> 4669 <?php if ( is_array( $option_value ) ) : ?> 4670 <optgroup label="<?php echo esc_attr( $option_key ); ?>"> 4671 <?php foreach ( $option_value as $option_key_inner => $option_value_inner ) : ?> 4672 <option 4673 value="<?php echo esc_attr( $option_key_inner ); ?>" 4674 <?php selected( (string) $option_key_inner, esc_attr( $this->get_option( 'splitit_refund_strategy' ) ) ); ?> 4675 > 4676 <?php echo esc_html( $option_value_inner ); ?> 4677 </option> 4678 <?php endforeach; ?> 4679 </optgroup> 4680 <?php else : ?> 4681 <option 4682 value="<?php echo esc_attr( $option_key ); ?>" 4683 <?php selected( (string) $option_key, esc_attr( $this->get_option( 'splitit_refund_strategy' ) ) ); ?> 4684 > 4685 <?php echo esc_html( $option_value ); ?> 4686 </option> 4687 <?php endif; ?> 4688 <?php endforeach; ?> 4689 </select> 4739 <div class="d-flex mt-3" style="align-items: center"> 4740 <div class="mr-3 description" style="width: 285px;"> 4741 <span class="settings-3d-title"><?php echo wp_kses_post( $data['splitit_refund_strategy']['description'] ); ?></span> 4742 </div> 4743 <div> 4744 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['splitit_refund_strategy']['description'] ); ?></span></legend> 4745 4746 <select 4747 class="env-select select <?php echo esc_attr( $data['class'] ); ?>" 4748 name="<?php echo esc_attr( $this->get_field_key( 'splitit_refund_strategy' ) ); ?>" 4749 id="<?php echo esc_attr( $this->get_field_key( 'splitit_refund_strategy' ) ); ?>" 4750 style="<?php echo esc_attr( $data['splitit_refund_strategy']['css'] ); ?>" 4751 <?php disabled( $data['disabled'], true ); ?> 4752 <?php echo wp_kses_post( $this->get_custom_attribute_html( $data['splitit_refund_strategy'] ) ); // WPCS: XSS ok. ?> 4753 > 4754 <?php foreach ( (array) $data['splitit_refund_strategy']['options'] as $option_key => $option_value ) : ?> 4755 <?php if ( is_array( $option_value ) ) : ?> 4756 <optgroup label="<?php echo esc_attr( $option_key ); ?>"> 4757 <?php foreach ( $option_value as $option_key_inner => $option_value_inner ) : ?> 4758 <option 4759 value="<?php echo esc_attr( $option_key_inner ); ?>" 4760 <?php selected( (string) $option_key_inner, esc_attr( $this->get_option( 'splitit_refund_strategy' ) ) ); ?> 4761 > 4762 <?php echo esc_html( $option_value_inner ); ?> 4763 </option> 4764 <?php endforeach; ?> 4765 </optgroup> 4766 <?php else : ?> 4767 <option 4768 value="<?php echo esc_attr( $option_key ); ?>" 4769 <?php selected( (string) $option_key, esc_attr( $this->get_option( 'splitit_refund_strategy' ) ) ); ?> 4770 > 4771 <?php echo esc_html( $option_value ); ?> 4772 </option> 4773 <?php endif; ?> 4774 <?php endforeach; ?> 4775 </select> 4776 </div> 4690 4777 </div> 4691 4778 </div> 4692 4779 </div> 4693 4780 <!--end splitit_refund_strategy--> 4781 4782 <!--start splitit_default_order_status--> 4783 <div class="setting-wrap" style="padding-bottom: 0"> 4784 <div class="main-section-environment mt-3"> 4785 <div class="setting-title"> 4786 <?php echo wp_kses_post( $data['splitit_default_order_status_title'] ); ?> 4787 </div> 4788 <div class="d-flex mt-3" style="align-items: center"> 4789 <div class="mr-3 description" style="width: 285px;"> 4790 <span class="settings-3d-title"><?php echo wp_kses_post( $data['splitit_default_order_status_auto_capture_on']['title'] ); ?></span> 4791 </div> 4792 <div> 4793 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['splitit_default_order_status_auto_capture_on']['title'] ); ?></span></legend> 4794 4795 <?php 4796 $saved_auto_capture_on_status = $this->get_option( 'splitit_default_order_status_auto_capture_on' ); 4797 4798 if ( empty( $saved_auto_capture_on_status ) || ! array_key_exists( $saved_auto_capture_on_status, $data['splitit_default_order_status_auto_capture_on']['options'] ) ) { 4799 $saved_auto_capture_on_status = 'processing'; 4800 } 4801 ?> 4802 4803 <select 4804 class="env-select select <?php echo esc_attr( $data['class'] ); ?>" 4805 name="<?php echo esc_attr( $this->get_field_key( 'splitit_default_order_status_auto_capture_on' ) ); ?>" 4806 id="<?php echo esc_attr( $this->get_field_key( 'splitit_default_order_status_auto_capture_on' ) ); ?>" 4807 style="<?php echo esc_attr( $data['splitit_default_order_status_auto_capture_on']['css'] ); ?>" 4808 <?php disabled( $data['disabled'], true ); ?> 4809 <?php echo wp_kses_post( $this->get_custom_attribute_html( $data['splitit_default_order_status_auto_capture_on'] ) ); // WPCS: XSS ok. ?> 4810 > 4811 <?php foreach ( (array) $data['splitit_default_order_status_auto_capture_on']['options'] as $option_key => $option_value ) : ?> 4812 <?php if ( is_array( $option_value ) ) : ?> 4813 <optgroup label="<?php echo esc_attr( $option_key ); ?>"> 4814 <?php foreach ( $option_value as $option_key_inner => $option_value_inner ) : ?> 4815 <option 4816 value="<?php echo esc_attr( $option_key_inner ); ?>" 4817 <?php selected( (string) $option_key_inner, esc_attr( $saved_auto_capture_on_status ) ); ?> 4818 > 4819 <?php echo esc_html( $option_value_inner ); ?> 4820 </option> 4821 <?php endforeach; ?> 4822 </optgroup> 4823 <?php else : ?> 4824 <option 4825 value="<?php echo esc_attr( $option_key ); ?>" 4826 <?php selected( (string) $option_key, esc_attr( $saved_auto_capture_on_status ) ); ?> 4827 > 4828 <?php echo esc_html( $option_value ); ?> 4829 </option> 4830 <?php endif; ?> 4831 <?php endforeach; ?> 4832 </select> 4833 </div> 4834 </div> 4835 <div class="d-flex mt-3" style="align-items: center"> 4836 <div class="mr-3 description" style="width: 285px;"> 4837 <span class="settings-3d-title"><?php echo wp_kses_post( $data['splitit_default_order_status_auto_capture_off']['title'] ); ?></span> 4838 </div> 4839 <div> 4840 <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['splitit_default_order_status_auto_capture_off']['title'] ); ?></span></legend> 4841 4842 <?php 4843 $saved_auto_capture_off_status = $this->get_option( 'splitit_default_order_status_auto_capture_off' ); 4844 4845 if ( empty( $saved_auto_capture_off_status ) || ! array_key_exists( $saved_auto_capture_off_status, $data['splitit_default_order_status_auto_capture_on']['options'] ) ) { 4846 $saved_auto_capture_off_status = 'pending'; 4847 } 4848 ?> 4849 4850 <select 4851 class="env-select select <?php echo esc_attr( $data['class'] ); ?>" 4852 name="<?php echo esc_attr( $this->get_field_key( 'splitit_default_order_status_auto_capture_off' ) ); ?>" 4853 id="<?php echo esc_attr( $this->get_field_key( 'splitit_default_order_status_auto_capture_off' ) ); ?>" 4854 style="<?php echo esc_attr( $data['splitit_default_order_status_auto_capture_off']['css'] ); ?>" 4855 <?php disabled( $data['disabled'], true ); ?> 4856 <?php echo wp_kses_post( $this->get_custom_attribute_html( $data['splitit_default_order_status_auto_capture_off'] ) ); // WPCS: XSS ok. ?> 4857 > 4858 <?php foreach ( (array) $data['splitit_default_order_status_auto_capture_off']['options'] as $option_key => $option_value ) : ?> 4859 <?php if ( is_array( $option_value ) ) : ?> 4860 <optgroup label="<?php echo esc_attr( $option_key ); ?>"> 4861 <?php foreach ( $option_value as $option_key_inner => $option_value_inner ) : ?> 4862 <option 4863 value="<?php echo esc_attr( $option_key_inner ); ?>" 4864 <?php selected( (string) $option_key_inner, esc_attr( $saved_auto_capture_off_status ) ); ?> 4865 > 4866 <?php echo esc_html( $option_value_inner ); ?> 4867 </option> 4868 <?php endforeach; ?> 4869 </optgroup> 4870 <?php else : ?> 4871 <option 4872 value="<?php echo esc_attr( $option_key ); ?>" 4873 <?php selected( (string) $option_key, esc_attr( $saved_auto_capture_off_status ) ); ?> 4874 > 4875 <?php echo esc_html( $option_value ); ?> 4876 </option> 4877 <?php endif; ?> 4878 <?php endforeach; ?> 4879 </select> 4880 </div> 4881 </div> 4882 </div> 4883 </div> 4884 <!--end splitit_default_order_status--> 4694 4885 4695 4886 <!--start splitit_inst_conf--> … … 5170 5361 $this->settings['splitit_environment'] = $this->get_field_value( 'splitit_environment', $field['splitit_environment'], $post_data ); 5171 5362 } elseif ( 'Payment_Method_Settings_section' === $key ) { 5172 $this->settings['splitit_settings_3d'] = $this->get_field_value( 'splitit_settings_3d', $field['splitit_settings_3d'], $post_data ); 5173 $this->settings['splitit_auto_capture'] = $this->get_field_value( 'splitit_auto_capture', $field['splitit_auto_capture'], $post_data ); 5174 $this->settings['splitit_refund_strategy'] = $this->get_field_value( 'splitit_refund_strategy', $field['splitit_refund_strategy'], $post_data ); 5175 $this->settings['splitit_upstream_default_installments'] = $this->get_field_value( 'splitit_upstream_default_installments', $field['splitit_upstream_default_installments'], $post_data ); 5363 $this->settings['splitit_settings_3d'] = $this->get_field_value( 'splitit_settings_3d', $field['splitit_settings_3d'], $post_data ); 5364 $this->settings['splitit_auto_capture'] = $this->get_field_value( 'splitit_auto_capture', $field['splitit_auto_capture'], $post_data ); 5365 $this->settings['splitit_refund_strategy'] = $this->get_field_value( 'splitit_refund_strategy', $field['splitit_refund_strategy'], $post_data ); 5366 $this->settings['splitit_default_order_status_auto_capture_on'] = $this->get_field_value( 'splitit_default_order_status_auto_capture_on', $field['splitit_default_order_status_auto_capture_on'], $post_data ); 5367 $this->settings['splitit_default_order_status_auto_capture_off'] = $this->get_field_value( 'splitit_default_order_status_auto_capture_off', $field['splitit_default_order_status_auto_capture_off'], $post_data ); 5368 $this->settings['splitit_upstream_default_installments'] = $this->get_field_value( 'splitit_upstream_default_installments', $field['splitit_upstream_default_installments'], $post_data ); 5176 5369 5177 5370 if ( isset( $post_data['woocommerce_splitit_ic_from'] ) && isset( $post_data['woocommerce_splitit_ic_to'] ) && isset( $post_data['woocommerce_splitit_ic_installment'] ) ) { … … 5201 5394 $this->settings['splitit_upstream_messaging_selection'] = $this->get_field_value( 'splitit_upstream_messaging_selection', $field['splitit_upstream_messaging_selection'], $post_data ); 5202 5395 $this->settings['enabled_visa'] = $this->get_field_value( 'enabled_visa', $field['enabled_visa'], $post_data ); 5396 $this->settings['default_installments_number'] = $this->get_field_value( 'default_installments_number', $field['default_installments_number'], $post_data ); 5203 5397 5204 5398 foreach ( $field['pages'] as $page_key => $page ) { … … 5497 5691 5498 5692 if ( $verify_data->getIsAuthorized() ) { 5499 $checkout = new SplitIt_FlexFields_Payment_Plugin_Checkout( );5693 $checkout = new SplitIt_FlexFields_Payment_Plugin_Checkout( $this->settings ); 5500 5694 $order_id = $checkout->create_checkout( $order_info ); 5501 5695 $ipn_info = $api->get_ipn_info( $ipn ); … … 5504 5698 5505 5699 if ( 'splitit' == $order->get_payment_method() ) { 5506 $order->update_status( $this->settings['splitit_auto_capture'] ? 'processing' : 'pending' ); 5700 if ( $this->settings['splitit_auto_capture'] ) { 5701 $new_status = isset( $this->settings['splitit_default_order_status_auto_capture_on'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_on'] ) 5702 ? $this->settings['splitit_default_order_status_auto_capture_on'] 5703 : 'processing'; 5704 } else { 5705 $new_status = isset( $this->settings['splitit_default_order_status_auto_capture_off'] ) && ! empty( $this->settings['splitit_default_order_status_auto_capture_off'] ) 5706 ? $this->settings['splitit_default_order_status_auto_capture_off'] 5707 : 'pending'; 5708 } 5709 $order->update_status( $new_status ); 5507 5710 } 5508 5711 … … 5763 5966 case 'billing_phone': 5764 5967 case 'shipping_phone': 5765 if ( isset( $wc_fields[ $key ] ['required'] ) && $wc_fields[ $key ]['required'] && ! WC_Validation::is_phone( $value ) ) {5968 if ( isset( $wc_fields[ $key ] ) && isset( $wc_fields[ $key ]['required'] ) && $wc_fields[ $key ]['required'] && ! WC_Validation::is_phone( $value ) ) { 5766 5969 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is not a valid phone number.', 'splitit-installment-payments' ) . '</li>'; 5767 5970 } 5768 if ( isset( $wc_fields[ $key ] ['required'] ) && $wc_fields[ $key ]['required'] && strlen( $value ) < 5 || strlen( $value ) > 14) {5769 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'should be greater than 5 and less than 14digits', 'splitit-installment-payments' ) . '</li>';5971 if ( isset( $wc_fields[ $key ] ) && isset( $wc_fields[ $key ]['required'] ) && $wc_fields[ $key ]['required'] && ( strlen( $value ) < 5 || strlen( $value ) > 20 ) ) { 5972 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'should be greater than 5 and less than 20 digits', 'splitit-installment-payments' ) . '</li>'; 5770 5973 } 5771 5974 break; … … 5815 6018 } 5816 6019 break; 6020 6021 // Compatibility with Checkout Field Editor for WooCommerce plugin. 6022 default: 6023 if ( isset( $wc_fields[ $key ] ) ) { 6024 6025 if ( isset( $wc_fields[ $key ]['required'] ) && $wc_fields[ $key ]['required'] && empty( $value ) ) { 6026 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is required.', 'splitit-installment-payments' ) . '</li>'; 6027 } 6028 6029 if ( isset( $wc_fields[ $key ]['validate'] ) && is_array( $wc_fields[ $key ]['validate'] ) ) { 6030 foreach ( $wc_fields[ $key ]['validate'] as $rule ) { 6031 switch ( $rule ) { 6032 case 'email': 6033 if ( ! is_email( $value ) ) { 6034 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is not a valid email.', 'splitit-installment-payments' ) . '</li>'; 6035 } 6036 break; 6037 6038 case 'phone': 6039 if ( ! WC_Validation::is_phone( $value ) ) { 6040 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is not a valid phone number.', 'splitit-installment-payments' ) . '</li>'; 6041 } 6042 break; 6043 6044 case 'number': 6045 if ( ! is_numeric( $value ) ) { 6046 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'must be a number.', 'splitit-installment-payments' ) . '</li>'; 6047 } 6048 break; 6049 6050 case 'postcode': 6051 if ( ! WC_Validation::is_postcode( $value, $all_fields['billing_country'] ) || empty( $value ) ) { 6052 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is not a valid postcode.', 'splitit-installment-payments' ) . '</li>'; 6053 } 6054 break; 6055 6056 case 'state': 6057 $valid_states = WC()->countries->get_states( WC()->customer->get_billing_country() ); 6058 if ( ! empty( $valid_states ) && is_array( $valid_states ) ) { 6059 if ( empty( $value ) || ! array_key_exists( $value, $valid_states ) ) { 6060 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is not valid. Please enter one of the following:', 'splitit-installment-payments' ) . ' ' . implode( ', ', $valid_states ) . '</li>'; 6061 } 6062 } 6063 break; 6064 6065 case 'url': 6066 if ( ! filter_var( $value, FILTER_VALIDATE_URL ) ) { 6067 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . __( 'is not a valid URL.', 'splitit-installment-payments' ) . '</li>'; 6068 } 6069 break; 6070 } 6071 } 6072 } 6073 6074 if ( isset( $wc_fields[ $key ]['maxlength'] ) && strlen( $value ) > $wc_fields[ $key ]['maxlength'] ) { 6075 /* translators: %d is the maximum allowed number of characters */ 6076 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . sprintf( __( 'should not exceed %d characters.', 'splitit-installment-payments' ), $wc_fields[ $key ]['maxlength'] ) . '</li>'; 6077 } 6078 6079 if ( isset( $wc_fields[ $key ]['minlength'] ) && strlen( $value ) < $wc_fields[ $key ]['minlength'] ) { 6080 /* translators: %d is the minimum allowed number of characters */ 6081 $errors[] = '<li><strong>' . $wc_fields[ $key ]['label'] . '</strong> ' . sprintf( __( 'should be at least %d characters long.', 'splitit-installment-payments' ), $wc_fields[ $key ]['minlength'] ) . '</li>'; 6082 } 6083 } 5817 6084 } 5818 6085 }
Note: See TracChangeset
for help on using the changeset viewer.